次の方法で共有


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 構成が同種であることを手動で確認する必要があります。

  1. GPU パーティション数を構成するサーバーに接続します。

  2. Get-VMHostPartitionableGpu コマンドを実行し、NameValidPartitionCounts の値を参照します。

  3. 次のコマンドを実行してパーティション数を構成します。 GPU-nameName 値に置き換え、 partition-countValidPartitionCounts 値のサポートされている数のいずれかに置き換えます。

    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
    
  4. 構成を均一に保つために、Azure Stack HCI クラスター内の各サーバーでパーティション数の構成手順を繰り返します。

ゲストの要件

GPU 管理は、次の Arc VM ワークロードでサポートされています。

次のステップ