使用 GPU 搭配叢集式 VM

適用於:Azure Stack HCI 21H2 版

本主題可指引您如何使用圖形處理器 (GPU) 搭配執行 Azure Stack HCI 作業系統,的叢集式虛擬機器 (VM),為叢集式 VM 中的工作負載提供 GPU 加速。

從 Azure Stack HCI 21H2 版開始,您可以在 Azure Stack HCI 叢集中包含 GPU,對在叢集式 VM 中執行的工作負載提供 GPU 加速。 本主題涵蓋這項功能的基本必要條件及其部署方式。

GPU 加速是透過離散裝置指派 (DDA,也稱為 GPU 傳遞) 提供,可讓您將一或多個實體 GPU 專用於 VM。 叢集式 VM 可以利用 GPU 加速和叢集功能,例如透過容錯移轉的高可用性。 目前不支援即時移轉 VM,但 VM 可在發生失敗時自動重新啟動並放置在有可用 GPU 資源之處。

必要條件

若要開始使用,您需要至少有兩部伺服器執行 Azure Stack HCI 21H2 版的 Azure Stack HCI 叢集。 您也需要在叢集的每一部伺服器上實際安裝的 GPU。

注意

Azure Stack HCI 目錄尚未指出 GPU 相容性或認證資訊。 請遵循製造商的 GPU 安裝指示。

使用指示

本節描述使用 Windows Admin Center 或 Windows PowerShell 來執行下列動作所需的步驟:準備您的叢集伺服器以使用 GPU 使用。 您可以將一或多個 VM 指派給叢集式 GPU 資源集區,以及從叢集式 GPU 資源集區中移除 VM。 您也可以使用 PowerShell 來測試自動重新啟動。

使用 Windows Admin Center

使用 Windows Admin Center 來準備叢集、將 VM 指派給 gpu 資源集區,以及取消指派 VM 給 GPU 資源集區。

若要準備叢集並將 VM 指派給 GPU 資源集區:

  1. 在 [工具] 功能表的 [延伸模組] 下,選取 [GPU] 以開啟工具。

    Screenshot of the GPU tool in Windows Admin Center

  2. 在工具的主頁面上,選取 [GPU 集區] 索引標籤,然後選取 [建立 GPU 集區]。

    Screenshot of the Create GPU pools page in Windows Admin Center

  3. 在 [新增 GPU 集區] 頁面上,指定下列各項,然後選取 [儲存]:

    1. 伺服器名稱
    2. GPU 集區名稱
    3. 您要新增至集區的 GPU

    Screenshot of the New GPU pool page in Windows Admin Center to specify servers, pool name, and GPUs

    此流程完成後,您會收到成功提示,其中顯示新 GPU 集區和主機伺服器的名稱。

  4. 在 [將 VM 指派給 GPU 集區] 頁面上,指定下列各項,然後選取 [指派]:

    1. 伺服器名稱
    2. GPU 集區名稱
    3. 您要從 GPU 集區將 GPU 指派給其的虛擬機器

    您也可以定義記憶體對應 IO (MMIO) 空間的進階設定值,以判斷單一 GPU 的資源需求。

    Screenshot of the Assign VM to GPU pool page in Windows Admin Center where you assign a VM to a GPU from the GPU pool

    此流程完成後,您會收到確認提示,其中顯示您已成功將 GPU 從 GPU 資源集區指派給 VM,而此 VM 會顯示在 [指派的 VM] 下。

    Screenshot of success prompt showing GPU assigned to a VM and the VM displaying under Assigned VMs

若要從 GPU 資源集區取消指派 VM:

  1. 在 [GPU 集區] 索引標籤上,選取您要取消指派的 GPU,然後選取 [取消指派 VM]。

  2. 在 [從 GPU 集區取消指派 VM] 頁面的 [虛擬機器] 清單方塊中,指定 VM 的名稱,然後選取 [取消指派]。

    Screenshot of Unassign VM from GPU pool page showing VM to be unassigned

    此流程完成後,您會收到成功提示,其中指出已從 GPU 集區取消指派 VM,並在 GPU 的 [指派狀態] 下,顯示 [可用 (未指派)]。

使用 PowerShell

使用 PowerShell 來準備叢集、將 VM 指派給 GPU 資源集區,以及測試自動重新啟動。

準備叢集

在每部伺服器中準備 GPU,方法是在每部伺服器上安裝安全性風險降低驅動程式、停用 GPU,然後根據使用離散裝置指派來部署圖形裝置中的指示,從主機卸載這些 GPU。 您可能也需要設定任何 GPU 授權需求,取決於您的硬體廠商。

  1. 在每部伺服器上建立新的空白資源集區,其中將包含叢集式 GPU 資源。 請務必在每部伺服器上提供相同的集區名稱。

    在 PowerShell 中,以管理員身分執行下列 Cmdlet:

     New-VMResourcePool -ResourcePoolType PciExpress -Name "GpuChildPool"
    
  2. 將卸載的 GPU 從每部伺服器新增至您在上一個步驟中建立的資源集區。

    在 PowerShell 中,執行下列 Cmdlet:

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

您現在已有一個全叢集資源集區 (名為 GpuChildPool),其中已填入可指派的 GPU。 此叢集將會使用此集區,來判斷指派給 GPU 資源集區的 VM 在啟動或移動後如何放置。

將 VM 指派給 GPU 資源集區

首先,在叢集中建立新的 VM,或尋找現有的 VM。

為 DDA 準備 VM,方法是根據使用離散裝置指派來部署圖形裝置中的指示,設定快取行為、停止動作和記憶體對應 I/O (MMIO) 屬性。

  1. 將叢集 VM 資源的預設離線動作設定為 force-shutdown,而不是 save

    在 PowerShell 中,執行下列 Cmdlet:

     Get-ClusterResource -name vmname | Set-ClusterParameter -Name "OfflineAction" -Value 3
    
  2. 將您稍早建立的資源集區指派給 VM。 這會向叢集宣告 VM 在啟動或移動時,需要從 GpuChildPool 集區中指派的裝置。

    在 PowerShell 中,執行下列 Cmdlet:

     $vm | Add-VMAssignableDevice -ResourcePoolName "GpuChildPool"
    

    注意

    如果您想要將多個 GPU 新增至 VM,請先驗證資源集區是否具有多個可指派的可用 GPU,然後再次執行上一個命令。

如果您現在啟動 VM,叢集可確保其會放置在具有可用 GPU 資源 (來自這個全叢集集區) 的伺服器上。 叢集也會透過 DDA 將 GPU 指派給 VM,進而允許從 VM 內的工作負載存取 GPU。

注意

您也需要在 VM 內安裝 GPU 製造商提供的驅動程式,讓 VM 中的應用程式可以利用指派給其 GPU。

您也可以從 VM 移除指派的 GPU。 若要這樣做,請在 PowerShell 中,執行下列 Cmdlet:

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

使用指派的 GPU 容錯移轉至 VM

若要測試叢集是否能夠讓您的 GPU 工作負載保持可用,請在執行 VM 的伺服器上,使用指派的 GPU 執行清空作業。 若要清空伺服器,請遵循容錯移轉叢集維護程序中的指示。 只要另一部伺服器在您建立的集區中有足夠的可用 GPU 資源,叢集就會在叢集中的另一部伺服器上重新啟動 VM。

後續步驟

如需詳細資訊,請參閱: