クラスター化された VM で GPU を使用する

適用対象: Azure Stack HCI バージョン 23H2 および 22H2

注意

Azure Stack HCI 23H2 で VM を作成および管理する推奨される方法は、 Azure Arc コントロール プレーンを使用することです。 Azure Arc VM で使用できない機能が必要な場合にのみ、以下で説明するメカニズムを使用して VM を管理します。

このトピックでは、Azure Stack HCI オペレーティング システムを実行しているクラスター化された仮想マシン (VM) でグラフィック処理装置 (GPU) を使用して、クラスター化された VM 内のワークロードに GPU アクセラレーションを提供する方法に関するガイダンスを示します。

Azure Stack HCI バージョン 21H2 以降では、Azure Stack HCI クラスターに GPU を含めて、クラスター化された VM で実行されるワークロードに GPU アクセラレーションを提供することができます。 このトピックでは、この機能の基本的な前提条件とそのデプロイ方法について説明します。

GPU アクセラレーションは、GPU パススルーとも呼ばれる Discrete Device Assignment (DDA) によって提供されます。これにより、1 つ以上の物理 GPU を VM に割り当てることができます。 クラスター化された VM では、GPU アクセラレーションと、フェールオーバーによる高可用性などのクラスタリング機能を利用できます。 VM のライブ移行は現在サポートされていませんが、障害の発生時に VM を自動的に再起動して、GPU リソースを使用できる場所に配置することができます。

前提条件

開始するには、Azure Stack HCI バージョン 21H2 を実行する Azure Stack HCI クラスターが必要です。 また、クラスターのすべてのサーバーに物理的に取り付けられている GPU も必要です。

Note

Azure Stack HCI カタログでは、まだ GPU 互換性または認定情報が示されていません。 GPU の取り付けについては、製造元の手順に従ってください。

使用手順

このセクションでは、Windows Admin Center または Windows PowerShell を使用して、GPU の使用のためにクラスター サーバーを準備するために必要な手順について説明します。 クラスター化された GPU リソース プールに 1 つ以上の VM を割り当てたり、クラスター化された GPU リソース プールから VM を削除したりできます。 PowerShell を使用して自動再起動をテストすることもできます。

Windows Admin Center を使用する

Windows Admin Center を使用して、クラスターの準備、GPU リソース プールへの VM の割り当て、および GPU リソース プールからの VM の割り当て解除を行います。

クラスターを準備し、GPU リソース プールに VM を割り当てるには、次のようにします。

  1. [ツール] メニューの [拡張機能] で、[GPU] を選択してツールを開きます。

    Windows Admin Center の GPU ツールのスクリーンショット

  2. ツールのメイン ページで、[GPU プール] タブを選択し、[GPU プールの作成] を選択します。

    Windows Admin Center の [GPU プールの作成] ページのスクリーンショット

  3. [新しい GPU プール] ページで、次の項目を指定し、[保存] を選択します。

    1. サーバー
    2. GPU プール
    3. プールに追加する GPU

    サーバー、プール名、および GPU を指定する、Windows Admin Center の [新しい GPU プール] ページのスクリーンショット

    プロセスが完了すると、新しい GPU プールの名前とホスト サーバーを示す成功プロンプトが表示されます。

  4. [GPU プールへの VM の割り当て] ページで、次の項目を指定し、[割り当て] を選択します。

    1. サーバー
    2. GPU プール
    3. GPU プールから GPU を割り当てる仮想マシン

    また、メモリ マップ I/O (MMIO) 空間の詳細設定値を定義して、単一の GPU のリソース要件を決定することもできます。

    GPU プールの GPU に VM を割り当てる、Windows Admin Center の [GPU プールへの VM の割り当て] ページのスクリーンショット

    プロセスが完了すると、GPU リソース プールの GPU が VM に正常に割り当てられたことを示す確認プロンプトが表示され、VM は [割り当て済み VM] の下に表示されます。

    GPU が VM に割り当てられたことを示す成功プロンプトと、[割り当て済み VM] に表示されている VM のスクリーンショット

