Usa GB2 P6e-00 con UltraServers Amazon EKS - Amazon EKS

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à.

Usa GB2 P6e-00 con UltraServers Amazon EKS

Questo argomento descrive come configurare e utilizzare Amazon EKS con GB2 P6e-00. UltraServers Il tipo di p6e-gb200.36xlarge istanza con 4 NVIDIA Blackwell GPUs è disponibile solo come P6e- 00. GB2 UltraServers Esistono due tipi di P6e- 00. GB2 UltraServers u-p6e-gb200x36 UltraServer Ha 9 p6e-gb200.36xlarge istanze e u-p6e-gb200x72 UltraServer ha 18 istanze. p6e-gb200.36xlarge

Per ulteriori informazioni, consulta la pagina Web di Amazon EC2 P6e- GB2 00 UltraServers .

Considerazioni

  • Amazon EKS supporta GB2 P6e-00 UltraServers per le versioni 1.33 e successive di Kubernetes. Questa versione di Kubernetes fornisce il supporto per Dynamic Resource Allocation (DRA), abilitato di default in EKS e nella versione accelerata 023 ottimizzata per EKS. AL2 AMIs Il DRA è un requisito per utilizzare il P6e-00 con EKS. GB2 UltraServers Il DRA non è supportato in Karpenter o EKS Auto Mode e si consiglia di utilizzare i gruppi di nodi autogestiti EKS o i gruppi di nodi gestiti da EKS quando si utilizza il P6e-00 con EKS. GB2 UltraServers

  • Le P6e- GB2 00 UltraServers sono rese disponibili tramite Capacity Blocks for ML. EC2 Gestisci le risorse di calcolo per i AI/ML carichi di lavoro su Amazon EKSPer informazioni su come avviare nodi EKS con Capacity Blocks, vedi.

  • Quando si utilizzano gruppi di nodi gestiti EKS con Capacity Blocks, è necessario utilizzare modelli di avvio personalizzati. Quando si aggiornano i gruppi di nodi gestiti EKS con GB2 P6e-00 UltraServers, è necessario impostare la dimensione desiderata del gruppo di nodi prima dell'aggiornamento. 0

  • Si consiglia di utilizzare la variante AL2 023 ARM NVIDIA dell'accelerato ottimizzato per EKS. AMIs Questa AMI include i componenti e la configurazione del nodo necessari per funzionare con GB2 P6e-00. UltraServers Se decidi di creare la tua AMI, sei responsabile dell'installazione e della convalida della compatibilità del nodo e del software di sistema, inclusi i driver. Per ulteriori informazioni, consulta Usa l'accelerazione ottimizzata per EKS per le istanze AMIs GPU.

  • Si consiglia di utilizzare la versione AMI ottimizzata per EKS v20251103 o successiva, che include il driver NVIDIA versione 580. Questa versione del driver NVIDIA consente alla Coherent Driver-Based Memory (CDMM) di risolvere il problema del potenziale eccesso di memoria. Quando CDMM è abilitato, le seguenti funzionalità non sono supportate: NVIDIA Multi-Instance GPU (MIG) e vGPU. Per ulteriori informazioni su CDMM, consulta NVIDIA Coherent Driver Memory Management (CDMM).

  • Quando si utilizza l'operatore GPU NVIDIA con l'AMI AL2 NVIDIA 023 ottimizzata per EKS, è necessario disabilitare l'installazione da parte dell'operatore del driver e del toolkit, poiché questi sono già inclusi nell'AMI. Le versioni NVIDIA AL2 023 ottimizzate per EKS AMIs non includono il plug-in per dispositivi NVIDIA Kubernetes o il driver NVIDIA DRA, che devono essere installati separatamente.

  • Ogni p6e-gb200.36xlarge istanza può essere configurata con un massimo di 17 schede di rete e può sfruttare EFA per la comunicazione tra. UltraServers Il traffico di rete dei carichi di lavoro può UltraServers intersecarsi, ma per ottenere prestazioni ottimali si consiglia di pianificare i carichi di lavoro nello stesso ambiente UltraServer sfruttando IMEX per la comunicazione intra-GPU. UltraServer Per ulteriori informazioni, consulta Configurazione EFA per le istanze P6e-00. GB2

  • Ogni p6e-gb200.36xlarge istanza dispone di 3 istanze di storage da 7,5 TB. Per impostazione predefinita, l'AMI ottimizzata per EKS non formatta e monta gli instance store. Lo storage temporaneo del nodo può essere condiviso tra i pod che richiedono lo storage temporaneo e le immagini dei contenitori che vengono scaricate nel nodo. Se si utilizza l'AMI ottimizzata per EKS AL2 023, questa può essere configurata come parte del bootstrap dei nodi nei dati utente impostando la politica NodeConfigdi archiviazione locale dell'istanza su RAID0. Impostando su RAID0 stripes, l'istanza archivia e configura il runtime del contenitore e il kubelet per utilizzare questo storage temporaneo.

