AWS EC2でNemoClawを動かす全体像

AWS EC2はNVIDIAが公式に言及しているNemoClaw対応クラウドプラットフォームの一つです。GPUインスタンスファミリーの豊富なラインアップにより、小規模なPoC環境から大規模な本番サービスまで幅広い構成に対応できます。

本ガイドは、AWSアカウントを保有している状態を前提に、EC2 GPUインスタンスの選定・AMI設定・セキュリティグループ・EFSマウント・Auto Scalingグループ・CloudWatch監視連携まで、本番運用を想定した構築手順を網羅します。

NemoClawはNVIDIA GTC 2026で発表された早期アルファ版です。本ガイドの手順はアルファ版公開情報に基づいています。GA(一般提供)版ではインストール手順・設定項目が変更になる可能性があります。最新情報はNVIDIA公式リポジトリをご確認ください。

NemoClawの動作要件

AWS EC2でNemoClawを動作させるための最低要件は以下の通りです。

要件項目最低要件推奨
GPUNVIDIA GPU(Volta世代以降)Ampere(A100)以降
CUDAバージョンCUDA 12.4以上CUDA 12.6以上
VRAM推論プロファイルによる(最低16GB)80GB以上(フル精度モデル用)
OSUbuntu 20.04 LTS以上Ubuntu 22.04 LTS
DockerDocker Engine 24.0以上Docker Engine 26.0以上
NVIDIA Container Toolkit1.14以上最新版
ストレージ(モデル用)100GB以上500GB以上(gp3)

AWS構成の全体図

本番運用を想定したAWS構成の概要です。

┌─────────────────────────────────────────────────────────────────┐
│ AWS VPC (10.0.0.0/16)                                            │
│                                                                   │
│  ┌─────────────────┐   ┌──────────────────────────────────────┐  │
│  │ Public Subnet   │   │ Private Subnet                        │  │
│  │                 │   │                                       │  │
│  │  ┌───────────┐  │   │  ┌──────────────────────────────┐    │  │
│  │  │    ALB    │──┼───┼─▶│ Auto Scaling Group           │    │  │
│  │  └───────────┘  │   │  │  EC2 GPU Instance             │    │  │
│  │                 │   │  │  (NemoClaw + NIM Runtime)     │    │  │
│  │  ┌───────────┐  │   │  │  ┌────────────────────────┐  │    │  │
│  │  │ NAT GW    │  │   │  │  │ OpenShell Sandbox       │  │    │  │
│  │  └─────┬─────┘  │   │  │  └────────────────────────┘  │    │  │
│  └─────────┼───────┘   │  └──────────────────────────────┘    │  │
│            │            │                                       │  │
│            │            │  ┌──────────────────────────────┐    │  │
│            └────────────┼─▶│ Amazon EFS (モデルキャッシュ)│    │  │
│                         │  └──────────────────────────────┘    │  │
│                         └──────────────────────────────────────┘  │
│                                                                   │
│  ┌─────────────────────────────────────────────────────────────┐  │
│  │ CloudWatch (メトリクス・ログ・アラーム)                      │  │
│  └─────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────┘

EC2 GPUインスタンスの選定

NemoClawで使用するEC2インスタンスは、利用する推論プロファイルとモデルサイズによって選択が変わります。以下は主要なGPUインスタンスファミリーの比較です。

インスタンスGPUGPU数VRAM合計オンデマンド料金目安(東京)主な用途
g5.xlargeNVIDIA A10G124GB約$1.21/hPoC・開発環境・量子化Nano 30B
g5.12xlargeNVIDIA A10G496GB約$5.67/hマルチGPU検証・70Bクラス量子化
p3.2xlargeNVIDIA V100116GB約$3.06/hCUDA 12.4最低要件での動作確認
p3.8xlargeNVIDIA V100464GB約$12.24/hマルチGPU・中規模推論
p4d.24xlargeNVIDIA A1008320GB(40GB×8)約$32.77/h大規模推論・70〜120Bモデル
p4de.24xlargeNVIDIA A1008640GB(80GB×8)約$40.96/hフル精度120B以上モデル

p4d/p4deインスタンスは東京リージョン(ap-northeast-1)では提供が限定的です。事前にAWS Service Quotasからクォータ申請を行い、承認まで1〜2週間程度を見込んでください。開発・検証フェーズではg5インスタンスから開始することを推奨します。