GPU リソース プールから VM の割り当てを解除するには、次のようにします。

  1. [GPU プール] タブで、割り当てを解除する GPU を選択し、[VM の割り当て解除] を選択します。

  2. [GPU プールからの VM の割り当て解除] ページの [仮想マシン] リスト ボックスで、VM の名前を指定し、[割り当て解除] を選択します。

    割り当てを解除する VM を示す、[GPU プールからの VM の割り当て解除] ページのスクリーンショット

    プロセスが完了すると、GPU プールから VM の割り当てが解除されたことを示す成功プロンプトが表示され、[割り当ての状態] で GPU は [使用可能 (未割り当て)] と表示されます。

PowerShell の使用

PowerShell を使用して、クラスターの準備、GPU リソース プールへの VM の割り当て、および自動再起動のテストを行います。

クラスターを準備する

各サーバーで GPU を準備するには、「Discrete Device Assignment を使用したグラフィックス デバイスのデプロイ」の手順に従って、各サーバーにセキュリティ軽減ドライバーをインストールし、GPU を無効にして、ホストからマウントを解除します。 ハードウェア ベンダーによっては、GPU ライセンス要件を構成する必要がある場合もあります。

  1. 各サーバーに、クラスター化された GPU リソースを格納する新しい空のリソース プールを作成します。 各サーバーで同じプール名を指定するようにしてください。

    PowerShell で、管理者として次のコマンドレットを実行します。

     New-VMResourcePool -ResourcePoolType PciExpress -Name "GpuChildPool"
    
  2. 前の手順で作成したリソース プールに、各サーバーからマウント解除された GPU を追加します。

    PowerShell で次のコマンドレットを実行します。

     $gpu = Get-VMHostAssignableDevice
    
     Add-VMHostAssignableDevice -HostAssignableDevice $gpu -ResourcePoolName "GpuChildPool"
    

これで、割り当て可能な GPU が指定された、クラスター全体のリソース プール (GpuChildPool という名前) が作成されました。 クラスターでは、このプールを使用して、GPU リソース プールに割り当てられている起動または移動された VM の VM 配置が決定されます。

GPU リソース プールへの VM の割り当て

まず、クラスターで新しい VM を作成するか、既存の VM を見つけます。

Discrete Device Assignment を使用したグラフィックス デバイスのデプロイ」の手順に従って、キャッシュ動作、停止アクション、およびメモリ マップド I/O (MMIO) のプロパティを設定して、DDA 用に VM を準備します。

  1. save ではなく、force-shutdown として、クラスター VM リソースの既定のオフライン アクションを構成し ます。

    PowerShell で次のコマンドレットを実行します。

     Get-ClusterResource -name vmname | Set-ClusterParameter -Name "OfflineAction" -Value 3
    
  2. 以前に作成したリソース プールを VM に割り当てます。 これは、VM で、その起動または移動時に、GpuChildPool プールから割り当てられたデバイスが必要であることをクラスターに宣言します。

    PowerShell で次のコマンドレットを実行します。

     $vm | Add-VMAssignableDevice -ResourcePoolName "GpuChildPool"
    

    Note

    複数の GPU を VM に追加する場合は、まず、リソース プールに複数の割り当て可能な GPU があることを確認してから、前のコマンドをもう一度実行します。

ここで VM を起動すると、クラスターによって、このクラスター全体のプールから使用可能な GPU リソースがあるサーバーに配置されます。 さらにクラスターによって、DDA を介して GPU が VM に割り当てられます。これにより、VM 内のワークロードから GPU にアクセスできるようになります。

Note

また、VM 内のアプリで、それらに割り当てられている GPU を利用できるように、VM 内に GPU 製造元からのドライバーをインストールする必要もあります。

割り当てられている GPU を VM から削除することもできます。 そのためには、PowerShell で次のコマンドレットを実行します。

 Get-VMAssignableDevice -VMName $vm | Where-Object { $_.ResourcePoolName -eq "GpuChildPool" } | Remove-VMAssignableDevice

割り当てられた GPU による VM のフェールオーバー

GPU ワークロードを使用可能な状態に維持するクラスターの機能をテストするには、VM が割り当てられた GPU で実行されているサーバーで、ドレイン操作を実行します。 サーバーをドレインするには、「フェールオーバー クラスターのメンテナンス手順」の手順に従います。 クラスターによって、クラスター内の別のサーバー上の VM が再起動されます。ただし、別のサーバーで、作成したプール内に使用可能な十分な GPU リソースがある場合に限ります。

次のステップ

詳細については、次のトピックも参照してください。