Componenti

I seguenti componenti sono consigliati per eseguire carichi di lavoro su EKS con il P6e-00. GB2 UltraServers Facoltativamente, puoi utilizzare l'operatore GPU NVIDIA per installare i componenti del nodo NVIDIA. Quando si utilizza l'operatore GPU NVIDIA con l'AMI AL2 NVIDIA 023 ottimizzata per EKS, è necessario disabilitare l'installazione da parte dell'operatore del driver e del toolkit, poiché questi sono già inclusi nell'AMI.

Pila Componente

AMI accelerata ottimizzata per EKS

Kernel 6.12

Driver per GPU NVIDIA

Driver in modalità utente NVIDIA CUDA

Toolkit per container NVIDIA

NVIDIA Fabric Manager

Driver NVIDIA IMEX

Gestore di sottorete NVIDIA NVLink

Driver EFA

Componenti in esecuzione sul nodo

PENNA IN PVC

Plugin per dispositivi EFA

Plugin per dispositivi NVIDIA K8s

Driver NVIDIA DRA

NVIDIA Node Feature Discovery (NFD)

NVIDIA GPU Feature Discovery (GFD)

I componenti del nodo nella tabella precedente svolgono le seguenti funzioni:

  • VPC CNI: alloca VPC IPs come interfaccia di rete principale per i pod in esecuzione su EKS

  • Plugin per dispositivi EFA: alloca i dispositivi EFA come reti secondarie per i pod in esecuzione su EKS. Responsabile del traffico di rete su P6e-00. GB2 UltraServers Per carichi di lavoro multinodo, GPU-to-GPU all'interno di un UltraServer canale che scorre su più nodi. NVLink

  • Plugin per dispositivi NVIDIA Kubernetes: viene allocato come dispositivi per i GPUs pod in esecuzione su EKS. Si consiglia di utilizzare il plug-in per dispositivi NVIDIA Kubernetes fino a quando la funzionalità di allocazione GPU del driver NVIDIA DRA non sarà più sperimentale. Consulta le versioni dei driver NVIDIA DRA per informazioni aggiornate.

  • Driver NVIDIA DRA: abilita risorse ComputeDomain personalizzate che facilitano la creazione di domini IMEX che seguono i carichi di lavoro in esecuzione su P6e-00. GB2 UltraServers

    • La ComputeDomain risorsa descrive un dominio Internode Memory Exchange (IMEX). Quando i carichi di lavoro con un ResourceClaim for a ComputeDomain vengono distribuiti nel cluster, il driver NVIDIA DRA crea automaticamente un IMEX DaemonSet che viene eseguito su nodi corrispondenti e stabilisce i canali IMEX tra i nodi prima dell'avvio del carico di lavoro. Per saperne di più su IMEX, consulta la panoramica di NVIDIA IMEX per sistemi multi-nodo. NVLink

    • Il driver NVIDIA DRA utilizza un'etichetta Clique ID (nvidia.com/gpu.clique) applicata da NVIDIA GFD che trasmette la conoscenza della topologia e del dominio di rete. NVLink

    • È consigliabile creare un lavoro per carico di lavoro. ComputeDomain

  • NVIDIA Node Feature Discovery (NFD): dipendenza richiesta per GFD per applicare le etichette dei nodi in base agli attributi a livello di nodo rilevati.

  • NVIDIA GPU Feature Discovery (GFD): applica un'etichetta topologica standard NVIDIA chiamata ai nodi. nvidia.com/gpu.clique I nodi all'interno dello stesso nvidia.com/gpu.clique hanno una NVLink raggiungibilità multinodo e puoi utilizzare le affinità dei pod nell'applicazione per pianificare i pod sullo stesso dominio. NVlink

Procedura

La sezione seguente presuppone che tu abbia un cluster EKS che esegue Kubernetes versione 1.33 o successiva con uno o più gruppi di nodi con GB2 P6e-00 che UltraServers esegue l'AMI accelerata ottimizzata per NVIDIA EKS AL2 023 ARM. Consulta i collegamenti per i passaggi preliminari per i nodi autogestiti e i gruppi di nodi gestiti da Gestisci le risorse di calcolo per i AI/ML carichi di lavoro su Amazon EKS EKS.

