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.
Le unità di elaborazione grafica (GPU) sono spesso usate per carichi di lavoro a elevato utilizzo di calcolo, ad esempio i carichi di lavoro di visualizzazione o di grafica. Il servizio Azure Kubernetes supporta i pool di nodi Windows e Linux per eseguire carichi di lavoro Kubernetes a elevato utilizzo di calcolo.
Questo articolo illustra come effettuare il provisioning di nodi Windows con GPU pianificabili in cluster del servizio Azure Kubernetes nuovi ed esistenti (anteprima).
Macchine virtuali abilitate per GPU supportate
Per visualizzare le macchine virtuali abilitate per GPU supportate, vedere Dimensioni delle macchine virtuali ottimizzate per la GPU in Azure. Per i pool del nodo del servizio Azure Kubernetes è consigliabile una dimensione minima di Standard_NC6s_v3. La serie NVv4 (basata sulle GPU AMD) non è supportata nel servizio Azure Kubernetes.
Note
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.
Limitazioni
- L'aggiornamento di un pool di nodi Windows esistente per aggiungere GPU non è supportato.
- Non supportato in Kubernetes versione 1.28 e successive.
Prima di iniziare
- Questo articolo presuppone che sia già presente un cluster nel servizio Azure Kubernetes. Se non si ha un cluster, crearne uno usando l'interfaccia della riga di comando di Azure, Azure PowerShello il portale di Azure.
- Per utilizzare il campo
--gpu-drivercon il comandoaz aks nodepool add, è necessario che Azure CLI versione 2.72.2 o successiva sia installata e configurata. Eseguireaz --versionper trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure. - Se è installata l'estensione dell'interfaccia della
aks-previewriga di comando di Azure, aggiornare la versione alla versione 18.0.0b2 o successiva.
Ottenere le credenziali per il cluster
Ottenere le credenziali per il cluster del servizio Azure Kubernetes usando il comando
az aks get-credentials. Il comando di esempio seguente ottiene le credenziali per myAKSCluster nel gruppo di risorse myResourceGroup:az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Uso di GPU Windows con l'installazione automatica dei driver
L'uso di GPU NVIDIA prevede l'installazione di vari componenti software NVIDIA, ad esempio il plug-in del dispositivo NVIDIA per Kubernetes, l'installazione del driver GPU e altro ancora. Quando si crea un pool di nodi Windows con una macchina virtuale abilitata per la GPU supportata, questi componenti e i driver NVIDIA CUDA o GRID appropriati vengono installati. Per le dimensioni delle macchine virtuali serie NC e ND, viene installato il driver CUDA. Per le dimensioni delle macchine virtuali della serie NV, viene installato il driver GRID.
Importante
Le funzionalità di anteprima del servizio Azure Kubernetes sono disponibili in modalità self-service e con consenso esplicito. 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 ambienti di produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:
Installare l'estensione dell'interfaccia della riga di comando di Azure aks-preview
Registrare o aggiornare l'estensione aks-preview usando il comando
az extension addoaz extension update.# Register the aks-preview extension az extension add --name aks-preview # Update the aks-preview extension az extension update --name aks-preview
Registrare il flag di funzionalità WindowsGPUPreview
Registrare il flag della funzionalità
WindowsGPUPreviewusando il comandoaz feature register.az feature register --namespace "Microsoft.ContainerService" --name "WindowsGPUPreview"Sono necessari alcuni minuti per visualizzare lo stato Registered.
Verificare lo stato della registrazione usando il comando
az feature show.az feature show --namespace "Microsoft.ContainerService" --name "WindowsGPUPreview"Quando lo stato riflette Registrato, aggiornare la registrazione del provider di risorse Microsoft.ContainerService usando il comando
az provider register.az provider register --namespace Microsoft.ContainerService
Creare un pool di nodi abilitato per GPU Windows (anteprima)
Per creare un pool di nodi abilitato per GPU Windows, è necessario usare una dimensione di macchina virtuale abilitata per la GPU supportata e specificare os-type come Windows. Il valore predefinito di Windows os-sku è Windows2022, ma tutte le opzioni di Windows os-sku sono supportate.
Creare un pool di nodi abilitato per GPU Windows usando il comando
az aks nodepool add.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name gpunp \ --node-count 1 \ --os-type Windows \ --kubernetes-version 1.29.0 \ --node-vm-size Standard_NC6s_v3Verificare che le GPU siano pianificabili.
Dopo aver verificato che le GPU sono pianificabili, è possibile eseguire il carico di lavoro GPU.
Specificare il tipo di driver GPU (anteprima)
Per impostazione predefinita, il servizio Azure Kubernetes specifica un tipo di driver GPU predefinito per ogni macchina virtuale abilitata per la GPU supportata. Poiché la compatibilità dei carichi di lavoro e dei driver è importante per i carichi di lavoro GPU funzionanti, è possibile specificare il tipo di driver per il nodo GPU di Windows. Questa funzionalità non è supportata per i pool di nodi GPU Linux.
Quando si crea un pool di agenti Windows con supporto GPU, è possibile specificare il tipo di driver GPU usando il flag --driver-type.
Sono disponibili le opzioni seguenti:
- GRID: per le applicazioni che richiedono il supporto della virtualizzazione.
- CUDA: ottimizzato per le attività di calcolo in applicazioni di calcolo scientifico e a elevato utilizzo di dati.
Note
Quando imposta il flag --driver-type, l'utente si assume la responsabilità di assicurarsi che il tipo di driver selezionato sia compatibile con le dimensioni e la configurazione specifiche della macchina virtuale del pool di nodi. Anche se il servizio Azure Kubernetes tenta di convalidare la compatibilità, esistono scenari in cui la creazione del pool di nodi potrebbe non riuscire a causa di incompatibilità tra il tipo di driver specificato e la macchina virtuale o l'hardware sottostante.
Per creare un pool di nodi abilitato per la GPU di Windows con un tipo di driver GPU specifico, usare il comando az aks nodepool add.
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name gpunp \
--node-count 1 \
--os-type Windows \
--kubernetes-version 1.29.0 \
--node-vm-size Standard_NC6s_v3 \
--driver-type GRID
Ad esempio, il comando precedente crea un pool di nodi abilitato per la GPU usando il tipo di driver GPU GRID. Se si seleziona questo tipo di driver, viene eseguito l'override del valore predefinito del tipo di driver CUDA per gli SKU della macchina virtuale della serie NC.
Uso di GPU Windows con l'installazione manuale del driver
Quando si crea un pool di nodi Windows con dimensioni di macchine virtuali NVIDIA GPU (N) nel servizio Azure Kubernetes, il driver GPU e il plug-in del dispositivo DirectX Kubernetes vengono installati automaticamente. Per ignorare questa installazione automatica, seguire questa procedura:
-
Ignorare l'installazione del driver GPU impostando la configurazione
--gpu-driver nonein fase di creazione del pool di nodi. - Installazione manuale del plug-in del dispositivo DirectX Kubernetes.
Saltare l'installazione del driver GPU
Il servizio Azure Kubernetes ha l'installazione automatica del driver GPU abilitata per impostazione predefinita. In alcuni casi, ad esempio l'installazione di driver personalizzati, è possibile ignorare l'installazione del driver GPU.
Importante
A partire dal 14 agosto 2025, il servizio Azure Kubernetes non supporta più il tag del --skip-gpu-driver-install pool di nodi. Dopo questa data, non sarà possibile eseguire il provisioning dei pool di nodi abilitati per GPU usando questo tag per ignorare l'installazione automatica del driver GPU. È possibile ottenere lo stesso comportamento impostando il --gpu-driver campo su none. Per altre informazioni sul ritiro, vedere il problema sul ritiro di GitHub e l'annuncio di ritiro degli aggiornamenti di Azure. Per rimanere informati sugli annunci e sugli aggiornamenti, seguire le note di rilascio di AKS.
Creare un pool di nodi utilizzando il comando
az aks nodepool adde impostando il campo API--gpu-driversunoneper ignorare l'installazione automatica del driver GPU.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name gpunp \ --node-count 1 \ --os-type windows \ --os-sku windows2022 \ --gpu-driver none
Note
Se l'oggetto --node-vm-size che stai utilizzando non è ancora stato integrato in AKS, non puoi utilizzare le GPU e il campo --gpu-driver non funziona.
Installare manualmente il plug-in del dispositivo DirectX Kubernetes
È possibile distribuire un DaemonSet per il plug-in del dispositivo DirectX Kubernetes, che esegue un pod in ogni nodo per fornire i driver necessari per le GPU.
Aggiungere un pool di nodi al cluster usando il comando
az aks nodepool add.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name gpunp \ --node-count 1 \ --os-type windows \ --os-sku windows2022
Creare uno spazio dei nomi e distribuire il plug-in del dispositivo DirectX Kubernetes
Creare uno spazio dei nomi usando il comando
kubectl create namespace.kubectl create namespace gpu-resourcesCreare un file denominato k8s-directx-device-plugin.yaml e incollare il manifesto YAML seguente fornito come parte del plugin del dispositivo NVIDIA per il progetto Kubernetes:
apiVersion: apps/v1 kind: DaemonSet metadata: name: nvidia-device-plugin-daemonset namespace: gpu-resources spec: selector: matchLabels: name: nvidia-device-plugin-ds updateStrategy: type: RollingUpdate template: metadata: # Mark this pod as a critical add-on; when enabled, the critical add-on scheduler # reserves resources for critical add-on pods so that they can be rescheduled after # a failure. This annotation works in tandem with the toleration below. annotations: scheduler.alpha.kubernetes.io/critical-pod: "" labels: name: nvidia-device-plugin-ds spec: tolerations: # Allow this pod to be rescheduled while the node is in "critical add-ons only" mode. # This, along with the annotation above marks this pod as a critical add-on. - key: CriticalAddonsOnly operator: Exists - key: nvidia.com/gpu operator: Exists effect: NoSchedule - key: "sku" operator: "Equal" value: "gpu" effect: "NoSchedule" containers: - image: mcr.microsoft.com/aks/aks-windows-gpu-device-plugin:0.0.17 name: nvidia-device-plugin-ctr securityContext: allowPrivilegeEscalation: false capabilities: drop: ["ALL"] volumeMounts: - name: device-plugin mountPath: /var/lib/kubelet/device-plugins volumes: - name: device-plugin hostPath: path: /var/lib/kubelet/device-pluginsCreare il DaemonSet e verificare che il plug-in del dispositivo NVIDIA sia stato creato correttamente usando il comando
kubectl apply.kubectl apply -f nvidia-device-plugin-ds.yamlDopo aver installato correttamente il plug-in del dispositivo NVIDIA, è possibile verificare che le GPU siano pianificabili.
Verificare che le GPU siano pianificabili
Dopo aver creato il cluster, verificare che le GPU siano pianificabili in Kubernetes.
Elencare i nodi nel cluster usando il comando
kubectl get nodes.kubectl get nodesL'output dovrebbe essere simile all'output di esempio seguente:
NAME STATUS ROLES AGE VERSION aks-gpunp-28993262-0 Ready agent 13m v1.20.7Verificare che le GPU siano pianificabili usando il comando
kubectl describe node.kubectl describe node aks-gpunp-28993262-0Nella sezione Capacity (Capacità) la GPU deve comparire in elenco come
microsoft.com/directx: 1. L'output dovrebbe essere simile all'output di esempio condensato seguente:Capacity: [...] microsoft.com.directx/gpu: 1 [...]
Pulire le risorse
Rimuovere gli oggetti Kubernetes associati creati in questo articolo usando il comando
kubectl delete job.kubectl delete jobs windows-gpu-workload
Passaggi successivi
- Per eseguire i processi Apache Spark, vedere Eseguire un processo Apache Spark con il servizio Azure Kubernetes.
- Per altre informazioni sulle funzionalità dell'utilità di pianificazione Kubernetes, vedere Procedure consigliate per le funzionalità avanzate dell'utilità di pianificazione nel servizio Azure Kubernetes.
- Per altre informazioni sul servizio Azure Kubernetes e Azure Machine Learning, vedere: