Uso de UltraServers en Amazon SageMaker HyperPod - Amazon SageMaker AI

Uso de UltraServers en Amazon SageMaker HyperPod

La compatibilidad de SageMaker HyperPod con Ultraservers proporciona capacidades de computación de GPU de alto rendimiento para cargas de trabajo de IA y machine learning. Estos Ultraservers, que se basan en las arquitecturas NVIDIA GB200 y NVL72, proporcionan conectividad NVLink en instancias de 18 GB200 en una configuración de doble rack, con un total de 72 GPU B200. Esta tejido de NVLink permite que las cargas de trabajo utilicen las comunicaciones de la GPU, lo que aumenta la capacidad utilizable de la GPU y la memoria direccionable más allá de lo que es posible con las instancias discretas. Además, es compatible con modelos de IA más complejos y que consumen muchos recursos. La conectividad de NVLink está habilitada por la tecnología NVIDIA IMEX, que gestiona la configuración de bajo nivel para garantizar las conexiones del tejido de la GPU entre instancias del mismo rack.

HyperPod simplifica la implementación y la administración de estos clústeres de GPU mediante el conocimiento inteligente de la topología y la configuración automatizada. La plataforma detecta y etiqueta automáticamente los nodos con su ubicación física y la información del bloque de capacidad, lo que permite programar cargas de trabajo distribuidas con reconocimiento de topología. HyperPod resume los complejos requisitos de configuración de IMEX, lo que le permite centrarse en la implementación de la carga de trabajo en lugar de en la configuración del tejido de la GPU de bajo nivel. Puede elegir opciones de implementación flexibles, que incluyen nodos autoadministrados y grupos de nodos administrados por EKS. Amazon EKS proporciona AMI optimizadas que incluyen controladores NVIDIA preconfigurados, Administrador de tejidos, controladores IMEX y todo el software de sistema necesario para que funcione sin problemas.

La integración incluye funciones de colocación de pod que garantizan que las cargas de trabajo distribuidas se programen de forma óptima en los dominios de NVL72 con etiquetas de topología estándar de Kubernetes. Las características integradas de supervisión y recuperación automatizada proporcionan soporte operativo, ya que el agente de estado de la AMI detecta los errores de la GPU en los registros del núcleo y puede corregir automáticamente los problemas o reemplazar los nodos defectuosos en los grupos de nodos administrados. Esta combinación de escalabilidad de la GPU, ubicación inteligente de la carga de trabajo y operaciones automatizadas le permite centrarse en las innovaciones de IA/ML en lugar de centrarse en la complejidad de la infraestructura y, al mismo tiempo, obtener el máximo rendimiento de sus inversiones en GPU.

Para configurar el uso de UltraServers con su clúster de HyperPod, siga estos pasos:

  1. Cree un clúster de HyperPod basado en EKS. Cuando elija un grupo de instancias, asegúrese de escoger un UltraServer.

  2. Una vez creado el clúster, use los siguientes comandos para instalar los complementos operativos:

    Complemento para dispositivos NVIDIA versión 0.17.2

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.17.2/deployments/static/nvidia-device-plugin.yml

    FD DaemonSet versión 0.17.3

    kubectl apply -k "https://github.com/kubernetes-sigs/node-feature-discovery/deployment/overlays/default?ref=v0.17.3"

    Descubrimiento de características de la GPU

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.17.2/deployments/static/gpu-feature-discovery-daemonset.yaml