La procedura seguente utilizza i componenti riportati di seguito.

Name Versione Description

Operatore GPU NVIDIA

25.3.4+

Per la gestione del ciclo di vita dei plug-in richiesti come il plug-in per dispositivi NVIDIA Kubernetes e NFD/GFD.

Driver NVIDIA DRA

25.8.0+

Per la gestione ComputeDomain CRDs dei domini IMEX.

Plugin per dispositivi EFA

0.5.14 e versioni successive

Per la comunicazione incrociata. UltraServer

Installa l'operatore GPU NVIDIA

L'operatore GPU NVIDIA semplifica la gestione dei componenti necessari per l'uso nei cluster Kubernetes. GPUs Poiché il driver GPU NVIDIA e il toolkit container sono installati come parte dell'AMI accelerata ottimizzata per EKS, questi devono essere false impostati nella configurazione dei valori Helm.

  1. Crea un file di valori Helm denominato con la seguente configurazione. gpu-operator-values.yaml

    devicePlugin: enabled: true nfd: enabled: true gfd: enabled: true driver: enabled: false toolkit: enabled: false migManager: enabled: false
  2. Installa l'operatore GPU NVIDIA per il tuo cluster utilizzando il gpu-operator-values.yaml file creato nel passaggio precedente.

    helm repo add nvidia https://helm.ngc.nvidia.com/nvidia helm repo update
    helm install gpu-operator nvidia/gpu-operator \ --namespace gpu-operator \ --create-namespace \ --version v25.3.4 \ --values gpu-operator-values.yaml

Installa il driver NVIDIA DRA

A partire dalla versione NVIDIA GPU Operatorv25.3.4, il driver NVIDIA DRA deve essere installato separatamente. Si consiglia di tenere traccia delle note di rilascio dell'operatore della GPU NVIDIA poiché potrebbero cambiare in una versione futura.

  1. Crea un file di valori Helm denominato dra-values.yaml con la seguente configurazione. Nota tolerations che configura il nodeAffinity driver DRA in modo che venga distribuito solo su nodi con una GPU NVIDIA.

    resources: gpus: enabled: false # set to false to disable experimental gpu support computeDomains: enabled: true controller: nodeSelector: null affinity: null tolerations: [] kubeletPlugin: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: "nvidia.com/gpu.present" operator: In values: - "true" tolerations: - key: "nvidia.com/gpu" operator: Exists effect: NoSchedule
  2. Installa il driver NVIDIA DRA per il tuo cluster utilizzando il dra-values.yaml file creato nel passaggio precedente.

    helm repo add nvidia https://helm.ngc.nvidia.com/nvidia helm repo update
    helm install nvidia-dra-driver-gpu nvidia/nvidia-dra-driver-gpu \ --version="25.8.0" \ --namespace nvidia-dra-driver-gpu \ --create-namespace \ -f dra-values.yaml
  3. Dopo l'installazione, il driver DRA crea DeviceClass risorse che consentono a Kubernetes di comprendere e allocare le ComputeDomain risorse, rendendo possibile la gestione IMEX per carichi di lavoro GPU distribuiti su P6e-00. GB2 UltraServers

    Verifica che le risorse DRA siano disponibili con i seguenti comandi.

    kubectl api-resources | grep resource.k8s.io
    deviceclasses resource.k8s.io/v1 false DeviceClass resourceclaims resource.k8s.io/v1 true ResourceClaim resourceclaimtemplates resource.k8s.io/v1 true ResourceClaimTemplate resourceslices resource.k8s.io/v1 false ResourceSlice
    kubectl get deviceclasses
    NAME compute-domain-daemon.nvidia.com compute-domain-default-channel.nvidia.com

Installa il plug-in del dispositivo EFA

Per utilizzare la comunicazione EFA tra UltraServers, devi installare il plug-in del dispositivo Kubernetes per EFA. Le istanze GB2 P6e-00 possono essere configurate con un massimo di 17 schede di rete e l'NCI primario (indice 0) deve essere di tipo interface e supporta fino a 100 Gbps di larghezza di banda ENA. Configura le interfacce EFA ed ENA in base alle tue esigenze durante il provisioning dei nodi. Consulta la AWS documentazione relativa alla configurazione EFA per le istanze GB2 P6e-00 per maggiori dettagli sulla configurazione EFA.

  1. Crea un file di valori Helm denominato con la seguente configurazione. efa-values.yaml

    tolerations: - key: nvidia.com/gpu operator: Exists effect: NoSchedule
  2. Installa l'operatore NVIDIA DRA per il tuo cluster utilizzando il dra-values.yaml file creato nel passaggio precedente.

    helm repo add eks https://aws.github.io/eks-charts helm repo update
    helm install efa eks/aws-efa-k8s-device-plugin -n kube-system \ --version="0.5.14" \ -f efa-values.yaml

    Ad esempio, se hai configurato le istanze con 1 interfaccia solo efa in ogni gruppo NCI, quando descrivi un nodo, si prevede che vengano visualizzati 4 dispositivi EFA allocabili per nodo.

    kubectl describe node/<gb200-node-name>
    Capacity: ... vpc.amazonaws.com/efa: 4 Allocatable: ... vpc.amazonaws.com/efa: 4

