Uso de UltraServers P6e-GB200 con Amazon EKS - Amazon EKS

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

Uso de UltraServers P6e-GB200 con Amazon EKS

En este tema, se describe cómo configurar y usar Amazon EKS con UltraServers P6e-GB200. El tipo de instancia p6e-gb200.36xlarge con 4 GPU Blackwell de NVIDIA solo está disponible como UltraServers P6e-GB200. Existen dos tipos de UltraServers P6e-GB200. El UltraServer u-p6e-gb200x36 tiene 9 instancias p6e-gb200.36xlarge, mientras que el UltraServer u-p6e-gb200x72 tiene 18 instancias p6e-gb200.36xlarge.

Para obtener más información, consulte la página web de UltraServers P6e-GB200 de Amazon EC2.

Consideraciones

  • Amazon EKS es compatible con UltraServers P6e-GB200 en las versión 1.33 y posteriores de Kubernetes. El lanzamiento de esta versión de Kubernetes admite la asignación dinámica de recursos (DRA), activada de forma predeterminada en EKS y en las AMI aceleradas optimizadas para EKS de AL2023. La DRA es un requisito para utilizar UltraServers P6e-GB200 con EKS. La DRA no se admite en el modo automático de EKS o Karpenter, y se recomienda utilizar grupos de nodos autoadministrados de EKS o grupos de nodos administrados de EKS al utilizar UltraServers P6e-GB200 con EKS.

  • Los UltraServers P6e-GB200 están disponibles a través de los Bloques de capacidad de EC2 para ML Consulte Administración de los recursos computacionales para las cargas de trabajo de IA/ML en Amazon EKS para obtener información sobre cómo lanzar nodos de EKS con Bloques de capacidad.

  • Al utilizar grupos de nodos administrados de EKS con Bloques de capacidad, debe usar plantillas de lanzamiento personalizadas. Al actualizar grupos de nodos administrados de EKS con UltraServers P6e-GB200, debe establecer el tamaño deseado del grupo de nodos en 0 antes de la actualización.

  • Se recomienda utilizar la variante ARM de NVIDIA de AL2023 de las AMI aceleradas optimizadas para EKS. Esta AMI incluye la configuración y los componentes del nodo necesarios para funcionar con UltraServers P6e-GB200. Si decide crear su propia AMI, es responsable de instalar y validar la compatibilidad del software del nodo y del sistema, incluidos los controladores. Para obtener más información, consulte Uso de AMI aceleradas optimizadas para EKS para instancias de GPU.

  • Se recomienda utilizar una versión v20251103 o posterior de la AMI optimizada para EKS, que incluya la versión 580 del controlador NVIDIA. Esta versión del controlador NVIDIA permite que la Administración de memoria coherente basada en controladores (CDMM) aborde una posible sobrecarga de memoria. Cuando la CDMM está activada, no se admiten las siguientes capacidades: GPU multiinstancia (MIG) y vGPU de NVIDIA. Para obtener más información sobre la CDMM, consulte NVIDIA Coherent Driver-based Memory Management (CDMM).

  • Cuando utilice el operador de GPU de NVIDIA con la AMI de NVIDIA de AL2023 optimizada para EKS, debe desactivar la instalación del controlador y el kit de herramientas por parte del operador, ya que se incluyen en la AMI. Las AMI de NVIDIA de AL2023 optimizadas para EKS no incluyen el complemento para dispositivos de Kubernetes de NVIDIA ni el controlador NVIDIA de DRA, que deben instalarse por separado.

  • Cada instancia p6e-gb200.36xlarge se puede configurar con hasta 17 tarjetas de red y puede usar EFA para la comunicación entre UltraServers. El tráfico de la red de carga de trabajo puede atravesar UltraServers, pero, para obtener el máximo rendimiento, se recomienda programar las cargas de trabajo en el mismo UltraServer y utilizar IMEX para la comunicación de la GPU dentro del UltraServer. Para obtener más información, consulte Configuración de EFA para instancias P6e-GB200.

  • Cada instancia p6e-gb200.36xlarge cuenta con 3 almacenes de instancias de 7,5 TB cada uno. De forma predeterminada, la AMI optimizada para EKS no formatea ni monta los almacenes de instancias. El almacenamiento efímero del nodo se puede compartir entre los pods que solicitan almacenamiento efímero y las imágenes de contenedores que se descargan en el nodo. Si utiliza la AMI optimizada para EKS de AL2023, se puede configurar como parte del arranque de nodos en los datos del usuario mediante la configuración de la política de almacenamiento local de instancias en NodeConfig como RAID0. Si se establece en RAID0, se transfieren los almacenes de instancias y se configura el tiempo de ejecución del contenedor y el kubelet para utilizar este almacenamiento efímero.

