Azure Stack HCI の GPU を準備する (プレビュー)
適用対象: Azure Stack HCI バージョン 23H2
この記事では、Azure Arc によって有効になっている Arc 仮想マシン (VM) と AKS で実行される計算負荷の高いワークロード用に、Azure Stack HCI 用のグラフィカル処理ユニット (GPU) を準備する方法について説明します。GPU は、機械学習やディープ ラーニングなどの計算負荷の高いワークロードに使用されます。
重要
現在、この機能はプレビュー段階にあります。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。
Azure Stack HCI への GPU のアタッチ
AZURE Stack HCI には、次の 2 つの方法のいずれかで GPU をアタッチできます。
ディスクリート デバイス割り当て (DDA) - 物理 GPU をワークロード専用にできます。 DDA の展開では、仮想化されたワークロードはネイティブ ドライバー上で実行され、通常は GPU の機能にフル アクセスできます。 DDA は、最も高いレベルのアプリ互換性と潜在的なパフォーマンスを提供します。
GPU パーティション分割 (GPU-P) - GPU を専用の小数パーティションに分割することで、GPU を複数のワークロードと共有できます。
次の機能を検討し、GPU を使用する 2 つのオプションの違いをサポートします。
説明 | 個別のデバイスの割り当て | GPU パーティション分割 |
---|---|---|
GPU リソース モデル | デバイス全体 | 均等にパーティション分割されたデバイス |
VM 密度 | 低 (1 つの GPU から 1 つの VM) | High (1 GPU から多数の VM) |
アプリの互換性 | ベンダーから提供されるすべての GPU 機能 (DX 12、OpenGL、CUDA) | ベンダーから提供されるすべての GPU 機能 (DX 12、OpenGL、CUDA) |
GPU VRAM | GPU でサポートされている VRAM まで | パーティションごとに GPU でサポートされる最大 VRAM |
ゲスト内の GPU ドライバー | GPU ベンダー ドライバー (NVIDIA) | GPU ベンダー ドライバー (NVIDIA) |
サポートされている GPU モデル
サポートされているソリューションと使用可能な GPU の完全な一覧については、「 Azure Stack HCI ソリューション」を参照し 左側のメニューで GPU サポート を選択してオプションを確認してください。
NVIDIA は、仮想 GPU ソフトウェアを使用してワークロードを個別にサポートします。 詳細については、「 Microsoft Azure Stack HCI - サポートされている NVIDIA GPU と検証済みサーバー プラットフォームを参照してください。
AKS ワークロードについては、AKS for Arc の GPU に関するを参照してください。
次の GPU モデルは、Arc VM ワークロードに DDA と GPU-P の両方を使用してサポートされています。
- NVIDIA A2
- NVIDIA A16
次の追加 GPU モデルは、Arc VM ワークロードに GPU-P (のみ) を使用してサポートされます。
- NVIDIA A10
- NVIDIA A40
- NVIDIA L4
- NVIDIA L40
- NVIDIA L40S
ホストの要件
Azure Stack HCI ホストは、次の要件を満たしている必要があります。
システムは、GPU をサポートする Azure Stack HCI ソリューションをサポートする必要があります。 オプションを参照するには、 Azure Stack HCI カタログを参照してください。
Azure Stack HCI バージョン 23H2 クラスターにアクセスできます。
クラスター内のすべてのサーバーで GPU の同種構成を作成する必要があります。 均一な構成は、GPU の同じ製造元とモデルのインストールで構成されます。
GPU-P の場合は、クラスター内の各サーバーの BIOS で仮想化のサポートと SR-IOV が有効になっていることを確認します。 BIOS で正しい設定を識別できない場合は、システム ベンダーに問い合わせてください。
各ホストで GPU ドライバーを準備する
各ホスト サーバーの GPU ドライバーを準備してインストールするプロセスは、DDA と GPU-P で多少異なります。 状況に応じて、該当するプロセスに従います。
各ホストで GPU を検索する
まず、ホスト サーバーごとにドライバーがインストールされていないことを確認します。 ホスト ドライバーがインストールされている場合は、ホスト ドライバーをアンインストールし、サーバーを再起動します。
ホスト ドライバーをアンインストールした後、またはドライバーがインストールされていない場合は、次のコマンドを使用して管理者として PowerShell を実行します。
Get-PnpDevice -Status Error | fl FriendlyName, InstanceId
GPU のフレンドリ名とインスタンス ID を一覧表示する出力例に示すように、GPU デバイスは 3D Video Controller
エラー状態で表示されます。
[ASRR1N26R02U46A]: PS C:\Users\HCIDeploymentUser\Documents> Get-PnpDevice - Status Error
Status Class FriendlyName
------ ----- ------------
Error SD Host Controller
Error 3D Video Controller
Error 3D Video Controller
Error USB Unknown USB Device (Device Descriptor Request Failed)
[ASRR1N26R02U46A]: PS C:\Users\HCIDeploymentUser\Documents> Get-PnpDevice - Status Error | f1 InstanceId
InstanceId : PCI\VEN_8086&DEV_18DB&SUBSYS_7208086REV_11\3&11583659&0&E0
InstanceId : PCI\VEN_10DE&DEV_25B6&SUBSYS_157E10DE&REV_A1\4&23AD3A43&0&0010
InstanceId : PCI\VEN_10DE&DEV_25B6&SUBSYS_157E10DE&REV_A1\4&17F8422A&0&0010
InstanceId : USB\VID_0000&PID_0002\S&E492A46&0&2
DDA の使用
DDA を使用する場合は、次の手順に従います。
1. ホストから GPU を無効にしてマウント解除する
DDA の場合、ホスト ドライバーをアンインストールするか、新しい Azure Stack HCI クラスターをセットアップすると、物理 GPU はエラー状態になります。 続行するには、すべての GPU デバイスのマウントを解除する必要があります。 デバイス マネージャーまたは PowerShell を使用して、前の手順で取得したInstanceID
を使用して GPU を無効にし、マウントを解除できます。
$id1 = "GPU_instance_ID"
Disable-PnpDevice -InstanceId $id1 -Confirm:$false
Dismount-VMHostAssignableDevice -InstancePath $id1 -Force
GPU がホストから正しくマウント解除されたことを確認します。 GPU は Unknown
状態になります。
Get-PnpDevice -Status Unknown | fl FriendlyName, InstanceId
このプロセスを Azure Stack HCI クラスター内の各サーバーに対して繰り返して、GPU を準備します。
2. 軽減ドライバーをダウンロードしてインストールする
本ソフトウェアには、NVIDIA Corporation またはそのライセンサーによって開発および所有されているコンポーネントが含まれる場合があります。 これらのコンポーネントの使用は、 NVIDIA エンド ユーザー 使用許諾契約書によって管理されます。
該当する NVIDIA 軽減ドライバーをダウンロードするにはNVIDIA のドキュメントを参照してください。 ドライバーをダウンロードした後、アーカイブを展開し、各ホスト サーバーに軽減ドライバーをインストールします。 次の PowerShell スクリプトを使用して軽減ドライバーをダウンロードし、抽出します。
Invoke-WebRequest -Uri "https://docs.nvidia.com/datacenter/tesla/gpu-passthrough/nvidia_azure_stack_inf_v2022.10.13_public.zip" -OutFile "nvidia_azure_stack_inf_v2022.10.13_public.zip"
mkdir nvidia-mitigation-driver
Expand-Archive .\nvidia_azure_stack_inf_v2022.10.13_public.zip .\nvidia-mitigation-driver
軽減ドライバー ファイルが抽出されたら、GPU の正しいモデルのバージョンを見つけてインストールします。 たとえば、NVIDIA A2 軽減ドライバーをインストールする場合は、次を実行します。
pnputil /add-driver nvidia_azure_stack_A2_base.inf /install /force
これらのドライバーのインストールを確認するには、次を実行します。
pnputil /enum-devices OR pnputil /scan-devices
Get-PnpDevice
で正しく識別された GPU を確認できる必要があります。
Get-PnpDevice -Class Display | fl FriendlyName, InstanceId
Azure Stack HCI クラスター内のホストごとに上記の手順を繰り返します。
GPU-P の使用
GPU-P を使用する場合は、次の手順に従います。
ホスト ドライバーをダウンロードしてインストールする
GPU-P には、DDA とは異なるホスト レベルのドライバーが必要です。 NVIDIA GPU の場合、GPU-P を使用する各ホストと各 VM に NVIDIA vGPU ソフトウェア グラフィックス ドライバーが必要です。 詳細については、最新バージョンの NVIDIA vGPU ドキュメントを参照してください ライセンスの詳細については、 Client ライセンス ユーザー ガイドを参照してください。
ホスト サーバーで GPU を 3D Video Controller
として識別した後、ホスト vGPU ドライバーをダウンロードします。 NVIDIA GRID ライセンスを使用して、適切なホスト ドライバー .zip ファイルを取得できる必要があります。
次のフォルダーを取得してホスト サーバーに移動する必要があります: \vGPU_<Your_vGPU_version>_GA_Azure_Stack_HCI_Host_Drivers
\vGPU_<Your_vGPU_version>_GA_Azure_Stack_HCI_Host_Drivers\Display.Driver に移動し、ドライバーをインストールします。
pnputil /add-driver .\nvgridswhci.inf /install /force
これらのドライバーのインストールを確認するには、次を実行します。
pnputil /enum-devices
Get-PnpDevice
で正しく識別された GPU を確認できる必要があります。
Get-PnpDevice -Class Display | fl FriendlyName, InstanceId
NVIDIA システム管理インターフェイス nvidia-smi
を実行して、ホスト サーバー上の GPU を次のように一覧表示することもできます。
nvidia-smi
ドライバーが正しくインストールされている場合は、次のサンプルのような出力が表示されます。
Wed Nov 30 15:22:36 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 527.27 Driver Version: 527.27 CUDA Version: N/A |
|-------------------------------+----------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA A2 WDDM | 00000000:65:00.0 Off | 0 |
| 0% 24C P8 5W / 60W | 15192MiB / 15356MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 1 NVIDIA A2 WDDM | 00000000:66:00.0 Off | 0 |
| 0% 24C P8 5W / 60W | 15192MiB / 15356MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
GPU パーティション数の構成
PowerShell で GPU パーティション数を構成するには、次の手順に従います。
Note
PowerShell を使用する場合は、Azure Stack HCI クラスター内のすべてのサーバーで GPU 構成が同種であることを手動で確認する必要があります。
GPU パーティション数を構成するサーバーに接続します。
Get-VMHostPartitionableGpu
コマンドを実行し、Name と ValidPartitionCounts の値を参照します。次のコマンドを実行してパーティション数を構成します。
GPU-name
を Name 値に置き換え、partition-count
を ValidPartitionCounts 値のサポートされている数のいずれかに置き換えます。Set-VMHostPartitionableGpu -Name "<GPU-name>" -PartitionCount <partition-count>
たとえば、次のコマンドは、パーティション数を
4
するように構成します。PS C:\Users> Set-VMHostPartitionableGpu -Name "\\?\PCI#VEN_10DE&DEV_25B6&SUBSYS_157E10DE&REV_A1#4&18416dc3&0&0000#{064092b3-625e-43bf-9eb5-dc845897dd59}" -PartitionCount 4
コマンド
Get-VMHostPartitionableGpu | FL Name,ValidPartitionCounts,PartitionCount
をもう一度実行して、パーティション数が4
に設定されていることを確認できます。出力例を次に示します。
PS C:\Users> Get-VMHostPartitionableGpu | FL Name,ValidPartitionCounts,PartitionCount Name : \\?\PCI#VEN_10DE&DEV_25B6&SUBSYS_157E10DE&REV_A1#4&18416dc3&0&0000#{064092b3-625e-43bf-9eb5-dc845897dd59} ValidPartitionCounts : {16, 8, 4, 2...} PartitionCount : 4 Name : \\?\PCI#VEN_10DE&DEV_25B6&SUBSYS_157E10DE&REV_A1#4&5906f5e&0&0010#{064092b3-625e-43bf-9eb5-dc845897dd59} ValidPartitionCounts : {16, 8, 4, 2...} PartitionCount : 4
構成を均一に保つために、Azure Stack HCI クラスター内の各サーバーでパーティション数の構成手順を繰り返します。
ゲストの要件
GPU 管理は、次の Arc VM ワークロードでサポートされています。
第 2 世代 VM
サポートされている最新の NVIDIA vGPU でサポートされている製品で詳しく説明されている、サポートされている 64 ビット OS