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を動作させるための要件です。

要件項目最低要件推奨
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以上最新版
ディスク(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シリーズGPUVRAM主な用途東京(Japan East)提供
NCasT4_v3(例: Standard_NC4as_T4_v3)NVIDIA T416GB推論・PoC・低コスト検証あり
NCv3(例: Standard_NC6s_v3)NVIDIA V10016GBCUDA 12.4最低要件での動作確認あり
NC A100 v4(例: Standard_NC24ads_A100_v4)NVIDIA A10080GB70B〜120Bクラス・本番推論あり(要クォータ申請)
ND A100 v4(例: Standard_ND96asr_v4)NVIDIA A100×8640GB(80GB×8)最大規模マルチGPU推論限定(要申請)
NDm A100 v4(例: Standard_ND96amsr_A100_v4)NVIDIA A100×8640GB(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がプリインストールされたイメージが複数提供されています。

イメージ発行元CUDADockerおすすめ度
Data Science Virtual Machine - Ubuntu 22.04Microsoft最新版含む★★★★★
NVIDIA GPU-Optimized ImageNVIDIA(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インバウンドTCP8080Azure Load BalancerのサービスタグAzureLoadBalancerNemoClaw APIポート
Allow-NIM-APIインバウンドTCP8000Azure Load BalancerのサービスタグAzureLoadBalancerNIM推論APIポート
Allow-Bastion-SSHインバウンドTCP22AzureBastionサブネット(10.0.1.0/27等)Azure Bastion経由のSSH
Allow-NFSインバウンドTCP2049VNet内サブネットAzure NetApp Files(NFS)
Allow-HTTPS-OutboundアウトバウンドTCP443任意(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のマネージドIDKey Vault Secrets UserKey VaultリソースNGC APIキーの読み取り
GPU VMのマネージドIDMonitoring Metrics PublisherリソースグループAzure Monitorへのカスタムメトリクス送信
AKSクラスターのマネージドIDAcrPullAzure Container RegistryNIMイメージのpull
DevOpsパイプラインのサービスプリンシパルContributor(スコープ限定)nemoclaw-rgリソースグループのみCI/CDデプロイメント
運用チームのAzure ADグループReader + Azure Kubernetes Service Cluster User RoleAKSクラスター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 CPU85%超過が10分Warning(Sev2)
ディスク使用率警告OS Disk Used Bytes Percentage80%超過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\"}]
  }"