準備適用於 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-PnpDevice
GPU:
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-PnpDevice
GPU:
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 本機中的所有機器上都是同質的。
線上到您要設定其 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
若要讓設定保持同質,請在系統中的每部計算機上重複數據分割計數設定步驟。
來賓需求
下列 Arc VM 工作負載支援 GPU 管理:
第 2 代 VM
支援的64位作業系統,如最新 NVIDIA vGPU支援的產品中所述