Contribuisci a migliorare questa pagina
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Gestisci i dispositivi GPU NVIDIA su Amazon EKS
NVIDIA GPUs è ampiamente utilizzata per la formazione sull'apprendimento automatico, l'inferenza e i carichi di lavoro di elaborazione ad alte prestazioni. Amazon EKS supporta due meccanismi per la gestione dei dispositivi GPU NVIDIA nei cluster EKS: il driver NVIDIA DRA per GPUs e il plug-in per dispositivi NVIDIA Kubernetes.
Si consiglia di utilizzare il driver NVIDIA DRA per nuove implementazioni su cluster che eseguono Kubernetes versione 1.34 o successiva. Il driver NVIDIA DRA consente l'allocazione flessibile della GPU e la condivisione della GPU tra contenitori. Il plug-in per dispositivi NVIDIA rimane supportato.
Driver NVIDIA DRA e plug-in per dispositivi NVIDIA
| Funzionalità | Driver NVIDIA DRA | Plugin per dispositivi NVIDIA |
|---|---|---|
|
Versione minima di Kubernetes |
1.34 |
Tutte le versioni di Kubernetes supportate da EKS |
|
Karpenter ed EKS Auto Mode |
Non supportata |
Supportata |
|
Ottimizzato per EKS AMIs |
AL2023 |
AL2023, Portabottiglie |
|
Pubblicità del dispositivo |
Attributi avanzati tramite |
Numero intero di risorse estese |
|
Condivisione GPU |
Più contenitori nello stesso Pod possono condividere una GPU tramite riferimenti condivisi |
Non supportato. Ogni GPU è allocata esclusivamente a un contenitore. |
|
ComputeDomains |
Gestisce Multi-Node NVLink (MNNVL) tramite |
Non supportata |
|
Selezione basata sugli attributi |
Filtra GPUs per modello, memoria o altri attributi utilizzando le espressioni CEL |
Non supportata |
Installa il driver NVIDIA DRA
Il driver NVIDIA DRA per la GPUs gestione di due tipi di risorse: e. GPUs ComputeDomains Esegue due plugin DRA kubelet: e. gpu-kubelet-plugin compute-domain-kubelet-plugin Ciascuno può essere abilitato o disabilitato separatamente durante l'installazione. Questa guida si concentra sull'allocazione delle GPU. Per l'utilizzo ComputeDomains, vedere. Usa P6e- con GB200 UltraServers Amazon EKS
L'utilizzo del driver NVIDIA DRA con Bottlerocket non è attualmente supportato.
Prerequisiti
-
Un cluster Amazon EKS che esegue Kubernetes versione 1.34 o successiva.
-
Nodi con tipi di istanze GPU NVIDIA (ad esempio istanze or).
PG -
Nodi con componenti a livello di host installati per NVIDIA. GPUs Quando si utilizza NVIDIA ottimizzato per EKS AL2023 o Bottlerocket, il driver NVIDIA a livello di host AMIs, il driver in modalità utente CUDA e il toolkit contenitore sono preinstallati.
-
Helm è installato nell’ambiente a riga di comando, consulta le istruzioni di configurazione di Helm per ulteriori informazioni.
-
kubectlconfigurato per comunicare con il cluster, consulta per ulteriori informazioni. Installazione o aggiornamento di kubectl
Procedura
Importante
Quando si utilizza il driver NVIDIA DRA per la gestione dei dispositivi GPU, non può essere distribuito insieme al plug-in del dispositivo NVIDIA sullo stesso nodo. Vedi upstream Kubernetes KEP-5004 per gli aggiornamenti.
-
Aggiungi l'archivio cartografico Helm del driver NVIDIA DRA.
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia -
Aggiorna il tuo repository Helm locale.
helm repo update -
Scarica l'ultima versione del driver NVIDIA DRA.
helm search repo nvidia/nvidia-dra -
Installa il driver NVIDIA DRA.
helm install nvidia-dra-driver-gpu nvidia/nvidia-dra-driver-gpu \ --create-namespace \ --namespace nvidia-dra-driver-gpu \ --set resources.computeDomains.enabled=false \ --set 'gpuResourcesEnabledOverride=true'Per opzioni di configurazione avanzate, consulta la tabella Helm del driver NVIDIA DRA
. -
Verificare che i driver pod DRA siano in funzione.
kubectl get pods -n nvidia-dra-driver-gpu -
Verificate che gli
DeviceClassoggetti siano stati creati.kubectl get deviceclassNAME AGE gpu.nvidia.com 60s -
Verifica che
ResourceSlicegli oggetti siano pubblicati per i tuoi nodi GPU.kubectl get resourceslice
Richiedi NVIDIA GPUs in un Pod
Per richiedere a NVIDIA di GPUs utilizzare il driver DRA, creane uno ResourceClaimTemplate che faccia riferimento a gpu.nvidia.com DeviceClass e fallo riferimento nelle specifiche del tuo Pod.
L'esempio seguente richiede una singola GPU:
apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: single-gpu spec: spec: devices: requests: - name: gpu exactly: deviceClassName: gpu.nvidia.com count: 1 --- apiVersion: v1 kind: Pod metadata: name: gpu-workload spec: containers: - name: app ... resources: claims: - name: gpu resourceClaims: - name: gpu resourceClaimTemplateName: single-gpu tolerations: - key: "nvidia.com/gpu" operator: "Exists" effect: "NoSchedule"
Installa il plug-in per dispositivi NVIDIA Kubernetes
Il plug-in per dispositivi NVIDIA Kubernetes pubblicizza NVIDIA come risorse estese. GPUs nvidia.com/gpu Richiedete GPUs nel container le richieste e i limiti delle risorse.
Prerequisiti
-
Un cluster Amazon EKS.
-
Nodi con tipi di istanze GPU NVIDIA che utilizzano l'AMI NVIDIA ottimizzata per AL2023 EKS. Il Bottlerocket ottimizzato per EKS AMIs include il plug-in per dispositivi NVIDIA e non è richiesta alcuna installazione separata.
-
Helm è installato nell’ambiente a riga di comando, consulta le istruzioni di configurazione di Helm per ulteriori informazioni.
-
kubectlconfigurato per comunicare con il cluster, vedi per ulteriori informazioni. Installazione o aggiornamento di kubectl
Procedura
-
Aggiungi il repository Helm chart del plug-in per dispositivi NVIDIA.
helm repo add nvdp https://nvidia.github.io/k8s-device-plugin -
Aggiorna il tuo repository Helm locale.
helm repo update -
Installa il plug-in per dispositivi NVIDIA Kubernetes.
helm install nvdp nvdp/nvidia-device-plugin \ --namespace nvidia \ --create-namespace \ --set gfd.enabled=trueNota
Puoi anche installare e gestire il plug-in del dispositivo NVIDIA Kubernetes utilizzando NVIDIA GPU Operator, che automatizza la gestione di tutti i componenti software NVIDIA
necessari per il provisioning. GPUs -
Verifica che il plug-in del dispositivo NVIDIA sia in esecuzione. DaemonSet
kubectl get ds -n nvidia nvdp-nvidia-device-pluginNAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE nvdp-nvidia-device-plugin 2 2 2 2 2 <none> 60s -
Verifica che i nodi siano GPUs allocabili.
kubectl get nodes "-o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\.com/gpu"Di seguito viene riportato un output di esempio.
NAME GPU ip-192-168-11-225.us-west-2.compute.internal 1 ip-192-168-24-96.us-west-2.compute.internal 1
Richiedi NVIDIA GPUs in un Pod
Per richiedere NVIDIA GPUs utilizzando il plug-in del dispositivo, specifica la nvidia.com/gpu risorsa nei limiti delle risorse del contenitore.
apiVersion: v1 kind: Pod metadata: name: nvidia-smi spec: restartPolicy: OnFailure containers: - name: gpu-demo image: public.ecr.aws/amazonlinux/amazonlinux:2023-minimal command: ["/bin/sh", "-c"] args: ["nvidia-smi && tail -f /dev/null"] resources: limits: nvidia.com/gpu: 1 tolerations: - key: "nvidia.com/gpu" operator: "Equal" value: "true" effect: "NoSchedule"
Per eseguire questo test, applica il manifesto e visualizza i log:
kubectl apply -f nvidia-smi.yaml kubectl logs nvidia-smi
Di seguito viene riportato un output di esempio.
+-----------------------------------------------------------------------------------------+ | NVIDIA-SMI XXX.XXX.XX Driver Version: XXX.XXX.XX CUDA Version: XX.X | |-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA L4 On | 00000000:31:00.0 Off | 0 | | N/A 27C P8 11W / 72W | 0MiB / 23034MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | No running processes found | +-----------------------------------------------------------------------------------------+