Componentes

Se recomiendan los siguientes componentes para ejecutar cargas de trabajo en EKS con los UltraServers P6e-GB200. Si lo desea, puede utilizar el operador de GPU de NVIDIA para instalar los componentes del nodo de NVIDIA. Cuando utilice el operador de GPU de NVIDIA con la AMI de NVIDIA de AL2023 optimizada para EKS, debe desactivar la instalación del controlador y el kit de herramientas por parte del operador, ya que se incluyen en la AMI.

Pila Componente

AMI acelerada optimizada para EKS

Kernel 6.12

Controlador de GPU de NVIDIA

Controlador de modo de usuario CUDA de NVIDIA

Kit de herramientas de contenedores de NVIDIA

NVIDIA Fabric Manager

Controlador de IMEX de NVIDIA

Administrador de subredes NVLink de NVIDIA

Controlador de EFA

Componentes que se ejecutan en el nodo

CNI de VPC

Complemento para dispositivos de EFA

Complemento para dispositivos de K8s de NVIDIA

Controlador de DRA de NVIDIA

Detección de características de nodos (NFD) de NVIDIA

Detección de características de GPU (GFD) de NVIDIA

Los componentes de los nodos de la tabla anterior llevan a cabo las siguientes funciones:

  • CNI de VPC: asigna las IP de VPC como la interfaz de red principal para los pods que se ejecutan en EKS.

  • Complemento para dispositivos de EFA: asigna los dispositivos EFA como redes secundarias para los pods que se ejecutan en EKS. Es responsable del tráfico de red en los UltraServers P6e-GB200. En el caso de las cargas de trabajo de varios nodos, las de GPU a GPU dentro de un UltraServer pueden fluir a través de NVLink de varios nodos.

  • Complemento para dispositivos de Kubernetes de NVIDIA: asigna las GPU como dispositivos para los pods que se ejecutan en EKS. Se recomienda utilizar el complemento para dispositivos de Kubernetes de NVIDIA hasta que la funcionalidad de asignación de GPU del controlador de DRA de NVIDIA deje de ser experimental. Consulte las versiones de los controladores de DRA de NVIDIA para obtener información actualizada.

  • Controlador de DRA de NVIDIA: activa los recursos personalizados de ComputeDomain que facilitan la creación de dominios de IMEX que siguen las cargas de trabajo que se ejecutan en los UltraServers P6e-GB200.

    • El recurso ComputeDomain describe un dominio de intercambio de memoria entre nodos (IMEX). Cuando se implementan en el clúster cargas de trabajo con un ResourceClaim para un ComputeDomain, el controlador de DRA de NVIDIA crea automáticamente un DaemonSet de IMEX que se ejecuta en los nodos coincidentes y establece los canales de IMEX entre los nodos antes de que se inicie la carga de trabajo. Para obtener más información sobre IMEX, consulte la descripción general de IMEX de NVIDIA para sistemas NVLink de varios nodos.

    • El controlador de DRA de NVIDIA utiliza una etiqueta de ID de grupo (nvidia.com/gpu.clique) aplicada por la GFD de NVIDIA y que transmite los conocimientos sobre la topología de la red y el dominio de NVLink.

    • Es una práctica recomendada crear un ComputeDomain por cada trabajo de carga de trabajo.

  • Detección de características de nodos (NFD) de NVIDIA: dependencia necesaria para que la GFD aplique etiquetas a los nodos en función de los atributos de nodo detectados.

  • Detección de características de GPU (GFD) de NVIDIA: aplica una etiqueta de topología estándar de NVIDIA llamada nvidia.com/gpu.clique a los nodos. Los nodos dentro de un mismo nvidia.com/gpu.clique tienen accesibilidad de NVLink de varios nodos, y puede utilizar las afinidades de los pods en la aplicación para programar los pods en el mismo dominio de NVLink.

Procedimiento

En la siguiente sección, se supone que cuenta con un clúster de EKS que ejecuta la versión 1.33 o posterior de Kubernetes con uno o más grupos de nodos con UltraServers P6e-GB200 que ejecutan la AMI acelerada optimizada para EKS ARM de NVIDIA de AL2023. Consulte los enlaces de Administración de los recursos computacionales para las cargas de trabajo de IA/ML en Amazon EKS para obtener los pasos con los requisitos previos para los grupos de nodos administrados y los nodos autoadministrados de EKS.

En el siguiente procedimiento, se utilizan los siguientes componentes.

Nombre Versión Descripción

Operador de GPU de NVIDIA

25.3.4+

Para la administración del ciclo de vida de los complementos necesarios, como el complemento para dispositivos de Kubernetes de NVIDIA y la NFD o GFD.

Controladores de DRA de NVIDIA

25.8.0+

