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を動作させるための最低要件は以下の通りです。
| 要件項目 | 最低要件 | 推奨 |
|---|---|---|
| GPU | NVIDIA GPU(Volta世代以降) | Ampere(A100)以降 |
| CUDAバージョン | CUDA 12.4以上 | CUDA 12.6以上 |
| VRAM | 推論プロファイルによる(最低16GB) | 80GB以上(フル精度モデル用) |
| OS | Ubuntu 20.04 LTS以上 | Ubuntu 22.04 LTS |
| Docker | Docker Engine 24.0以上 | Docker Engine 26.0以上 |
| NVIDIA Container Toolkit | 1.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インスタンスファミリーの比較です。
| インスタンス | GPU | GPU数 | VRAM合計 | オンデマンド料金目安(東京) | 主な用途 |
|---|---|---|---|---|---|
| g5.xlarge | NVIDIA A10G | 1 | 24GB | 約$1.21/h | PoC・開発環境・量子化Nano 30B |
| g5.12xlarge | NVIDIA A10G | 4 | 96GB | 約$5.67/h | マルチGPU検証・70Bクラス量子化 |
| p3.2xlarge | NVIDIA V100 | 1 | 16GB | 約$3.06/h | CUDA 12.4最低要件での動作確認 |
| p3.8xlarge | NVIDIA V100 | 4 | 64GB | 約$12.24/h | マルチGPU・中規模推論 |
| p4d.24xlarge | NVIDIA A100 | 8 | 320GB(40GB×8) | 約$32.77/h | 大規模推論・70〜120Bモデル |
| p4de.24xlarge | NVIDIA A100 | 8 | 640GB(80GB×8) | 約$40.96/h | フル精度120B以上モデル |
p4d/p4deインスタンスは東京リージョン(ap-northeast-1)では提供が限定的です。事前にAWS Service Quotasからクォータ申請を行い、承認まで1〜2週間程度を見込んでください。開発・検証フェーズではg5インスタンスから開始することを推奨します。
サービスクォータの申請手順
GPU系インスタンスはデフォルトのクォータが0に設定されているケースがあります。AWS Consoleから以下の手順で申請してください。
- AWSコンソール → Service Quotas → Amazon EC2 を開く
- 「Running On-Demand P instances」または「Running On-Demand G and VT instances」を検索
- クォータ値の増加をリクエストをクリックし、必要なvCPU数を入力
- 申請理由(ユースケース概要)を英語で記載して送信
- 承認メールを確認(ビジネスサポートプランで1〜3営業日、ベーシックで3〜7営業日が目安)
AMI選定とインスタンス起動設定
NemoClawを動作させるための適切なAMIを選定します。AMIによってCUDA・ドライバ・Docker環境のセットアップ工数が大きく変わります。
AMIの選択肢と比較
| AMI | CUDA事前インストール | NVIDIAドライバ | Docker | おすすめ度 |
|---|---|---|---|---|
| AWS Deep Learning AMI GPU(Ubuntu 22.04) | CUDA 12.x(複数版) | 最新版プリインストール | 含む | ★★★★★ |
| NVIDIA GPU-Optimized VMI(Marketplace) | CUDA 12.x | NVIDIA公式最適化版 | 含む | ★★★★☆ |
| 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の動作に必要なポートのみを開放します。
| 方向 | プロトコル | ポート | ソース/宛先 | 用途 |
|---|---|---|---|---|
| インバウンド | TCP | 22 | 管理者IPのみ(/32) | SSH管理接続 |
| インバウンド | TCP | 8080 | ALBセキュリティグループID | NemoClaw APIポート(デフォルト) |
| インバウンド | TCP | 8000 | ALBセキュリティグループID | NIM推論APIポート |
| アウトバウンド | TCP | 443 | 0.0.0.0/0 | NVIDIA NGC・AWS APIへのHTTPS通信 |
| アウトバウンド | TCP | 2049 | EFSセキュリティグループID | Amazon EFS(NFS)マウント |
| アウトバウンド | TCP | 80 | 0.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 Utilization | 95%超過が15分継続 | SNS通知 + Auto Scalingトリガー |
| GPU Memory Utilization | 90%超過 | SNS通知(VRAMオーバー警告) |
| CPUUtilization | 80%超過が10分継続 | SNS通知 |
| StatusCheckFailed | 1以上 | SNS通知 + インスタンス自動回復 |
| NetworkPacketsOut(異常スパイク) | 通常値の10倍超過 | SNS通知(セキュリティ異常の疑い) |
| EBSWriteLatency | 50ms超過が5分継続 | SNS通知(ストレージボトルネック) |
セキュリティ設定のベストプラクティス
NemoClawをAWSで本番稼働させる際の主要なセキュリティ設定を解説します。
IAMロールの最小権限設計
GPUインスタンスに割り当てるIAMロールは以下のポリシーのみを付与します。
| AWSマネージドポリシーまたは権限 | 用途 |
|---|---|
| AmazonSSMManagedInstanceCore | Session Manager経由のSSHレスアクセス |
| CloudWatchAgentServerPolicy | CloudWatchへのメトリクス・ログ送信 |
| S3 GetObject(特定バケットのみ) | モデルウェイトの取得(必要な場合) |
| ElasticFileSystem:ClientMount | EFSマウント(必要な場合) |
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に保存し、不審な通信パターンを検知できるようにする