Preparare le GPU per Azure locale (anteprima)
Si applica a: Locale di Azure 2311.2 e versioni successive
Questo articolo descrive come preparare le unità di elaborazione grafica (GPU) nell'istanza locale di Azure per carichi di lavoro a elevato utilizzo di calcolo in esecuzione in macchine virtuali Arc e il servizio Azure Kubernetes abilitato da Azure Arc. Le GPU vengono usate per carichi di lavoro a elevato utilizzo di calcolo, ad esempio Machine Learning e Deep Learning.
Importante
La funzionalità è attualmente disponibile in ANTEPRIMA. Vedere le condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure per termini legali aggiuntivi che si applicano a funzionalità di Azure in versione beta, in anteprima o in altro modo non ancora disponibili a livello generale.
Collegamento di GPU in Locale di Azure
È possibile collegare le GPU in uno dei due modi seguenti:
Assegnazione di dispositivi discreti : consente di dedicare una GPU fisica al carico di lavoro. In una distribuzione DDA, i carichi di lavoro virtualizzati vengono eseguiti nel driver nativo e in genere hanno accesso completo alle funzionalità della GPU. DDA offre il massimo livello di compatibilità delle app e potenziali prestazioni.
Partizionamento GPU (GPU-P): consente di condividere una GPU con più carichi di lavoro suddividendo la GPU in partizioni frazionarie dedicate.
Considerare le funzionalità seguenti e le differenze di supporto tra le due opzioni dell'uso delle GPU:
Descrizione | Assegnazione di dispositivi discreti | Partizionamento GPU |
---|---|---|
Modello di risorsa GPU | Intero dispositivo | Dispositivo partizionato equamente |
Densità di macchine virtuali | Bassa (da una GPU a una macchina virtuale) | Elevato (da una GPU a molte macchine virtuali) |
Compatibilità delle app | Tutte le funzionalità della GPU offerte dal fornitore (DX 12, OpenGL, CUDA) | Tutte le funzionalità della GPU offerte dal fornitore (DX 12, OpenGL, CUDA) |
VRAM della GPU | Fino a livello di VRAM supportata dalla GPU | Fino a livello di VRAM supportata dalla GPU per partizione |
Driver GPU nel guest | Driver del fornitore GPU (NVIDIA) | Driver del fornitore GPU (NVIDIA) |
Modelli GPU supportati
Per visualizzare l'elenco completo delle soluzioni supportate e delle GPU disponibili, vedere Soluzioni locali di Azure e selezionare Supporto GPU nel menu a sinistra per le opzioni.
NVIDIA supporta i carichi di lavoro separatamente con il software GPU virtuale. Per altre informazioni, vedere GPU NVIDIA supportate in Microsoft Azure e Piattaforme server convalidate.
Per i carichi di lavoro del servizio Azure Kubernetes, vedere GPU per il servizio Azure Kubernetes per Arc.
I modelli GPU seguenti sono supportati usando sia DDA che GPU-P per carichi di lavoro di macchine virtuali Arc:
- NVIDIA A2
- NVIDIA A16
Questi modelli GPU aggiuntivi sono supportati usando GPU-P (solo) per i carichi di lavoro di macchine virtuali Arc:
- NVIDIA A10
- NVIDIA A40
- NVIDIA L4
- NVIDIA L40
- NVIDIA L40S
Requisiti dell'host
L'host locale di Azure deve soddisfare i requisiti seguenti:
Il sistema deve supportare una soluzione locale di Azure con supporto GPU. Per esplorare le opzioni, vedere catalogo locale di Azure.
Si ha accesso ad Azure Locale, versione 23H2.
È necessario creare una configurazione omogenea per le GPU in tutti i computer del sistema. Una configurazione omogenea consiste nell'installare lo stesso make e modello di GPU.
Per GPU-P, assicurarsi che il supporto della virtualizzazione e SR-IOV siano abilitati nel BIOS di ogni computer nel sistema. Contattare il fornitore dell'hardware se non è possibile identificare l'impostazione corretta nel BIOS.
Preparare i driver GPU in ogni host
Il processo di preparazione e installazione dei driver GPU per ogni computer è leggermente diverso tra DDA e GPU-P. Seguire il processo applicabile per la situazione.
Trovare GPU in ogni host
Verificare prima di tutto che non sia installato alcun driver per ogni computer. Se è installato un driver host, disinstallare il driver host e riavviare il computer.
Dopo aver disinstallato il driver host o se non è stato installato alcun driver, eseguire PowerShell come amministratore con il comando seguente:
Get-PnpDevice -Status Error | fl FriendlyName, ClusterId
I dispositivi GPU verranno visualizzati in uno stato di errore, come 3D Video Controller
illustrato nell'output di esempio che elenca il nome descrittivo e l'ID istanza della 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
Uso di DDA
Seguire questo processo se si usa DDA:
1. Disabilitare e smontare le GPU dall'host
Per DDA, quando si disinstalla il driver host o si dispone di una nuova configurazione locale di Azure, la GPU fisica entra in uno stato di errore. Per continuare, è necessario smontare tutti i dispositivi GPU. È possibile usare Gestione dispositivi o PowerShell per disabilitare e smontare la GPU usando l'oggetto ClusterID
ottenuto nel passaggio precedente.
$id1 = "GPU_instance_ID"
Disable-PnpDevice -ClusterId $id1 -Confirm:$false
Dismount-VMHostAssignableDevice -ClusterPath $id1 -Force
Verificare che le GPU siano state smontate correttamente dal computer host. Le GPU saranno ora in Unknown
uno stato:
Get-PnpDevice -Status Unknown | fl FriendlyName, ClusterId
Ripetere questo processo per ogni computer del sistema per preparare le GPU.
2. Scaricare e installare il driver di mitigazione
Il software potrebbe includere componenti sviluppati e di proprietà di NVIDIA Corporation o dei suoi licenze. L'uso di questi componenti è disciplinato dal contratto di licenza dell'utente finale NVIDIA.
Vedere la documentazione NVIDIA per scaricare il driver di mitigazione NVIDIA applicabile. Dopo aver scaricato il driver, espandere l'archivio e installare il driver di mitigazione in ogni computer host. Usare lo script di PowerShell seguente per scaricare il driver di mitigazione ed estrarlo:
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
Dopo aver estratto i file del driver di mitigazione, trovare la versione per il modello corretto della GPU e installarla. Ad esempio, se si installa un driver di mitigazione NVIDIA A2, eseguire quanto segue:
pnputil /add-driver nvidia_azure_stack_A2_base.inf /install /force
Per confermare l'installazione di questi driver, eseguire:
pnputil /enum-devices OR pnputil /scan-devices
Dovrebbe essere possibile visualizzare le GPU identificate correttamente in Get-PnpDevice
:
Get-PnpDevice -Class Display | fl FriendlyName, ClusterId
Ripetere i passaggi precedenti per ogni host nell'istanza locale di Azure.
Uso di GPU-P
Seguire questo processo se si usa GPU-P:
Scaricare e installare il driver host
GPU-P richiede driver a livello di host diversi da DDA. Per le GPU NVIDIA, è necessario un driver di grafica software NVIDIA vGPU in ogni host e in ogni macchina virtuale che userà GPU-P. Per altre informazioni, vedere la versione più recente della documentazione di NVIDIA vGPU e i dettagli sulle licenze nella Guida per l'utente delle licenze client.
Dopo aver identificato le GPU come 3D Video Controller
nel computer host, scaricare il driver vGPU host. Tramite la licenza NVIDIA GRID, si dovrebbe essere in grado di ottenere il driver host appropriato .zip file.
Sarà necessario ottenere e spostare la cartella seguente nel computer host: \vGPU_<Your_vGPU_version>_GA_Azure_Stack_HCI_Host_Drivers
Passare a \vGPU_<Your_vGPU_version>_GA_Azure_Stack_HCI_Host_Drivers\Display.Driver e installare il driver.
pnputil /add-driver .\nvgridswhci.inf /install /force
Per confermare l'installazione di questi driver, eseguire:
pnputil /enum-devices
Dovrebbe essere possibile visualizzare le GPU identificate correttamente in Get-PnpDevice
:
Get-PnpDevice -Class Display | fl FriendlyName, ClusterId
È anche possibile eseguire l'interfaccia nvidia-smi
di gestione del sistema NVIDIA per elencare le GPU nel computer host come indicato di seguito:
nvidia-smi
Se il driver è installato correttamente, verrà visualizzato un output simile all'esempio seguente:
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 |
+-----------------------------------------------------------------------------+
Configurare il numero di partizioni GPU
Seguire questa procedura per configurare il numero di partizioni GPU in PowerShell:
Nota
Quando si usa PowerShell, è necessario assicurarsi che la configurazione della GPU sia omogenea in tutti i computer nell'istanza locale di Azure.
Connettersi al computer il cui numero di partizioni GPU si vuole configurare.
Eseguire il
Get-VMHostPartitionableGpu
comando e fare riferimento ai valori Name e ValidPartitionCounts .Eseguire il comando seguente per configurare il numero di partizioni. Sostituire
GPU-name
con il valore Name epartition-count
con uno dei numeri supportati dal valore ValidPartitionCounts:Set-VMHostPartitionableGpu -Name "<GPU-name>" -PartitionCount <partition-count>
Ad esempio, il comando seguente configura il numero di partizioni in
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
È possibile eseguire di nuovo il comando
Get-VMHostPartitionableGpu | FL Name,ValidPartitionCounts,PartitionCount
per verificare che il numero di partizioni sia impostato su4
.Di seguito è riportato un output di esempio:
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
Per mantenere omogenea la configurazione, ripetere i passaggi di configurazione del numero di partizioni in ogni computer del sistema.
Requisiti guest
La gestione GPU è supportata per i carichi di lavoro di macchine virtuali Arc seguenti:
Macchine virtuali di seconda generazione
Un sistema operativo a 64 bit supportato come descritto nella versione più recente del supporto di NVIDIA vGPU Supported Products