従来、Azure Kubernetes Service (AKS)で NVIDIA GPU ワークロードを実行するには、各 GPU ノードに NVIDIA GPU ドライバー、Kubernetes デバイス プラグイン、および GPU メトリック エクスポーターをインストールして維持する必要があります。 これらのコンポーネントにより、GPU スケジューリング、コンテナー レベルの GPU アクセス、テレメトリが有効になりますが、手動または NVIDIA GPU オペレーター を使用してインストールすると、運用オーバーヘッドが増加します。
フル マネージド GPU ノード (プレビュー) では、AKS は NVIDIA GPU ドライバー、デバイス プラグイン、および Data Center GPU Manager (DCGM) メトリック エクスポーター をインストールして維持します。 GPU ノード プールの作成は 1 つのステップになり、GPU 容量は他の AKS ノード プールと同様に動作します。
マネージド GPU ノード プールは、 gpuProfile.nvidiaの下の 2 つのフィールドを使用して構成します。
-
managementMode(ManagedまたはUnmanaged) は、AKS がフル マネージド GPU スタック (ドライバー、デバイス プラグイン、DCGM メトリック エクスポーター) をインストールするか、ドライバーのみをインストールするかを制御します。 既定値はUnmanagedです。 -
migStrategy(None、Single、またはMixed) は、A100 や H100 などのサポートされている GPU SKU のマルチインスタンス GPU (MIG) 戦略を設定します。 既定値はNoneです。
この記事では、マネージド GPU ノード プールをプロビジョニングし、必要に応じて MIG を有効にし、スタックを確認し、サンプル GPU ワークロードを実行します。
Important
AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿のまま" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は運用環境での使用を目的としていません。 詳細については、次のサポート記事を参照してください。
開始する前に
- この記事は、AKS クラスターがすでに存在していることを前提としています。 クラスターがない場合は、Azure CLI、Azure PowerShell、または Azure portal を使用して作成します。
- Azure CLI バージョン 2.85.0 以降がインストールされている必要があります。 バージョンを見つけるには、
az --versionを実行します。 インストールまたはアップグレードが必要な場合は、Azure CLI のインストールを参照してください。 -
aks-preview拡張機能の最新バージョンをインストールしてアップグレードする必要があります。 - この記事の
az aks get-credentialsの例を実行する前に、kubectlを使用して AKS クラスターの資格情報を取得します。
マネージド GPU コンポーネント
マネージド GPU ノード プールには、すべてのノードに次のコンポーネントを含めることができます。
| コンポーネント | 動作内容 | AKS が管理する内容 |
|---|---|---|
| NVIDIA GPU ドライバー | OS とコンテナーが GPU ハードウェアと通信できるようにするカーネル モジュールとユーザー空間ライブラリ。 | ドライバーのバージョンの選択、ノード プロビジョニングでのインストール、ノード イメージのアップグレード後の再インストール。 |
| NVIDIA Kubernetes デバイス プラグイン | ポッドがそれらを要求できるように GPU リソース (nvidia.com/gpu、 nvidia.com/mig-*) を kubelet にアドバタイズする DaemonSet と同等です。 |
各 GPU ノードでのデプロイ、構成 (MIG 戦略を含む)、ライフサイクル。 |
| NVIDIA DCGM と DCGM メトリック エクスポーター |
Data Center GPU Manager は、GPU の正常性と使用率のデータを収集し、ポート DCGM_FI_DEV_GPU_UTILで Prometheus メトリック (DCGM_FI_DEV_GPU_TEMP、19400 など) を公開します。 |
インストール、サービスの有効化、およびメトリックをスクレイピングするために使用されるkubernetes.azure.com/dcgm-exporter=enabledノードラベル。 |
| GPU 正常性シグナル | NPD は、 UnhealthyNvidiaDevicePlugin や UnhealthyNvidiaDCGMServicesなどの GPU 固有のノード条件を示します。 |
GPU ノードの NPD 監視と条件レポート。 |
プロファイルのインストール
次の 2 つの gpuProfile フィールドで、AKS がインストールするコンポーネントを決定します。
-
gpuProfile.driver(InstallまたはNone): AKS が NVIDIA GPU ドライバーをインストールするかどうか。 -
gpuProfile.nvidia.managementMode(ManagedまたはUnmanaged): AKS が Kubernetes に接続する GPU スタックもドライバーの上にインストールするかどうか。
これらによって、次の 3 つのインストール プロファイルが生成されます。
| プロファイルのインストール | CLI フラグ | AKS のインストールと管理 |
|---|---|---|
| フル マネージド スタック |
--enable-managed-gpu=true (またはどちらのフラグも使わない) |
上記の 4 つのコンポーネントすべて:ドライバー、デバイス プラグイン、DCGM メトリック エクスポーター、NPD での GPU 正常性監視。 |
| ドライバーのみ (既定) | --enable-managed-gpu=false |
NVIDIA GPU ドライバーのみ。 デバイス プラグイン、メトリック エクスポーター、正常性監視を自分でインストールして管理します (たとえば、 NVIDIA GPU オペレーターを使用)。 |
| なし (BYO) | --enable-managed-gpu=false --gpu-driver None |
何もしない。 AKS では、4 つのコンポーネントはインストールされません。 あなたはフルスタックを完全に管理している。 「 独自の GPU ドライバーを使用する」を参照してください。 |
既定値と上書き
-
既定値:
--enable-managed-gpuまたは--gpu-driverを渡さない場合、AKS は NVIDIA GPU 対応 VM サイズで作成されたノード プールにドライバーのみのプロファイルを適用します。 -
オーバーライド:
managementMode: Managedはドライバーを必要とするため、--gpu-driver Noneとドライバーがまだインストールされている場合、--enable-managed-gpu=trueは無視されます。 ドライバーをスキップするには、--enable-managed-gpu=falseと--gpu-driver Noneの両方を設定します。 -
不変性:
managementMode、migStrategy、driverはすべて作成時に固定されます。 プロファイルを変更するには、新しいノード プールを作成します。
aks-preview CLI 拡張機能をインストールする
aks-previewコマンドを使用してaz extension addCLI 拡張機能をインストールします。 バージョン 19.0.0b29 以降が必要です。az extension add --name aks-previewaz extension updateコマンドを使用して拡張機能を更新して、最新バージョンが確実にインストールされた状態にします。az extension update --name aks-preview
ManagedGPUExperiencePreview フィーチャーフラグを登録する
ManagedGPUExperiencePreview コマンドを使用してサブスクリプションに az feature register 機能フラグを登録します。
az feature register --namespace Microsoft.ContainerService --name ManagedGPUExperiencePreview
制限事項
- この機能は現在、 NVIDIA GPU 対応の仮想マシン (VM) サイズ のみをサポートしています。
- 汎用ノード プールを更新して GPU VM サイズを追加することは、AKS ではサポートされていません。
- GPU メトリックはサポートされていないため、Windowsノード プールはこの機能ではサポートされていません。 WINDOWS GPU ノード プールを作成すると、AKS によってドライバーと DirectX デバイス プラグインが自動的にインストールおよび管理されます。 詳細については、AKS Windows GPU のドキュメントを参照してください。
- この機能を使用するための既存 のマルチインスタンス GPU ノード プールの移行はサポートされていません。
- 既存の NVIDIA GPU ノード プールからマネージド GPU ノード プールへのインプレース アップグレードはサポートされていません。 既存の GPU ノードを移行、切断、ドレインするには、
--enable-managed-gpu=trueで作成された新しい GPU ノード プールにワークロードを再デプロイします。 詳細については、「 AKS でのノード プールのサイズ変更」を参照してください。 -
managementModeのmigStrategy、driver、およびgpuProfileフィールドは、ノード プールの作成後に変更できません。 これらの値を変更するには、新しいノード プールを作成します。 - クラスター オートスケーラーは、プレビュー期間中、マネージド GPU ノード プールではサポートされていません。 これらのプールを手動でスケーリングします。
注
GPU 対応 VM には、より高い価格が適用され、利用可能なリージョンが限られる特殊なハードウェアが含まれます。 詳細については、価格ツールと利用可能なリージョンを参照してください。
AKS マネージド GPU ノード プールを作成する (プレビュー)
--enable-managed-gpu=trueをaz aks nodepool addに渡して、マネージド GPU ノード プールを既存の AKS クラスターに追加します。 AKS は gpuProfile.nvidia.managementMode を Managed に設定し、GPU ドライバー、デバイス プラグイン、DCGM メトリック エクスポーターを自動的にインストールします。
既定の Ubuntu オペレーティング システム (OS) SKU を使用するには、OS SKU を指定せずにノード プールを作成します。 ノード プールは、クラスターの Kubernetes バージョンに基づき、既定のオペレーティング システムに対して設定されます。
az aks nodepool addフラグを指定して--enable-managed-gpu=trueコマンドを使用して、クラスターにノード プールを追加します。az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name gpunp \ --node-count 1 \ --node-vm-size Standard_NC6s_v3 \ --node-taints sku=gpu:NoSchedule \ --enable-managed-gpu=trueマネージド NVIDIA GPU ソフトウェア コンポーネントが正常にインストールされていることを確認します。
az aks nodepool show \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name gpunp出力には、次の値が含まれている必要があります。
... "gpuProfile": { "driver": "Install", "driverType": "", "nvidia": { "managementMode": "Managed", "migStrategy": null } }, ...
マネージド マルチインスタンス GPU (MIG) ノード プールの作成 (プレビュー)
マルチインスタンス GPU (A100 や H100 など) をサポートする GPU SKU の場合は、 --gpu-mig-strategy フラグを使用してノード プールの作成時に MIG 戦略を構成します。 この戦略では、MIG パーティションを Kubernetes に公開する方法を制御します。
-
Single: すべての MIG インスタンスは、標準のnvidia.com/gpuリソースで集計されます。 -
Mixed: 各 MIG プロファイルは、nvidia.com/mig-1g.10gbなどの個別のリソースとして公開されます。 -
None(既定値): MIG が構成されていません。
migStrategy フィールドは、ノード プールの作成後は変更できません。
MIG パーティション分割、サポートされている VM サイズ、GPU インスタンス プロファイルの背景については、「 AKS と NVIDIA Multi-Instance GPU でのマルチインスタンス GPU ノード プールの作成 」を 参照してください。
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name mignp \
--node-count 1 \
--node-vm-size Standard_NC24ads_A100_v4 \
--node-taints sku=gpu:NoSchedule \
--enable-managed-gpu=true \
--gpu-instance-profile MIG1g \
--gpu-mig-strategy Single
この構成では、ポッドは標準の nvidia.com/gpu リソース名を使用して GPU リソースを要求します。
マネージド GPU ノード プールを確認する (プレビュー)
ノード プールの準備ができたら、次のチェックを実行して、完全なマネージド スタックがインストールされていて正常であることを確認します。
Node Problem Detector (NPD) から GPU 固有のノード条件を確認します。
GPU_NODE=$(kubectl get nodes -l agentpool=gpunp -o jsonpath='{.items[0].metadata.name}') kubectl describe node $GPU_NODEマネージド GPU ノードでは、次の条件の両方が
Falseを報告する必要があります。状態 地位 理由 UnhealthyNvidiaDevicePluginFalseHealthyNvidiaDevicePluginUnhealthyNvidiaDCGMServicesFalseHealthyNvidiaDCGMServicesマネージド GPU ラベルがノードに存在することを確認します。
kubectl get node $GPU_NODE -o jsonpath='{.metadata.labels.kubernetes\.azure\.com/dcgm-exporter}'予想される出力:
enabled。GPU リソースがノードの割り当て可能なリソースでアドバタイズされていることを確認します。
kubectl get node $GPU_NODE -o jsonpath='{.status.allocatable}'MIG 以外のノード プールの場合、出力には
"nvidia.com/gpu": "1"(SKU に応じて複数) が含まれます。 MIGMixedノード プールの場合、出力には、"nvidia.com/mig-1g.10gb": "7"などの MIG 固有のリソースが含まれます。サンプル ワークロードを実行して、コンテナー内からの GPU アクセスを確認します。
apiVersion: v1 kind: Pod metadata: name: managed-gpu-test spec: restartPolicy: Never tolerations: - key: "sku" operator: "Equal" value: "gpu" effect: "NoSchedule" containers: - name: gpu-test image: mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu command: ["nvidia-smi"] resources: limits: nvidia.com/gpu: 1ポッド ログを表示して、GPU デバイス、ドライバーのバージョン、CUDA のバージョンを示す
nvidia-smi出力を確認します。kubectl logs managed-gpu-test
マネージド GPU ノード プールのスケーリング (プレビュー)
az aks nodepool scaleを使用して、マネージド GPU ノード プールを手動でスケーリングします。 新しいノードは、フル マネージド GPU スタックをインストールします。
az aks nodepool scale \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name gpunp \
--node-count 2
Important
プレビュー期間中、マネージド GPU ノード プールはクラスター オートスケーラーをサポートしていません。 これらのプールを手動でスケーリングします。
別のインストール用プロファイル
フル マネージド スタック プロファイルが適切でない場合、AKS は GPU ノード プールで 2 つの代替プロファイルをサポートします。
このプロファイルは、AKS で NVIDIA GPU ドライバーをインストールして保守するが、デバイス プラグインとメトリック エクスポーターを自分でデプロイする ( NVIDIA GPU オペレーターなど) 場合に使用します。
--enable-managed-gpu=falseを設定します。
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name gpunp \
--node-count 1 \
--node-vm-size Standard_NC6s_v3 \
--node-taints sku=gpu:NoSchedule \
--enable-managed-gpu=false
この構成では、次の操作を行います。
- AKS は NVIDIA GPU ドライバーをインストールして管理します (
gpuProfile.driverはInstall)。 - AKS では、デバイス プラグイン、DCGM メトリック エクスポーター、または GPU 正常性規則はインストールされません。
gpuProfile.nvidiaはnullです。 - デバイス プラグインをデプロイするまで、
nvidia.com/gpuリソースはアドバタイズされません。
次のステップ
- AKS で管理されている GPU 対応ノードに サンプル GPU ワークロード をデプロイします。
- GPU ノード プール上のマネージド NVIDIA DCGM エクスポーターからの GPU 使用率とパフォーマンス メトリック について説明します。
関連資料
- 標準 (管理されていない) GPU エクスペリエンスには、AKS で NVIDIA GPU を使用します。
- MIG パーティション分割とサポートされている VM サイズでバックグラウンド用のマルチインスタンス GPU (MIG) ノード プールを作成します。
- GPU ドライバーとデバイス プラグインを自分で管理するための NVIDIA GPU オペレーター。
- マネージド NVIDIA DCGM エクスポーターからの GPU メトリックを監視します。
- AKS 上の Node Problem Detector (NPD) を使用した GPU 正常性の監視。
- Windows GPU ノード プール用に AKS で Windows GPU を使用します。
- Azure GPU VM のサイズ NVIDIA GPU 対応 VM の完全な一覧。
- 複数の AKS GPU ノードで分散推論を実行します。