Per un test NVLINK NCCL multinodo e altri micro-benchmark, consulta il repository. awesome-distributed-training GitHub I passaggi seguenti mostrano come eseguire un test multinodo con nvbandwidth. NVLink

  1. Per eseguire un test della larghezza di banda multinodo su due nodi del NVL72 dominio, installa prima l'operatore MPI:

    kubectl create -f https://github.com/kubeflow/mpi-operator/releases/download/v0.7.0/mpi-operator.yaml
  2. Create un file di valori Helm denominato nvbandwidth-test-job.yaml che definisce il manifesto del test. Nota l'affinità del nvidia.com/gpu.clique pod per pianificare i lavoratori nello stesso NVLink dominio con raggiungibilità NVLink multinodo.

    A partire dalla versione NVIDIA DRA, i driver v25.8.0 ComputeDomains sono elastici e .spec.numNodes possono essere impostati nella definizione. 0 ComputeDomain Consulta le ultime note di rilascio del driver NVIDIA DRA per gli aggiornamenti.

    --- apiVersion: resource.nvidia.com/v1beta1 kind: ComputeDomain metadata: name: nvbandwidth-test-compute-domain spec: numNodes: 0 # This can be set to 0 from NVIDIA DRA Driver version v25.8.0+ channel: resourceClaimTemplate: name: nvbandwidth-test-compute-domain-channel --- apiVersion: kubeflow.org/v2beta1 kind: MPIJob metadata: name: nvbandwidth-test spec: slotsPerWorker: 4 # 4 GPUs per worker node launcherCreationPolicy: WaitForWorkersReady runPolicy: cleanPodPolicy: Running sshAuthMountPath: /home/mpiuser/.ssh mpiReplicaSpecs: Launcher: replicas: 1 template: metadata: labels: nvbandwidth-test-replica: mpi-launcher spec: containers: - image: ghcr.io/nvidia/k8s-samples:nvbandwidth-v0.7-8d103163 name: mpi-launcher securityContext: runAsUser: 1000 command: - mpirun args: - --bind-to - core - --map-by - ppr:4:node - -np - "8" - --report-bindings - -q - nvbandwidth - -t - multinode_device_to_device_memcpy_read_ce Worker: replicas: 2 # 2 worker nodes template: metadata: labels: nvbandwidth-test-replica: mpi-worker spec: affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: nvbandwidth-test-replica operator: In values: - mpi-worker topologyKey: nvidia.com/gpu.clique containers: - image: ghcr.io/nvidia/k8s-samples:nvbandwidth-v0.7-8d103163 name: mpi-worker securityContext: runAsUser: 1000 env: command: - /usr/sbin/sshd args: - -De - -f - /home/mpiuser/.sshd_config resources: limits: nvidia.com/gpu: 4 # Request 4 GPUs per worker claims: - name: compute-domain-channel # Link to IMEX channel resourceClaims: - name: compute-domain-channel resourceClaimTemplateName: nvbandwidth-test-compute-domain-channel
  3. Crea ComputeDomain e avvia il processo con il seguente comando.

    kubectl apply -f nvbandwidth-test-job.yaml
  4. ComputeDomain creazione, puoi vedere che il carico di lavoro ComputeDomain ha due nodi:

    kubectl get computedomains.resource.nvidia.com -o yaml
    status: nodes: - cliqueID: <ClusterUUID>.<Clique ID> ipAddress: <node-ip> name: <node-hostname> - cliqueID: <ClusterUUID>.<Clique ID> ipAddress: <node-ip> name: <node-hostname> status: Ready
  5. Esamina i risultati del lavoro con il seguente comando.

    kubectl logs --tail=-1 -l job-name=nvbandwidth-test-launcher
  6. Quando il test è completo, eliminalo con il seguente comando.

    kubectl delete -f nvbandwidth-test-job.yaml