Ahora puede ejecutar trabajos. El siguiente ejemplo muestra cómo crear un dominio, configurar un dominio de IMEX y habilitar la asignación de canales. Estos pasos también le permiten crear un pod para aprovisionar un canal para la comunicación NCCL.

  1. Cree un archivo de especificaciones de recursos para usarlo con Kubectl.

    cat <<EOF > imex-channel-injection.yaml --- apiVersion: resource.nvidia.com/v1beta1 kind: ComputeDomain metadata: name: imex-channel-injection spec: numNodes: 1 channel: resourceClaimTemplate: name: imex-channel-0 --- apiVersion: v1 kind: Pod metadata: name: imex-channel-injection spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: nvidia.com/gpu.clique operator: Exists - key: topology.k8s.aws/ultraserver-id operator: In values: - <UltraServer-ID> containers: - name: ctr image: ubuntu:22.04 command: ["bash", "-c"] args: ["ls -la /dev/nvidia-caps-imex-channels; trap 'exit 0' TERM; sleep 9999 & wait"] resources: claims: - name: imex-channel-0 resourceClaims: - name: imex-channel-0 resourceClaimTemplateName: imex-channel-0 EOF
  2. Aplique la configuración que ha creado.

    kubectl apply -f imex-channel-injection.yaml
  3. Ejecute los comandos get pods para comprobar que se ha creado el pod.

    kubectl get pods kubectl get pods -n nvidia-dra-driver-gpu -l resource.nvidia.com/computeDomain
  4. También puede comprobar los registros del pod para ver si ha asignado un canal de comunicación.

    kubectl logs imex-channel-injection
    total 0 drwxr-xr-x 2 root root 60 Feb 19 10:43 . drwxr-xr-x 6 root root 380 Feb 19 10:43 .. crw-rw-rw- 1 root root 507, 0 Feb 19 10:43 channel0
  5. También puede comprobar los registros para comprobar que la configuración automática de IMEX se esté ejecutando con un canal asignado.

    kubectl logs -n nvidia-dra-driver-gpu -l resource.nvidia.com/computeDomain --tail=-1 /etc/nvidia-imex/nodes_config.cfg:
    IMEX Log initializing at: 8/8/2025 14:23:12.081 [Aug 8 2025 14:23:12] [INFO] [tid 39] IMEX version 570.124.06 is running with the following configuration options [Aug 8 2025 14:23:12] [INFO] [tid 39] Logging level = 4 [Aug 8 2025 14:23:12] [INFO] [tid 39] Logging file name/path = /var/log/nvidia-imex.log [Aug 8 2025 14:23:12] [INFO] [tid 39] Append to log file = 0 [Aug 8 2025 14:23:12] [INFO] [tid 39] Max Log file size = 1024 (MBs) [Aug 8 2025 14:23:12] [INFO] [tid 39] Use Syslog file = 0 [Aug 8 2025 14:23:12] [INFO] [tid 39] IMEX Library communication bind interface = [JAug 8 2025 14:23:12] [INFO] [tid 39] IMEX library communication bind port = 50000 [Aug 8 2025 14:23:12] [INFO] [tid 39] Identified this node as ID 0, using bind IP of '10.115.131.8', and network interface of enP5p9s0 [Aug 8 2025 14:23:120] [INFO] [tid 39] nvidia-imex persistence file /var/run/nvidia-imex/persist.dat does not exist. Assuming no previous importers. [Aug 8 2025 14:23:12] [INFO] [tid 39] NvGpu Library version matched with GPU Driver version [Aug 8 2025 14:23:12] [INFO] [tid 63] Started processing of incoming messages. [Aug 8 2025 14:23:12] [INFO] [tid 64] Started processing of incoming messages. [Aug 8 2025 14:23:12] [INFO] [tid 65] Started processing of incoming messages. [Aug 8 2025 14:23:12] [INFO] [tid 39] Creating gRPC channels to all peers (nPeers = 1). [Aug 8 2025 14:23:12] [INFO] [tid 66] Started processing of incoming messages. [Aug 8 2025 14:23:12] [INFO] [tid 39] IMEX_WAIT_FOR_QUORUM != FULL, continuing initialization without waiting for connections to all nodes. [Aug 8 2025 14:23:12] [INFO] [tid 67] Connection established to node 0 with ip address 10.115.131.8. Number of times connected: 1 [Aug 8 2025 14:23:12] [INFO] [tid 39] GPU event successfully subscribed
  6. Después de verificar todo, elimine la carga de trabajo y borre la configuración.

    kubectl delete -f imex-channel-injection.yaml