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 dimensioni delle macchine virtuali GPU AMD in Azure possono offrire flessibilità in termini di prestazioni e costi, offrendo capacità di calcolo elevata, consentendo al tempo stesso di scegliere la configurazione appropriata per i requisiti del carico di lavoro. Azure Kubernetes Service (AKS) supporta i pool di nodi Linux con GPU AMD per eseguire carichi di lavoro Kubernetes computazionalmente intensivi.
Questo articolo illustra come effettuare il provisioning dei nodi con GPU AMD pianificabili in cluster del servizio Azure Kubernetes nuovi ed esistenti.
Limitazioni
- AKS supporta attualmente la dimensione delle
Standard_ND96isr_MI300X_v5macchine virtuali Azure alimentate dalla GPU AMD della serie MI300. - L'aggiornamento di un pool di nodi esistente per aggiungere una dimensione VM con GPU AMD non è supportato su AKS.
- L'aggiornamento di un pool di nodi non abilitato per GPU AMD con dimensioni di MACCHINA virtuale GPU AMD non è supportato.
-
AzureLinuxWindows,AzureLinuxOSGuardeflatcarnon sono supportati con GPU AMD.
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.
- Per impostare il
--gpu-drivercampo, è necessaria l'interfaccia della riga di comando di Azure versione 2.72.2 o successiva. 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.
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.
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 il cluster myAKSCluster nel myResourceGroup gruppo di risorse:
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Opzioni per l'uso di GPU AMD
L'uso di GPU AMD prevede l'installazione di vari componenti software GPU AMD, ad esempio il plug-in del dispositivo AMD per Kubernetes, i driver GPU e altro ancora.
Annotazioni
Attualmente AKS non gestisce né automatizza l'installazione dei driver GPU o del plug-in del dispositivo GPU AMD nei pool di nodi abilitati con GPU AMD.
Registrare la funzionalità AKSInfinibandSupport
Se le dimensioni della macchina virtuale GPU AMD sono abilitate per RDMA con la
rconvenzione di denominazione (ad esempioStandard_ND96isr_MI300X_v5), sarà necessario assicurarsi che i computer nel pool di nodi si trovino nella stessa rete Infiniband fisica. A tale scopo, registrare ilAKSInfinibandSupportflag di funzionalità usando il comandoaz feature register:az feature register --name AKSInfinibandSupport --namespace Microsoft.ContainerServiceVerificare lo stato della registrazione usando il comando
az feature show:az feature show \ --namespace "Microsoft.ContainerService" \ --name AKSInfinibandSupportCreare un pool di nodi con GPU AMD abilitata utilizzando il comando
az aks nodepool adde ignorare l'installazione predefinita del driver impostando il campo API--gpu-driversul valorenone.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name gpunp \ --node-count 1 \ --node-vm-size Standard_ND96isr_MI300X_v5 \ --gpu-driver noneAnnotazioni
AKS applica attualmente l'uso del campo
gpu-driverper ignorare l'installazione automatica del driver al momento della creazione del pool di nodi GPU AMD.
Distribuire l'operatore GPU AMD nel servizio Azure Kubernetes
L'operatore GPU AMD automatizza la gestione e la distribuzione di tutti i componenti software AMD necessari per effettuare il provisioning della GPU, tra cui l'installazione del driver, il plug-in del dispositivo AMD per Kubernetes, il runtime del contenitore AMD e altro ancora. Poiché l'operatore GPU AMD gestisce questi componenti, non è necessario installare separatamente il plug-in del dispositivo AMD nel cluster del servizio Azure Kubernetes. Ciò significa anche che l'installazione automatica del driver GPU deve essere saltata per poter utilizzare l'Operatore GPU AMD su AKS (Azure Kubernetes Service).
Seguire la documentazione di AMD per installare l'operatore GPU.
Controllare lo stato delle GPU AMD nel pool di nodi usando il
kubectl get nodescomando :kubectl get nodes -o custom-columns=NAME:.metadata.name,GPUs:.status.capacity.'amd\.com/gpu'L'output dovrebbe essere simile all'esempio di output seguente:
NAME STATUS ROLES AGE VERSION aks-gpunp-00000000 Ready agent 2m4s v1.31.7
Verificare che le GPU AMD siano pianificabili
Dopo aver creato il pool di nodi, verificare che le GPU siano pianificabili nel cluster del servizio Azure Kubernetes.
Elencare i nodi nel cluster usando il comando
kubectl get nodes.kubectl get nodesVerificare che le GPU siano pianificabili usando il comando
kubectl describe node.kubectl describe node aks-gpunp-00000000Nella sezione Capacity (Capacità) la GPU deve comparire in elenco come
amd.com/gpu: 1. L'output dovrebbe essere simile all'output di esempio condensato seguente:Name: aks-gpunp-00000000 Roles: agent Labels: accelerator=amd [...] Capacity: [...] amd.com/gpu: 1 [...]
Eseguire un'attività con supporto GPU AMD
Per visualizzare la GPU AMD in azione, è possibile pianificare un carico di lavoro abilitato per GPU con la richiesta di risorsa appropriata. In questo esempio verrà eseguito un processo Tensorflow sul set di dati MNIST.
Creare un file denominato samples-tf-mnist-demo.yaml e incollare il manifesto YAML seguente, che include un limite di risorse di
amd.com/gpu: 1:apiVersion: batch/v1 kind: Job metadata: labels: app: samples-tf-mnist-demo name: samples-tf-mnist-demo spec: template: metadata: labels: app: samples-tf-mnist-demo spec: containers: - name: samples-tf-mnist-demo image: mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu args: ["--max_steps", "500"] imagePullPolicy: IfNotPresent resources: limits: amd.com/gpu: 1 restartPolicy: OnFailure tolerations: - key: "sku" operator: "Equal" value: "gpu" effect: "NoSchedule"Eseguire il processo usando il comando
kubectl apply, che analizza il file manifesto e crea gli oggetti Kubernetes definiti.kubectl apply -f samples-tf-mnist-demo.yaml
Visualizzare lo stato del carico di lavoro abilitato per la GPU
Monitorare lo stato di avanzamento del processo usando il comando
kubectl get jobscon il flag--watch. Il pull dell'immagine e l'elaborazione del set di dati potrebbero richiedere alcuni minuti.kubectl get jobs samples-tf-mnist-demo --watchQuando la colonna COMPLETIONS mostra 1/1, il processo è stato completato correttamente, come illustrato nell'output di esempio seguente:
NAME COMPLETIONS DURATION AGE samples-tf-mnist-demo 0/1 3m29s 3m29s samples-tf-mnist-demo 1/1 3m10s 3m36sUscire dal processo
kubectl --watchcon CTRL-C.Ottenere il nome del pod usando il comando
kubectl get pods.kubectl get pods --selector app=samples-tf-mnist-demo
Pulire le risorse
Rimuovere gli oggetti Kubernetes associati creati in questo articolo usando il comando kubectl delete job.
kubectl delete jobs samples-tf-mnist-demo
Passaggi successivi
- Esplora le diverse opzioni di archiviazione per l'applicazione basata su GPU su AKS.
- Scopri di più sui cluster Ray su AKS.
- Usare GPU NVIDIA per i carichi di lavoro AKS a elevato utilizzo di calcolo.