サービスクォータの申請手順

GPU系インスタンスはデフォルトのクォータが0に設定されているケースがあります。AWS Consoleから以下の手順で申請してください。

  1. AWSコンソール → Service QuotasAmazon EC2 を開く
  2. 「Running On-Demand P instances」または「Running On-Demand G and VT instances」を検索
  3. クォータ値の増加をリクエストをクリックし、必要なvCPU数を入力
  4. 申請理由(ユースケース概要)を英語で記載して送信
  5. 承認メールを確認(ビジネスサポートプランで1〜3営業日、ベーシックで3〜7営業日が目安)

AMI選定とインスタンス起動設定

NemoClawを動作させるための適切なAMIを選定します。AMIによってCUDA・ドライバ・Docker環境のセットアップ工数が大きく変わります。

AMIの選択肢と比較

AMICUDA事前インストールNVIDIAドライバDockerおすすめ度
AWS Deep Learning AMI GPU(Ubuntu 22.04)CUDA 12.x(複数版)最新版プリインストール含む★★★★★
NVIDIA GPU-Optimized VMI(Marketplace)CUDA 12.xNVIDIA公式最適化版含む★★★★☆
Ubuntu 22.04 LTS(ベース)なし(手動インストール)なし(手動)なし(手動)★★☆☆☆

新規構築ではAWS Deep Learning AMI GPU(Ubuntu 22.04)が最善の選択です。CUDA 12.4以上の要件を確実に満たし、CUDAバージョン互換性のトラブルを回避できます。

# AMI IDを確認するAWS CLI コマンド(東京リージョン)
aws ec2 describe-images \
  --region ap-northeast-1 \
  --filters "Name=name,Values=Deep Learning AMI GPU*Ubuntu*22.04*" \
            "Name=state,Values=available" \
  --query "sort_by(Images, &CreationDate)[-1].{ImageId:ImageId,Name:Name}" \
  --output table

セキュリティグループの設定

最小権限の原則に従い、NemoClawの動作に必要なポートのみを開放します。

方向プロトコルポートソース/宛先用途
インバウンドTCP22管理者IPのみ(/32)SSH管理接続
インバウンドTCP8080ALBセキュリティグループIDNemoClaw APIポート(デフォルト)
インバウンドTCP8000ALBセキュリティグループIDNIM推論APIポート
アウトバウンドTCP4430.0.0.0/0NVIDIA NGC・AWS APIへのHTTPS通信
アウトバウンドTCP2049EFSセキュリティグループIDAmazon EFS(NFS)マウント
アウトバウンドTCP800.0.0.0/0パッケージ更新(apt)

本番環境ではGPUインスタンスをPrivate Subnetに配置し、パブリックIPを割り当てないことを推奨します。SSHアクセスにはAWS Systems Manager(Session Manager)を利用することでSSHポートの開放も不要になります。

Amazon EFSによるモデルキャッシュの共有設定

複数のGPUインスタンス間でNIMモデルウェイトを共有するためにAmazon EFSを使用します。モデルウェイト(70Bクラスで100〜200GB超)の再ダウンロードを防ぎ、Auto Scaling時のコールドスタート時間を大幅に削減できます。

# EFSをマウントするための事前設定
sudo apt-get install -y nfs-common amazon-efs-utils

# マウントポイントの作成
sudo mkdir -p /mnt/efs/nim-models

# EFSマウント(efs-mount-helperを使用したTLS暗号化マウント)
# fs-XXXXXXXXXX はAWSコンソールで確認したEFSファイルシステムID
sudo mount -t efs -o tls fs-XXXXXXXXXX:/ /mnt/efs/nim-models

# /etc/fstabに登録して再起動後も自動マウント
echo "fs-XXXXXXXXXX:/ /mnt/efs/nim-models efs _netdev,tls 0 0" | sudo tee -a /etc/fstab

# マウント確認
df -h | grep efs

EFSのスループットモードはバーストモード(デフォルト)よりプロビジョニングモードを選択し、モデルロード速度を確保することを推奨します。70Bクラスのモデルロードには100MB/s以上のスループットが求められます。

NemoClawのインストールと初期設定

インスタンスが起動しSSH(またはSession Manager)で接続できたら、NemoClawのセットアップを開始します。

前提条件の確認

# CUDA 12.4以上の確認(必須要件)
nvcc --version
# または
nvidia-smi | grep "CUDA Version"

# GPUの認識確認
nvidia-smi

# Docker動作確認
docker --version
docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi

# NVIDIA Container Toolkitの確認
nvidia-ctk --version

# Python 3.10以上の確認
python3 --version

Deep Learning AMIを使用している場合、CUDA・ドライバ・Docker・NVIDIA Container Toolkitはすべて事前インストール済みです。

NVIDIA NGC認証の設定

NIMコンテナイメージのpullにNVIDIA NGCのAPIキーが必要です。

# NGC APIキーをDocker認証情報として登録
docker login nvcr.io
# Username: $oauthtoken
# Password: [NGCコンソールで発行したAPIキー]

# APIキーは環境変数にも設定しておく
export NGC_API_KEY="ngckey_XXXXXXXXXXXXXXXXXX"

# .bashrcに追記して永続化
echo "export NGC_API_KEY=ngckey_XXXXXXXXXXXXXXXXXX" >> ~/.bashrc

NGC APIキーはNVIDIAのNGCポータル(ngc.nvidia.com)でアカウント作成後、「Setup」→「API Key」から発行できます。

NemoClawのインストール手順

# NemoClawリポジトリのクローン
git clone https://github.com/NVIDIA/NemoClaw.git
cd NemoClaw

# Python仮想環境のセットアップ
python3 -m venv .venv
source .venv/bin/activate

# NemoClawとその依存パッケージをインストール
pip install -e .

# 設定ファイルの準備
cp config/blueprint.example.yaml config/blueprint.yaml

# 設定確認
nemoclaw --version

blueprint.yamlはNemoClawのポリシーファイルで、OpenShellサンドボックスの許可・拒否ルールを定義します。

# config/blueprint.yaml の基本設定例
inference:
  profile: local_nim
  nim_endpoint: "http://localhost:8000"
  model: "nemotron-3-nano-30b"

sandbox:
  filesystem:
    allow:
      - "/workspace/"
      - "/tmp/nemoclaw/"
      - "/mnt/efs/nim-models/"
    deny:
      - "~/.ssh/"
      - "/etc/"
      - "/root/"
  network:
    allow:
      - "localhost"
      - "*.amazonaws.com"
      - "*.ngc.nvidia.com"
    deny:
      - "*"

Auto Scalingグループの設定

NemoClawを本番環境で安定稼働させるためにAuto Scalingグループ(ASG)を設定します。GPUインスタンスはコールドスタートに数分かかるため、スケールインポリシーは慎重に設定してください。

起動テンプレートの作成

Auto ScalingグループにはEC2起動テンプレートが必要です。AWS CLIを使った作成例を示します。

# 起動テンプレートの作成(JSONファイルを使用)
cat > launch-template.json << EOF
{
  "LaunchTemplateName": "nemoclaw-gpu-template",
  "LaunchTemplateData": {
    "ImageId": "ami-XXXXXXXXXX",
    "InstanceType": "g5.xlarge",
    "IamInstanceProfile": {
      "Arn": "arn:aws:iam::ACCOUNT_ID:instance-profile/NemoClawInstanceProfile"
    },
    "SecurityGroupIds": ["sg-XXXXXXXXXX"],
    "UserData": "$(base64 -w0 user-data.sh)",
    "BlockDeviceMappings": [
      {
        "DeviceName": "/dev/sda1",
        "Ebs": {
          "VolumeSize": 200,
          "VolumeType": "gp3",
          "Throughput": 250,
          "Iops": 3000,
          "DeleteOnTermination": true
        }
      }
    ],
    "TagSpecifications": [
      {
        "ResourceType": "instance",
        "Tags": [{"Key": "Name", "Value": "nemoclaw-gpu"}]
      }
    ]
  }
}
EOF

aws ec2 create-launch-template \
  --cli-input-json file://launch-template.json \
  --region ap-northeast-1

Auto Scalingグループのスケーリングポリシー

GPUの稼働率をベースにしたスケーリングポリシーを設定します。

