Microsoft AzureでNemoClawを動かす全体像
Microsoft AzureはNVIDIA GPUを搭載したVMシリーズを豊富に提供しており、特にエンタープライズ環境においてActive Directory連携・コンプライアンス管理・既存Microsoftエコシステムとの統合が容易という特徴があります。NemoClawをAzure上で動かすことで、Microsoft 365・Azure Active Directory・Azure Monitorとシームレスに連携した本番環境を構築できます。
本ガイドでは、Azureサブスクリプションを保有している状態を前提に、GPU VMの選定・NVIDIA GPU対応イメージ選択・仮想ネットワーク設計・Azure Kubernetes Service(AKS)統合・Azure AD認証連携・Defender for Cloud設定まで、エンタープライズ向けの構築手順を解説します。
NemoClawはNVIDIA GTC 2026で発表された早期アルファ版です。本ガイドの手順はアルファ版公開情報に基づいています。GA(一般提供)版では設定項目・手順が変更になる可能性があります。最新情報はNVIDIA公式リポジトリをご確認ください。
NemoClawの動作要件
Azure VMで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以上 | 最新版 |
| ディスク(OSディスク) | 128GB以上(Premium SSD) | 256GB以上 |
| データディスク(モデル用) | 512GB以上(Premium SSD) | 1TB以上 |
Azure構成の全体図
エンタープライズ向けの本番Azure構成の概要です。
┌──────────────────────────────────────────────────────────────────┐
│ Azure Virtual Network (10.0.0.0/16) │
│ │
│ ┌──────────────────┐ ┌──────────────────────────────────────┐ │
│ │ Public Subnet │ │ Private Subnet │ │
│ │ │ │ │ │
│ │ ┌────────────┐ │ │ ┌──────────────────────────────┐ │ │
│ │ │ Azure │ │ │ │ Azure Kubernetes Service │ │ │
│ │ │ Load │──┼───┼─▶│ (AKS) / VMSS │ │ │
│ │ │ Balancer │ │ │ │ GPU Node Pool │ │ │
│ │ └────────────┘ │ │ │ (NemoClaw + NIM Runtime) │ │ │
│ │ │ │ │ ┌──────────────────────────┐ │ │ │
│ │ ┌────────────┐ │ │ │ │ OpenShell Sandbox │ │ │ │
│ │ │ Azure │ │ │ │ └──────────────────────────┘ │ │ │
│ │ │ Bastion │ │ │ └──────────────────────────────┘ │ │
│ │ └────────────┘ │ │ │ │
│ └──────────────────┘ │ ┌──────────────────────────────┐ │ │
│ │ │ Azure NetApp Files │ │ │
│ │ │ (モデルキャッシュ共有NFS) │ │ │
│ │ └──────────────────────────────┘ │ │
│ └──────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ Azure Monitor + Log Analytics + Defender for Cloud │ │
│ └────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘ AzureのGPU VMシリーズの選定
AzureのGPU対応VMは主にNC・ND・NVの3つのシリーズに分類されます。NemoClawの推論ワークロードにはNCまたはNDシリーズを選択します。
| VMシリーズ | GPU | VRAM | 主な用途 | 東京(Japan East)提供 |
|---|---|---|---|---|
| NCasT4_v3(例: Standard_NC4as_T4_v3) | NVIDIA T4 | 16GB | 推論・PoC・低コスト検証 | あり |
| NCv3(例: Standard_NC6s_v3) | NVIDIA V100 | 16GB | CUDA 12.4最低要件での動作確認 | あり |
| NC A100 v4(例: Standard_NC24ads_A100_v4) | NVIDIA A100 | 80GB | 70B〜120Bクラス・本番推論 | あり(要クォータ申請) |
| ND A100 v4(例: Standard_ND96asr_v4) | NVIDIA A100×8 | 640GB(80GB×8) | 最大規模マルチGPU推論 | 限定(要申請) |
| NDm A100 v4(例: Standard_ND96amsr_A100_v4) | NVIDIA A100×8 | 640GB(80GB×8)+ 高メモリ | 超大規模モデル | 限定(要申請) |
NV(NVIDIAグラフィックス系)シリーズはリモートデスクトップやビジュアライゼーション向けであり、NemoClawの推論ワークロードには適していません。NCまたはNDシリーズを選択してください。
クォータ増加リクエストの手順
Azureでは新規サブスクリプションのGPU VMクォータはデフォルトで0になっています。Azure PortalまたはAzure CLIからクォータ増加をリクエストします。
# Azure CLIでクォータ状況を確認
az vm list-usage \
--location japaneast \
--query "[?contains(name.value, \"Standard_NC\") || contains(name.value, \"Standard_ND\")]" \
--output table
クォータ増加リクエストはAzure Portal → ヘルプとサポート → 新しいサポートリクエスト → 「サービスとサブスクリプションの制限(クォータ)」から申請します。承認には通常2〜5営業日かかります。
GPU VMの作成と初期設定
NemoClaw動作に適したGPU VMを作成します。AzureのNVIDIA GPU対応のマーケットプレイスイメージを使用することで初期設定を効率化できます。
VMイメージの選定
AzureマーケットプレイスにはNVIDIAドライバ・CUDAがプリインストールされたイメージが複数提供されています。
| イメージ | 発行元 | CUDA | Docker | おすすめ度 |
|---|---|---|---|---|
| Data Science Virtual Machine - Ubuntu 22.04 | Microsoft | 最新版 | 含む | ★★★★★ |
| NVIDIA GPU-Optimized Image | NVIDIA(Marketplace) | 12.x | 含む | ★★★★☆ |
| Ubuntu Server 22.04 LTS(ベース) | Canonical | なし(手動) | なし(手動) | ★★☆☆☆ |
# Azure CLIでVM作成(NC A100 v4、Japan Eastゾーン)
az vm create \
--resource-group nemoclaw-rg \
--name nemoclaw-gpu-vm \
--location japaneast \
--size Standard_NC24ads_A100_v4 \
--image microsoft-dsvm:ubuntu-2204:2204:latest \
--admin-username azureuser \
--generate-ssh-keys \
--assign-identity \
--no-wait
# マネージドIDへのロール付与(後述のAzure Key Vault・Azure Monitorに必要)
az role assignment create \
--assignee-object-id $(az vm show \
--resource-group nemoclaw-rg \
--name nemoclaw-gpu-vm \
--query identity.principalId -o tsv) \
--role "Key Vault Secrets User" \
--scope /subscriptions/[SUBSCRIPTION_ID]/resourceGroups/nemoclaw-rg/providers/Microsoft.KeyVault/vaults/nemoclaw-kv ネットワークセキュリティグループ(NSG)の設定
AzureのNSGでNemoClawに必要な通信を制御します。
| ルール名 | 方向 | プロトコル | 宛先ポート | ソース | 用途 |
|---|---|---|---|---|---|
| Allow-NemoClaw-API | インバウンド | TCP | 8080 | Azure Load BalancerのサービスタグAzureLoadBalancer | NemoClaw APIポート |
| Allow-NIM-API | インバウンド | TCP | 8000 | Azure Load BalancerのサービスタグAzureLoadBalancer | NIM推論APIポート |
| Allow-Bastion-SSH | インバウンド | TCP | 22 | AzureBastionサブネット(10.0.1.0/27等) | Azure Bastion経由のSSH |
| Allow-NFS | インバウンド | TCP | 2049 | VNet内サブネット | Azure NetApp Files(NFS) |
| Allow-HTTPS-Outbound | アウトバウンド | TCP | 443 | 任意(0.0.0.0/0) | NGC・Azure APIへのHTTPS通信 |
Azure Bastionを使用することでパブリックIPなしのセキュアなSSHアクセスが可能です。Azure Bastionを仮想ネットワーク内のAzureBastionSubnet(/27以上のサブネット)にデプロイするだけで設定できます。
Azure NetApp FilesによるNFSモデルキャッシュの共有
VMSSやAKS GPUノードプール間でNIMモデルウェイトを共有するためにAzure NetApp Filesを使用します。高スループットのNFSv3/v4.1マウントが可能で、モデルウェイトの読み取りに必要な帯域幅を確保できます。
# Azure NetApp Filesのボリューム作成(Azure CLI)
# 事前にAzure NetApp FilesリソースプロバイダとNetAppアカウントが必要
az netappfiles account create \
--resource-group nemoclaw-rg \
--location japaneast \
--name nemoclaw-netapp
az netappfiles pool create \
--resource-group nemoclaw-rg \
--location japaneast \
--account-name nemoclaw-netapp \
--name nemoclaw-pool \
--size 4 \
--service-level Premium
az netappfiles volume create \
--resource-group nemoclaw-rg \
--location japaneast \
--account-name nemoclaw-netapp \
--pool-name nemoclaw-pool \
--name nim-models \
--service-level Premium \
--vnet nemoclaw-vnet \
--subnet nemoclaw-subnet \
--usage-threshold 1000 \
--protocol-types NFSv3
# VM上でのNFSマウント
sudo mkdir -p /mnt/netapp/nim-models
sudo mount -t nfs -o rw,hard,rsize=65536,wsize=65536,vers=3,tcp \
[NETAPP_IP]:/nim-models /mnt/netapp/nim-models
# /etc/fstabへの追記
echo "[NETAPP_IP]:/nim-models /mnt/netapp/nim-models nfs rw,hard,rsize=65536,wsize=65536,vers=3,tcp 0 0" | sudo tee -a /etc/fstab
Azure NetApp FilesのPremiumサービスレベルは最大64MiB/s/TiBのスループットを提供します。大規模モデル(70B以上)のロード速度に要件がある場合はUltraサービスレベル(128MiB/s/TiB)も検討してください。
AKS(Azure Kubernetes Service)との統合
本番規模のNemoClawデプロイにはAKSを使用したコンテナオーケストレーションが推奨されます。AKSのGPUノードプールとHorizontal Pod Autoscalerを組み合わせることで、自動スケーリングと高可用性を実現できます。
AKS GPUノードプールの作成
# AKSクラスターの作成(システムノードプールはCPUのみ)
az aks create \
--resource-group nemoclaw-rg \
--name nemoclaw-aks \
--location japaneast \
--node-count 1 \
--node-vm-size Standard_D4s_v5 \
--enable-managed-identity \
--generate-ssh-keys \
--network-plugin azure \
--network-policy azure
# GPUノードプールの追加
az aks nodepool add \
--resource-group nemoclaw-rg \
--cluster-name nemoclaw-aks \
--name gpunodepool \
--node-count 1 \
--node-vm-size Standard_NC24ads_A100_v4 \
--node-taints sku=gpu:NoSchedule \
--aks-custom-headers UseGPUDedicatedVHD=true
# クレデンシャルの取得
az aks get-credentials \
--resource-group nemoclaw-rg \
--name nemoclaw-aks
# NVIDIA Device Pluginのデプロイ
kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.14.0/nvidia-device-plugin.yml NemoClawのKubernetesマニフェスト例
# nemoclaw-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nemoclaw
namespace: nemoclaw
spec:
replicas: 1
selector:
matchLabels:
app: nemoclaw
template:
metadata:
labels:
app: nemoclaw
spec:
tolerations:
- key: sku
value: gpu
operator: Equal
effect: NoSchedule
containers:
- name: nim
image: nvcr.io/nim/nvidia/nemotron-3-nano-30b:latest
resources:
limits:
nvidia.com/gpu: 1
env:
- name: NGC_API_KEY
valueFrom:
secretKeyRef:
name: ngc-secret
key: api-key
volumeMounts:
- name: nim-models
mountPath: /opt/nim/.cache
ports:
- containerPort: 8000
- name: nemoclaw
image: [ACR_NAME].azurecr.io/nemoclaw:latest
ports:
- containerPort: 8080
volumeMounts:
- name: nemoclaw-config
mountPath: /app/config
volumes:
- name: nim-models
persistentVolumeClaim:
claimName: netapp-pvc
- name: nemoclaw-config
configMap:
name: nemoclaw-blueprint Azure AD認証連携
エンタープライズ環境でNemoClawのAPIアクセス管理にAzure Active Directory(Azure AD / Microsoft Entra ID)認証を組み合わせることで、組織のIDガバナンスに統合できます。
マネージドIDによるキーレス認証
AzureのマネージドIDを使用することで、NGC APIキーなどの秘匿情報をAzure Key Vaultに保存し、VMやAKSポッドからキーレスで取得できます。
# Key Vaultへのシークレット登録
az keyvault secret set \
--vault-name nemoclaw-kv \
--name ngc-api-key \
--value "ngckey_XXXXXXXXXXXXXXXXXX"
# VM上でのKey Vault参照(マネージドID使用)
# az loginは不要。マネージドIDが自動認証
NGC_API_KEY=$(az keyvault secret show \
--vault-name nemoclaw-kv \
--name ngc-api-key \
--query value -o tsv)
export NGC_API_KEY
# AKSからKubernetesシークレットとしてKey Vault参照
# Secret Store CSI Driverを使用(別途インストールが必要)
cat << EOF | kubectl apply -f -
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
name: ngc-key-provider
spec:
provider: azure
parameters:
usePodIdentity: "false"
useVMManagedIdentity: "true"
userAssignedIdentityID: ""
keyvaultName: "nemoclaw-kv"
objects: |
array:
- |
objectName: ngc-api-key
objectType: secret
tenantId: "[TENANT_ID]"
EOF AzureロールベースのアクセスControlデザイン
NemoClawの運用に必要なAzure RBACロール割り当ての設計例です。
| ロール/ID | 付与するAzureロール | スコープ | 用途 |
|---|---|---|---|
| GPU VMのマネージドID | Key Vault Secrets User | Key Vaultリソース | NGC APIキーの読み取り |
| GPU VMのマネージドID | Monitoring Metrics Publisher | リソースグループ | Azure Monitorへのカスタムメトリクス送信 |
| AKSクラスターのマネージドID | AcrPull | Azure Container Registry | NIMイメージのpull |
| DevOpsパイプラインのサービスプリンシパル | Contributor(スコープ限定) | nemoclaw-rgリソースグループのみ | CI/CDデプロイメント |
| 運用チームのAzure ADグループ | Reader + Azure Kubernetes Service Cluster User Role | AKSクラスター | kubectl読み取り操作 |
Azure Monitorの設定
AzureのAzure MonitorとLog Analytics Workspaceを使用してNemoClawの動作を監視します。AKSやVMからのメトリクス・ログを一元管理できます。
Log Analytics Workspaceの設定
# Log Analytics Workspaceの作成
az monitor log-analytics workspace create \
--resource-group nemoclaw-rg \
--workspace-name nemoclaw-logs \
--location japaneast \
--retention-time 90
# AKSとLog Analytics Workspaceの連携
LOG_ANALYTICS_ID=$(az monitor log-analytics workspace show \
--resource-group nemoclaw-rg \
--workspace-name nemoclaw-logs \
--query id -o tsv)
az aks enable-addons \
--resource-group nemoclaw-rg \
--name nemoclaw-aks \
--addons monitoring \
--workspace-resource-id $LOG_ANALYTICS_ID
Log Analytics Workspaceにはデータ保持期間(デフォルト30日)と取り込み量に応じた料金がかかります。GPUインスタンスの詳細ログを長期間保存する場合はAzure Storage Archive tierへのエクスポートを設定してコストを最適化してください。
アラートルールの設定
Azure Monitorで設定すべき主要なアラートルールです。
| アラート名 | メトリクス/ログクエリ | しきい値 | 重大度 |
|---|---|---|---|
| GPU使用率高騰 | GPU Percentage(カスタムメトリクス) | 95%超過が15分 | Warning(Sev2) |
| VM停止検知 | Heartbeat(ログ) | 5分間Heartbeatなし | Critical(Sev1) |
| CPU過負荷 | Percentage CPU | 85%超過が10分 | Warning(Sev2) |
| ディスク使用率警告 | OS Disk Used Bytes Percentage | 80%超過 | Warning(Sev3) |
| AKSポッド再起動頻発 | KubePodContainerRestart(ログ) | 5回/時間を超過 | Warning(Sev2) |
アラートの通知先はAction Groupで管理します。メール・SMSのほかAzure DevOpsのWebhookやPagerDutyと連携することも可能です。
Defender for Cloudによるセキュリティ強化
Azure Defender for Cloud(旧Azure Security Center)を有効化することで、NemoClawを動かすGPU VMとAKSクラスターのセキュリティ態勢を継続的に評価・改善できます。
Defender for Cloudの有効化
# Defender for Serversの有効化(GPU VMの保護)
az security pricing create \
--name VirtualMachines \
--tier Standard
# Defender for Containersの有効化(AKSクラスターの保護)
az security pricing create \
--name Containers \
--tier Standard
Defender for Cloudを有効化すると以下のセキュリティ機能が利用できます。
- セキュリティスコア:リソースのセキュリティ設定を100点満点で評価し、改善すべき項目を優先順位付きで提示
- Just-in-time VMアクセス:SSHポート(22番)を通常時にブロックし、要求があった時のみ指定時間だけ開放するアクセス管理
- 適応型アプリケーション制御:VMで実行を許可するアプリケーションをホワイトリスト管理し、マルウェアの実行を防止
- コンテナセキュリティ:AKSクラスターの設定・ランタイム・イメージの脆弱性を継続的にスキャン
Just-in-timeアクセスの設定
Just-in-time(JIT)VMアクセスを設定することでSSHポートの常時開放を避け、不正アクセスリスクを大幅に低減できます。
# JITポリシーの設定(Azure CLI)
az security jit-policy create \
--resource-group nemoclaw-rg \
--vm-name nemoclaw-gpu-vm \
--policy "{
\"virtualMachines\": [{
\"id\": \"/subscriptions/[SUBSCRIPTION_ID]/resourceGroups/nemoclaw-rg/providers/Microsoft.Compute/virtualMachines/nemoclaw-gpu-vm\",
\"ports\": [{
\"number\": 22,
\"protocol\": \"TCP\",
\"allowedSourceAddressPrefix\": \"*\",
\"maxRequestAccessDuration\": \"PT3H\"
}]
}]
}"
# JITアクセスのリクエスト(SSH接続が必要なとき)
az security jit-policy initiate \
--resource-group nemoclaw-rg \
--vm-name nemoclaw-gpu-vm \
--vm-requests "{
\"virtualMachineId\": \"/subscriptions/[SUBSCRIPTION_ID]/resourceGroups/nemoclaw-rg/providers/Microsoft.Compute/virtualMachines/nemoclaw-gpu-vm\",
\"ports\": [{\"number\": 22, \"duration\": \"PT1H\", \"allowedSourceAddressPrefix\": \"[YOUR_IP]/32\"}]
}"