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 su che si trova 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à.
Usa il driver o il plug-in del dispositivo NVIDIA DRA su Amazon EKS
Amazon EKS supporta due meccanismi per la gestione dei dispositivi GPU NVIDIA nei tuoi cluster EKS: il driver NVIDIA DRA per GPU e il plug-in per dispositivi NVIDIA Kubernetes.
Consigliamo di utilizzare il driver NVIDIA DRA per le nuove implementazioni con Kubernetes versioni 1.34 e successive quando si utilizza il provisioning della capacità statica in Karpenter, gruppi di nodi gestiti da EKS o nodi autogestiti. https://karpenter.sh/docs/concepts/nodepools/#static-nodepool
Se utilizzi funzionalità di condivisione GPU come GPU multiistanza (MIG) o time-slicing, ti consigliamo di utilizzare la configurazione statica con il driver DRA o il plug-in del dispositivo NVIDIA. Il MIG dinamico e il time-slicing sono in stato alfa nel driver NVIDIA DRA. Consulta le versioni dei driver NVIDIA DRA per gli ultimi aggiornamenti.
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 EKS-supported Kubernetes |
|
EKS Compute |
Karpenter (solo capacità statica), gruppi di nodi gestiti, nodi autogestiti |
EKS Auto Mode, Karpenter, gruppi di nodi gestiti, nodi autogestiti |
|
EKS-optimized AMI |
AL 2023 (NVIDIA), Bottlerocket |
AL 2023 (NVIDIA), Bottlerocket |
|
Pubblicità sul dispositivo |
Attributi avanzati tramite |
Numero intero di risorse estese |
|
Condivisione GPU |
(Alpha) MIG dinamico, MPS, time-slicing |
(GA) MIG statico, MPS, time-slicing |
|
ComputeDomains |
Gestisce Multi-Node NVLink (MNNVL) tramite risorse per comunicazioni GPU multinodo sicure |
Non supportata |
|
Attribute-based selezione |
Filtrare le GPU per modello, memoria o altri attributi utilizzando le espressioni CEL |
Non supportata |
|
Topology-aware Allocazione EFA |
DRA-native consapevolezza della topologia |
Riconoscimento automatico della topologia (solo AMI AL2023) EKS-optimized |
Installa il driver NVIDIA DRA
Il driver NVIDIA DRA per GPU gestisce due tipi di risorse: GPU e. 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. Utilizzo P6e-GB200 UltraServers con Amazon EKS
Prerequisiti
-
Un cluster Amazon EKS che esegue Kubernetes versione 1.34 o successiva con capacità statica fornita da Karpenter, gruppi di nodi gestiti da EKS o gruppi di nodi autogestiti.
-
Nodi con tipi di istanze GPU NVIDIA (ad esempio istanze or).
PG -
Nodi con componenti a livello di host installati per le GPU NVIDIA. Quando si utilizzano le AMI NVIDIA EKS-optimized AL2023 o Bottlerocket, il driver NVIDIA a livello di host, 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. Installa o aggiorna kubectl
Procedura
Importante
Quando si utilizza il driver NVIDIA DRA per la gestione dei dispositivi GPU, non installarlo insieme al plug-in del dispositivo NVIDIA sullo stesso nodo. Ciò può causare una sottoscrizione silenziosa dei dispositivi sottostanti a più pod sullo stesso nodo.
Disattiva il plug-in del dispositivo NVIDIA integrato su Bottlerocket
Le varianti NVIDIA di EKS-optimized Bottlerocket includono il plug-in del dispositivo NVIDIA e lo abilitano per impostazione predefinita. Il driver DRA non può essere eseguito insieme al plug-in del dispositivo sullo stesso nodo. Prima di utilizzare il driver DRA, disabilitate il plug-in del dispositivo integrato nei nodi GPU Bottlerocket. Impostato su false nei settings.kubelet-device-plugins.nvidia.enabled dati utente del nodo Bottlerocket.
[settings.kubelet-device-plugins.nvidia] enabled = false
L'settings.kubelet-device-plugins.nvidia.enabledimpostazione è disponibile nella versione Bottlerocket 1.63.0 e successive. Nelle versioni precedenti, il plug-in integrato del dispositivo NVIDIA non può essere disabilitato. Per maggiori informazioni, vedi bottlerocket- os/bottlerocket pull request #4856 on.
-
Installa il driver NVIDIA DRA direttamente dal registro Kubernetes SIG OCI. Per trovare le versioni disponibili, consulta le versioni dei driver NVIDIA DRA su. https://github.com/kubernetes-sigs/dra-driver-nvidia-gpu/releases
GitHub helm install dra-driver-nvidia-gpu \ oci://registry.k8s.io/dra-driver-nvidia/charts/dra-driver-nvidia-gpu \ --version0.4.1\ --create-namespace \ --namespace nvidia \ --set resources.computeDomains.enabled=false \ --set gpuResourcesEnabledOverride=truePer le opzioni di configurazione avanzate, consultate i valori del grafico Helm del driver NVIDIA DRA
sul sito web di Kubernetes SIG. Per visualizzare i valori disponibili per una versione specifica del grafico, esegui. helm show values oci://registry.k8s.io/dra-driver-nvidia/charts/dra-driver-nvidia-gpu --version 0.4.1 -
(Facoltativo) Per utilizzare il time-slicing tramite il driver DRA, aggiungete il
TimeSlicingSettingsfeature gate alhelm installcomando nel passaggio precedente. Si tratta di una funzionalità alfa disattivata per impostazione predefinita. Per ulteriori informazioni, consulta Usa il time-slicing della GPU con il driver NVIDIA DRA.--set featureGates.TimeSlicingSettings=true -
(Facoltativo) Per utilizzare il MIG dinamico tramite il driver DRA, aggiungete il
DynamicMIGfeature gate alhelm installcomando nel passaggio precedente. Questa è una funzionalità alfa disattivata per impostazione predefinita. Non è possibile combinare ilDynamicMIGfeature gate con i feature gatePassthroughSupportNVMLDeviceHealthCheck,, oMPSSupportfeature. Per ulteriori informazioni, consulta Usa MIG con il driver NVIDIA DRA.--set featureGates.DynamicMIG=true -
Verificare che i driver pod DRA siano in funzione.
kubectl get pods -n nvidia -
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 resourceslicePer richiedere le GPU NVIDIA utilizzando il driver DRA, creane un riferimento
gpu.nvidia.comDeviceClasseResourceClaimTemplateinseriscilo nelle specifiche del tuo Pod. L'esempio seguente richiede una singola GPU. Consulta Topology-aware EFA e GPU/Neuron allocazione dei dispositivi la procedura per allocare le GPU NVIDIA con interfacce EFA allineate alla topologia.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: gpu-demo image: public.ecr.aws/amazonlinux/amazonlinux:2023-minimal command: ["/bin/sh", "-c"] args: ["nvidia-smi && tail -f /dev/null"] resources: claims: - name: gpu resourceClaims: - name: gpu resourceClaimTemplateName: single-gpu tolerations: - key: "nvidia.com/gpu" operator: "Exists" effect: "NoSchedule"
Installa il plug-in del dispositivo NVIDIA Kubernetes
Il plug-in per dispositivi NVIDIA Kubernetes pubblicizza le GPU NVIDIA come risorse estese. nvidia.com/gpu Richiedete le GPU in container, richieste e limiti di risorse.
Prerequisiti
-
Un cluster Amazon EKS.
-
Nodi con tipi di istanze GPU NVIDIA (ad esempio
GistanzePor). -
Nodi con tipi di istanze GPU NVIDIA che utilizzano l'AMI NVIDIA AL2023. EKS-optimized Le AMI EKS-optimized Bottlerocket includono il plug-in del dispositivo NVIDIA. Non è necessario installarlo separatamente.
-
Nodi con componenti a livello di host installati per le GPU NVIDIA. Quando si utilizzano le AMI NVIDIA EKS-optimized AL2023 o Bottlerocket, il driver NVIDIA a livello di host, 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. Installa o aggiorna kubectl
Procedura
-
Aggiungi il repository grafico Helm 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 del dispositivo NVIDIA Kubernetes.
helm install nvdp nvdp/nvidia-device-plugin \ --create-namespace \ --namespace nvidiaOpzionale: abilita GPU Feature Discovery (GFD)
Il plug-in del dispositivo pubblicizza risorse
nvidia.com/gpuestese e pianifica autonomamente i GPU Pod. Sulla NVIDIA AMI EKS-optimized AL2023, l'etichetta delnvidia.com/gpu.present=truenodo è già applicata all'avvionodeadm, quindi GPU Feature Discovery (GFD) non è richiesto per la pianificazione di base della GPU.Abilita GFD con
--set gfd.enabled=truese desideri che il nodo sia etichettato con attributi GPU dettagliati, come,, etichette del profilo MIG e versioni.nvidia.com/gpu.productnvidia.com/gpu.memorynvidia.com/gpu.countdriver/CUDA Con queste etichette, puoi scegliere come target specifici tipi di GPU con affinità di nodo (ad esempio, programmando un carico di lavoro solo sulle GPU A10GnodeSelectoro su un particolare profilo MIG). Anche le configurazioni di condivisione della GPU come time-slicing e MIG utilizzano queste etichette. Se non hai bisogno della selezione dei nodi basata sugli attributi o della condivisione della GPU, puoi omettere il flag.helm install nvdp nvdp/nvidia-device-plugin \ --create-namespace \ --namespace nvidia \ --set gfd.enabled=trueAbilita GDRCopy se i tuoi carichi di lavoro lo utilizzano
k8s-device-pluginLa versione da v0.19.0 a v0.19.2 ha abilitato le funzionalità GDRCopy e MOFED per impostazione predefinita. Questa abilitazione predefinita è stata ripristinata nellak8s-device-pluginversione 0.19.3. Come risultato del ripristino, GDRCopy (gdrdrv) non può più essere abilitato per contenitore con la variabile diNVIDIA_GDRCOPY=enabledambiente in una specifica Pod, tale variabile viene ora ignorata.Se i tuoi carichi di lavoro utilizzano GDRCopy (copia GPUDirect RDMA), devi abilitarlo sul plug-in del dispositivo al momento dell'installazione impostando:
gdrcopyEnabled=truehelm upgrade --install nvdp nvdp/nvidia-device-plugin \ --namespace nvidia \ --create-namespace \ --set gdrcopyEnabled=true(Aggiungetelo
--set gfd.enabled=trueanche se volete aggiungere anche le etichette GPU Feature Discovery, come descritto in precedenza).Se gestisci il plug-in del dispositivo NVIDIA tramite NVIDIA GPU Operator attivo GitHub, l'operatore imposta dinamicamente
GDRCOPY_ENABLED=truequando il modulo delgdrdrvkernel viene caricatosul nodo. Per ulteriori informazioni, consulta il numero #1692 di NVIDIA k8s-device-plugin su.
GitHub Nota
Puoi anche installare e gestire il plug-in del dispositivo NVIDIA Kubernetes utilizzando NVIDIA GPU Operator on GitHub, che automatizza la gestione di tutti i
componenti software NVIDIA necessari per il provisioning delle GPU. -
Verifica che il plug-in del dispositivo NVIDIA DaemonSet sia in esecuzione.
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 tuoi nodi dispongano di GPU 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 le GPU NVIDIA in un pod
Per richiedere le GPU NVIDIA utilizzando il plug-in del dispositivo, specifica la nvidia.com/gpu risorsa nel contenitore (richieste e limiti).
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 requests: nvidia.com/gpu: 1 tolerations: - key: "nvidia.com/gpu" operator: "Equal" value: "true" effect: "NoSchedule"
Per eseguire questo test, applica il manifest 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 | +-----------------------------------------------------------------------------------------+