共用方式為


準備適用於 Azure 本機的 GPU (預覽)

適用於:Azure 本機版本 23H2

本文說明如何在 Azure 本機實例上準備圖形處理單位(GPU),以在 Azure Arc 所啟用的 Arc 虛擬機(VM)和 AKS 上執行的計算密集型工作負載。GPU 用於計算密集型工作負載,例如機器學習和深度學習。

重要

這項功能目前為「預覽」狀態。 請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。

在 Azure 本機連結 GPU

您可以使用 Azure 本機的兩種方式之一來連結您的 GPU:

  • 離散裝置指派 (DDA) - 可讓您將實體 GPU 奉獻給工作負載。 在 DDA 部署中,虛擬化工作負載會在原生驅動程式上執行,而且通常可以完全存取 GPU 功能。 DDA 提供最高層級的應用程式相容性和潛在效能。

  • GPU 分割 (GPU-P) - 可讓您將 GPU 分割成專用的小數分割區,與多個工作負載共用 GPU。

請考慮使用 GPU 的兩個選項之間的下列功能和支援差異:

描述 離散裝置指派 GPU 分割
GPU 資源模型 整個裝置 同樣分割的裝置
VM 密度 低 (GPU 到一個 VM) 高 (一個 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 本機解決方案 ,並在左側功能表中選取 GPU 支援 以取得選項。

NVIDIA 會使用其虛擬 GPU 軟體,分別支援其工作負載。 如需詳細資訊,請參閱 Microsoft Azure 本機 - 支援的 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 本機主機必須符合下列需求:

  • 您的系統必須支援具有 GPU 支援的 Azure 本機解決方案。 若要瀏覽您的選項,請參閱 Azure 本機目錄

  • 您可以存取 Azure 本機版本 23H2。

  • 您必須為系統中所有機器的 GPU 建立同質設定。 同質組態是由安裝相同的 GPU 製造和模型所組成。

  • 針對 GPU-P,請確定虛擬化支援和 SR-IOV 會在系統中每部電腦的 BIOS 中啟用。 如果您無法識別 BIOS 中的正確設定,請連絡硬體廠商。

在每個主機上準備 GPU 驅動程式

準備和安裝每部計算機的 GPU 驅動程式的程式在 DDA 和 GPU-P 之間有些不同。 請遵循適用於您情況的程式。

尋找每個主機上的 GPU

首先,請確定每部機器未安裝任何驅動程式。 如果已安裝主機驅動程式,請卸載主機驅動程式並重新啟動電腦。

卸載主機驅動程式或未安裝任何驅動程序之後,請使用下列命令以系統管理員身分執行 PowerShell:

Get-PnpDevice -Status Error | fl FriendlyName, ClusterId

您應該看到 GPU 裝置顯示為錯誤狀態,如 3D Video Controller 列出 GPU 易記名稱和實例識別碼的範例輸出所示:

[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 本機設定時,實體 GPU 會進入錯誤狀態。 您必須卸除所有 GPU 裝置才能繼續。 您可以使用 裝置管理員 或 PowerShell,使用ClusterID在上一個步驟中取得的 停用和卸除 GPU。

$id1 = "GPU_instance_ID"
Disable-PnpDevice -ClusterId $id1 -Confirm:$false
Dismount-VMHostAssignableDevice -ClusterPath $id1 -Force

確認 GPU 已從主電腦正確卸除。 GPU 現在會處於 Unknown 狀態:

Get-PnpDevice -Status Unknown | fl FriendlyName, ClusterId

針對您系統中的每部電腦重複此程式,以準備 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-PnpDeviceGPU:

Get-PnpDevice -Class Display | fl FriendlyName, ClusterId

針對 Azure 本機中的每個主機重複上述步驟。

使用 GPU-P

如果使用 GPU-P,請遵循此程式:

下載並安裝主機驅動程式

GPU-P 需要與 DDA 不同的主機層級驅動程式。 針對 NVIDIA GPU,您需要每個主機上的 NVIDIA vGPU 軟體圖形驅動程式,以及將使用 GPU-P 的每個 VM。 如需詳細資訊,請參閱最新版的 NVIDIA vGPU 檔和用戶端授權使用者指南授權的詳細數據。

將 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-PnpDeviceGPU:

Get-PnpDevice -Class Display | fl FriendlyName, ClusterId

您也可以執行 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 磁碟分區計數:

注意

使用 PowerShell 時,您必須手動確定 GPU 設定在 Azure 本機中的所有機器上都是同質的。

  1. 線上到您要設定其 GPU 磁碟分區計數的電腦。

  2. 執行 命令並 Get-VMHostPartitionableGpu 參考 NameValidPartitionCounts 值。

  3. 執行下列命令來設定分割區計數。 將 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
    
  4. 若要讓設定保持同質,請在系統中的每部計算機上重複數據分割計數設定步驟。

來賓需求

下列 Arc VM 工作負載支援 GPU 管理:

下一步