Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'esecuzione di carichi di lavoro GPU NVIDIA in Servizio Azure Kubernetes (AKS) richiede tradizionalmente di installare e gestire il driver GPU NVIDIA, il plug-in del dispositivo Kubernetes e un utilità di esportazione delle metriche GPU in ogni nodo GPU. Questi componenti consentono la pianificazione GPU, l'accesso gpu a livello di contenitore e i dati di telemetria, ma l'installazione manuale o tramite l'operatore GPU NVIDIA comporta un sovraccarico operativo.
Con nodi GPU completamente gestiti (anteprima), AKS installa e gestisce automaticamente per te il driver NVIDIA GPU, il plug-in del dispositivo e l'esportatore di metriche di Data Center GPU Manager (DCGM). La creazione del pool di nodi GPU diventa un singolo passaggio e la capacità GPU si comporta come qualsiasi altro pool di nodi del servizio Azure Kubernetes.
È possibile configurare un pool di nodi GPU gestito tramite due campi in gpuProfile.nvidia:
-
managementMode(ManagedoUnmanaged) controlla se AKS installa lo stack GPU gestito completo (driver, plugin del dispositivo e esportatore di metriche DCGM) o solo il driver. Il valore predefinito èUnmanaged. -
migStrategy(None,SingleoMixed) imposta la strategia MIG (Multi-Instance GPU) per GLI SKU GPU supportati, ad esempio A100 e H100. Il valore predefinito èNone.
In questo articolo viene effettuato il provisioning di un pool di nodi GPU gestito, facoltativamente si abilita MIG, si verifica lo stack ed esegue un carico di lavoro GPU di esempio.
Importante
Le funzionalità di anteprima di AKS sono disponibili su base self-service, su scelta. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime del servizio Azure Kubernetes sono parzialmente coperte dal supporto clienti con la massima diligenza possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:
Prima di iniziare
- Questo articolo presuppone che tu abbia già un cluster AKS esistente. Se non si ha un cluster, crearne uno usando l'interfaccia della riga di comando di Azure, Azure PowerShello il portale di Azure.
- È necessario che sia installata la interfaccia della riga di comando di Azure versione 2.85.0 o successiva. Per trovare la versione, eseguire
az --version. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure. - È necessario installare e aggiornare alla versione più recente dell'estensione
aks-preview. - Ottieni le credenziali per il tuo cluster AKS con
az aks get-credentialsprima di eseguire gli esempikubectlin questo articolo.
Componenti GPU gestiti
Un pool di nodi GPU gestito può includere i componenti seguenti in ogni nodo:
| Componente | Funzionamento | Cosa gestisce AKS |
|---|---|---|
| Driver GPU NVIDIA | Moduli kernel e librerie di spazio utente che consentono al sistema operativo e ai contenitori di comunicare con l'hardware GPU. | Selezione della versione del driver, installazione in fase di provisioning del nodo e reinstallazione dopo l'aggiornamento dell'immagine del nodo. |
| Plug-in del dispositivo NVIDIA Kubernetes | Equivalente a DaemonSet che espone le risorse GPU (nvidia.com/gpu, nvidia.com/mig-*) al kubelet in modo che i pod possano richiederle. |
Distribuzione, configurazione (inclusa la strategia MIG) e ciclo di vita in ogni nodo GPU. |
| Esportatore di metriche NVIDIA DCGM e DCGM |
Data Center GPU Manager raccoglie i dati sull'integrità e sull'utilizzo della GPU ed espone le metriche prometheus (ad esempio, DCGM_FI_DEV_GPU_UTIL, DCGM_FI_DEV_GPU_TEMP) sulla porta 19400. |
Installazione, abilitazione del servizio ed etichetta del nodo kubernetes.azure.com/dcgm-exporter=enabled usata per scorporare le metriche. |
| Segnali di integrità GPU | Segnali NPD che espongono condizioni dei nodi specifiche della GPU, ad esempio UnhealthyNvidiaDevicePlugin e UnhealthyNvidiaDCGMServices. |
Monitoraggio NPD e report sulle condizioni dei nodi GPU. |
Installare i profili
Due gpuProfile campi decidono quali di quei componenti AKS installa:
-
gpuProfile.driver(InstalloNone): se AKS installa il driver GPU NVIDIA. -
gpuProfile.nvidia.managementMode(ManagedoUnmanaged): se AKS installa anche lo stack GPU destinato a Kubernetes sopra il driver.
Insieme, producono tre profili di installazione:
| Installare il profilo | Flag dell'interfaccia della riga di comando | Che cosa installa e gestisce AKS |
|---|---|---|
| Stack gestito completo |
--enable-managed-gpu=true (o nessuna delle due opzioni) |
Tutti e quattro i componenti precedenti: driver, plug-in del dispositivo, esportatore metriche DCGM e monitoraggio dell'integrità della GPU in NPD. |
| Solo il driver (impostazione predefinita) | --enable-managed-gpu=false |
Solo per driver NVIDIA per GPU. Si installano e gestiscono autonomamente il plug-in del dispositivo, l'esportatore metriche e il monitoraggio dell'integrità (ad esempio con l'operatore GPU NVIDIA). |
| Nessuno (BYO) | --enable-managed-gpu=false --gpu-driver None |
Niente. AKS non installa nessuno dei quattro componenti. Tu possiedi l'intero stack. Vedere Bring your own GPU driver. |
Valori predefiniti e sostituzioni
-
Impostazioni predefinite: se non si passa
--enable-managed-gpuo--gpu-driver, il servizio Azure Kubernetes applica il profilo Solo driver sul pool di nodi creato con dimensioni della macchina virtuale abilitate per GPU NVIDIA. -
Override:
managementMode: Managedrichiede il driver, quindi--gpu-driver Noneviene ignorato quando--enable-managed-gpu=truee il driver è ancora installato. Per ignorare il driver, impostare sia--enable-managed-gpu=falseche--gpu-driver None. -
Immutabilità:
managementMode,migStrategyedriversono tutti fissi in fase di creazione. Per modificare il profilo, creare un nuovo pool di nodi.
Installare l'estensione CLI aks-preview
Installa l'estensione della CLI
aks-previewutilizzando il comandoaz extension add. È necessaria la versione 19.0.0b29 o successiva.az extension add --name aks-previewAggiornare l'estensione per assicurarsi che sia installata la versione più recente usando il comando
az extension update.az extension update --name aks-preview
Registrare il flag di funzionalità ManagedGPUExperiencePreview
Registra il flag di funzionalità ManagedGPUExperiencePreview nella tua sottoscrizione usando il comando az feature register.
az feature register --namespace Microsoft.ContainerService --name ManagedGPUExperiencePreview
Limitazioni
- Questa funzionalità supporta attualmente solo le dimensioni delle macchine virtuali abilitate per GPU NVIDIA .
- L'aggiornamento di un pool di nodi a scopo generico per aggiungere una VM di tipo GPU non è supportato su AKS.
- Pool di nodi Windows non sono supportati con questa caratteristica, perché le metriche GPU non sono supportate. Quando si creano pool di nodi GPU Windows, AKS installa e gestisce automaticamente i driver e il plugin del dispositivo DirectX. Per altre informazioni, vedere la documentazione AKS Windows GPU.
- La migrazione dei pool di nodi GPU a più istanze esistenti per usare questa funzionalità non è supportata.
- Gli aggiornamenti sul posto da un pool di nodi GPU NVIDIA esistente a un pool di nodi GPU gestito non sono supportati. Per eseguire la migrazione, isolare e svuotare i nodi GPU esistenti, quindi ridistribuire nuovamente i carichi di lavoro in un nuovo pool di nodi GPU creato con
--enable-managed-gpu=true. Per altre informazioni, vedere Ridimensionare i pool di nodi nel servizio Azure Kubernetes. - I campi
managementMode,migStrategy, edriveringpuProfilenon sono modificabili dopo la creazione del pool di nodi. Per modificare questi valori, creare un nuovo pool di nodi. - Il ridimensionamento automatico del cluster non è supportato nei pool di nodi GPU gestiti durante l'anteprima. Ridimensionare questi pool manualmente.
Annotazioni
Le macchine virtuali abilitate per la GPU contengono hardware specializzato soggetto a prezzi maggiori e alla disponibilità regionale. Per altre informazioni, vedere il calcolatore dei prezzi e la disponibilità a livello di area.
Creare un pool di nodi GPU gestito da AKS (anteprima)
Aggiungere un pool di nodi GPU gestito a un cluster AKS esistente passando --enable-managed-gpu=true a az aks nodepool add. Il servizio Azure Kubernetes imposta gpuProfile.nvidia.managementMode, Managed e installa automaticamente il driver GPU, il plug-in del dispositivo e l'esportatore metriche DCGM.
Per usare lo SKU predefinito del sistema operativo Ubuntu, creare il pool di nodi senza specificare uno SKU del sistema operativo. Il pool di nodi è configurato per il sistema operativo predefinito in base alla versione Kubernetes del cluster.
Aggiungi un pool di nodi al cluster usando il comando
az aks nodepool addcon il flag--enable-managed-gpu=true.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name gpunp \ --node-count 1 \ --node-vm-size Standard_NC6s_v3 \ --node-taints sku=gpu:NoSchedule \ --enable-managed-gpu=trueVerificare che i componenti software GPU NVIDIA gestiti siano installati correttamente:
az aks nodepool show \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name gpunpL'output deve includere i valori seguenti:
... "gpuProfile": { "driver": "Install", "driverType": "", "nvidia": { "managementMode": "Managed", "migStrategy": null } }, ...
Creare un pool di nodi MIG (Multi-Instance GPU) gestito (anteprima)
Per gli SKU GPU che supportano GPU a istanze multiple (ad esempio A100 e H100), configurare una strategia MIG durante la creazione del pool di nodi mediante il flag --gpu-mig-strategy. La strategia controlla il modo in cui le partizioni MIG vengono esposte a Kubernetes:
-
Single: tutte le istanze MIG vengono aggregate nella risorsa standardnvidia.com/gpu. -
Mixed: ogni profilo MIG viene esposto come risorsa separata, ad esempionvidia.com/mig-1g.10gb. -
None(impostazione predefinita): MIG non è configurato.
Il migStrategy campo non è modificabile dopo la creazione del pool di nodi.
Per informazioni generali sul partizionamento MIG, sulle dimensioni delle macchine virtuali supportate e sui profili delle istanze GPU, vedere Creare un pool di nodi GPU a più istanze diverse nel servizio Azure Kubernetes e GPU a più istanze NVIDIA.
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name mignp \
--node-count 1 \
--node-vm-size Standard_NC24ads_A100_v4 \
--node-taints sku=gpu:NoSchedule \
--enable-managed-gpu=true \
--gpu-instance-profile MIG1g \
--gpu-mig-strategy Single
Con questa configurazione, i pod richiedono risorse GPU usando il nome della risorsa standard nvidia.com/gpu .
Verificare il pool di nodi GPU gestito (anteprima)
Dopo aver pronto il pool di nodi, eseguire i controlli seguenti per verificare che lo stack gestito completo sia installato e integro.
Verificare le condizioni dei nodi specifiche della GPU con il rilevatore di problemi del nodo (NPD).
GPU_NODE=$(kubectl get nodes -l agentpool=gpunp -o jsonpath='{.items[0].metadata.name}') kubectl describe node $GPU_NODEIn un nodo GPU gestito, entrambe le condizioni seguenti devono segnalare
False:Condition Condizione Ragione UnhealthyNvidiaDevicePluginFalseHealthyNvidiaDevicePluginUnhealthyNvidiaDCGMServicesFalseHealthyNvidiaDCGMServicesVerificare che l'etichetta GPU gestita sia presente nel nodo:
kubectl get node $GPU_NODE -o jsonpath='{.metadata.labels.kubernetes\.azure\.com/dcgm-exporter}'Output previsto:
enabled.Verificare che le risorse GPU siano annunciate nelle risorse allocabili del nodo:
kubectl get node $GPU_NODE -o jsonpath='{.status.allocatable}'Per un pool di nodi non MIG, l'output include
"nvidia.com/gpu": "1"(o più, a seconda dello SKU). Per un pool di nodi MIGMixed, l'output include risorse specifiche di MIG come"nvidia.com/mig-1g.10gb": "7".Eseguire un carico di lavoro di esempio per confermare l'accesso alla GPU dall'interno di un contenitore:
apiVersion: v1 kind: Pod metadata: name: managed-gpu-test spec: restartPolicy: Never tolerations: - key: "sku" operator: "Equal" value: "gpu" effect: "NoSchedule" containers: - name: gpu-test image: mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu command: ["nvidia-smi"] resources: limits: nvidia.com/gpu: 1Visualizzare i log dei pod per vedere l'output
nvidia-smiche mostra il dispositivo GPU, la versione del driver e la versione CUDA:kubectl logs managed-gpu-test
Ridimensionare un pool di nodi GPU gestito (anteprima)
Ridimensionare manualmente un pool di nodi GPU gestito con az aks nodepool scale. I nuovi nodi installano lo stack GPU gestito completo.
az aks nodepool scale \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name gpunp \
--node-count 2
Importante
Durante l'anteprima, i pool di nodi GPU gestiti non supportano il ridimensionamento automatico del cluster. Ridimensionare questi pool manualmente.
Profili di installazione alternativi
Se il profilo Full managed stack non è adatto, AKS supporta due profili alternativi nei pool di nodi GPU.
Usare questo profilo quando si vuole che il servizio Azure Kubernetes installi e gestisca il driver GPU NVIDIA, ma si prevede di distribuire il plug-in del dispositivo e l'esportatore metriche (ad esempio, con l'operatore GPU NVIDIA). Impostare --enable-managed-gpu=false:
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name gpunp \
--node-count 1 \
--node-vm-size Standard_NC6s_v3 \
--node-taints sku=gpu:NoSchedule \
--enable-managed-gpu=false
Con questa configurazione:
- AKS installa e gestisce il driver GPU NVIDIA (
gpuProfile.driverèInstall). - AKS non installa un device plugin, un esportatore di metriche DCGM o regole di integrità della GPU.
gpuProfile.nvidiaènull. - Nessuna
nvidia.com/gpurisorsa viene pubblicizzata fino a quando non si distribuisce un plug-in del dispositivo.
Passaggi successivi
- Distribuire un carico di lavoro GPU di esempio sui nodi GPU-abilitati gestiti da AKS.
- Informazioni sulle metriche di utilizzo e prestazioni della GPU dall'esportatore NVIDIA DCGM gestito nel tuo pool di nodi GPU.
Articoli correlati
- Usare le GPU NVIDIA su AKS per l'esperienza standard (non gestita) delle GPU.
- Creare un pool di nodi GPU (MIG) a istanze diverse per informazioni in background sul partizionamento MIG e sulle dimensioni di vm supportate.
- Operatore GPU NVIDIA per l'installazione autonoma dei driver GPU e del plugin del dispositivo.
- Monitorare le metriche GPU dall'esportatore gestito NVIDIA DCGM.
- Monitoraggio dell'integrità della GPU con Node Problem Detector (NPD) su AKS (Azure Kubernetes Service).
- Utilizzare le GPU Windows su AKS per i pool di nodi GPU Windows.
- Dimensioni delle macchine virtuali GPU di Azure per l'elenco completo delle macchine virtuali con GPU NVIDIA.
- Eseguire l'inferenza distribuita su più nodi GPU di AKS.