ポリシー種別設定値理由
スケールアウト(GPU使用率)70%超過で+1台GPU飽和前に余裕を持って追加
スケールイン(GPU使用率)20%未満が30分継続で-1台コールドスタートを考慮した保守的設定
最小インスタンス数1台常時1台は稼働させてレイテンシを抑制
最大インスタンス数コスト上限に応じて設定予算超過防止
ウォームアップ時間300秒(5分)NIMモデルロード完了後にトラフィックを受け付ける

GPU使用率のCloudWatchカスタムメトリクスはデフォルトでは取得されません。NVIDIA DCGMエクスポーター(nvidia/dcgm-exporter)とCloudWatch Agentを組み合わせて計測する必要があります。

CloudWatchモニタリングの設定

NemoClawを本番稼働させる場合、CloudWatchによる監視設定は必須です。GPUインスタンスのカスタムメトリクス収集とログ集約を設定します。

GPUカスタムメトリクスの収集

CloudWatchのデフォルトメトリクスにGPU使用率は含まれていません。CloudWatch Agentの設定でカスタムメトリクスを追加します。

# CloudWatch Agentの設定ファイル(/opt/aws/amazon-cloudwatch-agent/etc/config.json)
{
  "metrics": {
    "metrics_collected": {
      "gpu": {
        "metrics_collection_interval": 60,
        "append_dimensions": {
          "InstanceId": "${aws:InstanceId}"
        }
      },
      "mem": {
        "metrics_collection_interval": 60,
        "measurement": ["mem_used_percent"]
      },
      "disk": {
        "metrics_collection_interval": 60,
        "measurement": ["disk_used_percent"],
        "resources": ["/", "/mnt/efs"]
      }
    }
  },
  "logs": {
    "logs_collected": {
      "files": {
        "collect_list": [
          {
            "file_path": "/var/log/nemoclaw/app.log",
            "log_group_name": "/nemoclaw/application",
            "log_stream_name": "{instance_id}"
          },
          {
            "file_path": "/var/log/nemoclaw/nim.log",
            "log_group_name": "/nemoclaw/nim",
            "log_stream_name": "{instance_id}"
          }
        ]
      }
    }
  }
}

CloudWatchアラームの設定

以下のメトリクスに対してアラームを設定することを推奨します。

メトリクスアラームしきい値アクション
GPU Utilization95%超過が15分継続SNS通知 + Auto Scalingトリガー
GPU Memory Utilization90%超過SNS通知(VRAMオーバー警告)
CPUUtilization80%超過が10分継続SNS通知
StatusCheckFailed1以上SNS通知 + インスタンス自動回復
NetworkPacketsOut(異常スパイク)通常値の10倍超過SNS通知(セキュリティ異常の疑い)
EBSWriteLatency50ms超過が5分継続SNS通知(ストレージボトルネック)

セキュリティ設定のベストプラクティス

NemoClawをAWSで本番稼働させる際の主要なセキュリティ設定を解説します。

IAMロールの最小権限設計

GPUインスタンスに割り当てるIAMロールは以下のポリシーのみを付与します。

AWSマネージドポリシーまたは権限用途
AmazonSSMManagedInstanceCoreSession Manager経由のSSHレスアクセス
CloudWatchAgentServerPolicyCloudWatchへのメトリクス・ログ送信
S3 GetObject(特定バケットのみ)モデルウェイトの取得(必要な場合)
ElasticFileSystem:ClientMountEFSマウント(必要な場合)

NGC APIキーなどの秘匿情報はAWS Secrets ManagerまたはAWS Systems Manager Parameter Store(SecureString)に保存し、インスタンス上に平文で保持しないでください。

VPCネットワーク設計の注意点

セキュリティを確保しつつNemoClawが正常動作するVPC設計のポイントです。

  • Private Subnet配置:GPUインスタンスにパブリックIPを割り当てない。外部通信はNAT Gatewayを経由させる
  • VPCエンドポイント:S3・ECR・Systems Manager・CloudWatchに対してVPCエンドポイントを設定することでNATゲートウェイのコストと通信経路を削減できる
  • セキュリティグループの参照:IPアドレス指定ではなくセキュリティグループIDを参照することで、インスタンスのIPが変わっても設定変更が不要になる
  • フローログ:VPCフローログを有効化してS3またはCloudWatch Logsに保存し、不審な通信パターンを検知できるようにする