Para la administración de dominios de IMEX y CRD de ComputeDomain.

Complemento para dispositivos de EFA

0.5.14+

Para la comunicación entre UltraServers.

Instalación del operador de GPU de NVIDIA

El operador de GPU de NVIDIA simplifica la administración de los componentes necesarios para usar las GPU en los clústeres de Kubernetes. Como el kit de herramientas de contenedores y el controlador de GPU de NVIDIA se instalan como parte de la AMI acelerada optimizada para EKS, deben configurarse como false en la configuración de valores de Helm.

  1. Cree un archivo de valores de Helm denominado gpu-operator-values.yaml con la configuración siguiente.

    devicePlugin: enabled: true nfd: enabled: true gfd: enabled: true driver: enabled: false toolkit: enabled: false migManager: enabled: false
  2. Instale el operador de GPU de NVIDIA para el clúster con el archivo gpu-operator-values.yaml creado en el paso anterior.

    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

Instalación del controlador de DRA de NVIDIA

A partir de la versión v25.3.4 del operador de GPU de NVIDIA, el controlador de DRA de NVIDIA debe instalarse por separado. Se recomienda seguir las notas de la versión del operador de GPU de NVIDIA, ya que esto podría cambiar en una versión futura.

  1. Cree un archivo de valores de Helm denominado dra-values.yaml con la configuración siguiente. Tenga en cuenta nodeAffinity y tolerations que configuran el controlador de DRA para implementar solo en nodos con una GPU de 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. Instale el controlador de DRA de NVIDIA para el clúster con el archivo dra-values.yaml creado en el paso anterior.

    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. Tras la instalación, el controlador de DRA crea recursos DeviceClass que permiten a Kubernetes comprender y asignar los recursos ComputeDomain, lo que permite que las cargas de trabajo de GPU distribuidas en UltraServers P6e-GB200 administren el IMEX.

    Confirme que los recursos de DRA estén disponibles con los siguientes comandos.

    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

Instalación del complemento para dispositivos de EFA

Para utilizar la comunicación de EFA entre UltraServers, debe instalar el complemento para dispositivos de Kubernetes para EFA. Las instancias P6e-GB200 se pueden configurar con hasta 17 tarjetas de red y el NCI principal (índice 0) debe ser del tipo interface y admitir un ancho de banda ENA de hasta 100 Gbps. Configure las interfaces de EFA y ENA según sus requisitos durante el aprovisionamiento de nodos. Consulte la documentación de AWS sobre la configuración de EFA para instancias P6e-GB200 para obtener más detalles sobre la configuración de EFA.

  1. Cree un archivo de valores de Helm denominado efa-values.yaml con la configuración siguiente.

    tolerations: - key: nvidia.com/gpu operator: Exists effect: NoSchedule
  2. Instale el operador de DRA de NVIDIA para el clúster con el archivo dra-values.yaml creado en el paso anterior.

    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

    Por ejemplo, si configuró sus instancias con 1 interfaz de solo EFA en cada grupo del NCI, al describir un nodo, se espera que haya 4 dispositivos de EFA asignables por nodo.

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

Para una prueba de NCCL de NVLink de varios nodos y otras microrreferencias, consulte el repositorio de GitHub awesome-distributed-training. En los siguientes pasos se muestra cómo ejecutar una prueba de NVLink de varios nodos con nvbandwidth.

  1. Para ejecutar una prueba de ancho de banda de varios nodos en dos nodos del dominio NVL72, instale antes el operador de MPI:

    kubectl create -f https://github.com/kubeflow/mpi-operator/releases/download/v0.7.0/mpi-operator.yaml
  2. Cree un archivo de valores de Helm denominado nvbandwidth-test-job.yaml que defina el manifiesto de la prueba. Tenga en cuenta la afinidad del pod nvidia.com/gpu.clique para programar los trabajadores en el mismo dominio de NVLink que tiene accesibilidad de NVLink de varios nodos.

    A partir de la versión v25.8.0 del controlador de DRA de NVIDIA, los ComputeDomains son elásticos y se puede establecer .spec.numNodes 0 en la definición de ComputeDomain. Consulte las notas de la versión más reciente del controlador de DRA de NVIDIA para ver las actualizaciones.

    --- 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. Cree el ComputeDomain e inicie el trabajo con el siguiente comando.

    kubectl apply -f nvbandwidth-test-job.yaml
  4. Al crear el ComputeDomain, puede ver que el ComputeDomain de la carga de trabajo tiene dos nodos:

    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. Revise los resultados del trabajo con el siguiente comando.

    kubectl logs --tail=-1 -l job-name=nvbandwidth-test-launcher
  6. Cuando se haya completado la prueba, elimínela con el siguiente comando.

    kubectl delete -f nvbandwidth-test-job.yaml