Utilizzo UltraServers in Amazon SageMaker HyperPod - Amazon SageMaker AI

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

Utilizzo UltraServers in Amazon SageMaker HyperPod

SageMaker HyperPod il supporto per Ultraservers offre funzionalità di elaborazione GPU ad alte prestazioni per carichi di lavoro di intelligenza artificiale e apprendimento automatico. Basati su NVIDIA GB2 00 e NVL72 architettura, questi Ultraserver forniscono NVLink connettività su 18.00 istanze in una configurazione dual-rack, per un totale di 72 GB2 B200. GPUs Questo NVLink tessuto consente ai carichi di lavoro di utilizzare comunicazioni GPU che aumentano la capacità utilizzabile della GPU e la memoria indirizzabile oltre quanto possibile con le istanze discrete, supportando modelli di intelligenza artificiale più complessi e che richiedono molte risorse. La NVLink connettività è abilitata dalla tecnologia NVIDIA IMEX, che gestisce la configurazione di basso livello per connessioni sicure in struttura di GPU tra istanze all'interno dello stesso rack.

HyperPod semplifica l'implementazione e la gestione di questi cluster di GPU attraverso il riconoscimento intelligente della topologia e la configurazione automatizzata. La piattaforma rileva ed etichetta automaticamente i nodi con la loro posizione fisica e le informazioni sui blocchi di capacità, il che supporta la pianificazione basata sulla topologia per i carichi di lavoro distribuiti. HyperPod astrae i complessi requisiti di configurazione IMEX, consentendoti di concentrarti sull'implementazione dei carichi di lavoro piuttosto che sulla configurazione dell'infrastruttura GPU di basso livello. È possibile scegliere opzioni di implementazione flessibili, tra cui nodi autogestiti e gruppi di nodi gestiti da EKS. Amazon EKS offre soluzioni ottimizzate AMIs che includono driver NVIDIA preconfigurati, Fabric Manager, driver IMEX e tutto il software di sistema necessario per un funzionamento senza interruzioni.

L'integrazione include funzionalità di posizionamento dei pod che garantiscono una pianificazione ottimale dei carichi di lavoro distribuiti tra i NVL72 domini utilizzando etichette topologiche Kubernetes standard. Le funzionalità integrate di monitoraggio e ripristino automatizzato forniscono supporto operativo, in cui l'AMI Health Agent rileva gli errori della GPU dai log del kernel e può correggere automaticamente i problemi o sostituire i nodi difettosi nei gruppi di nodi gestiti. Questa combinazione di scalabilità della GPU, posizionamento intelligente dei carichi di lavoro e operazioni automatizzate consente di concentrarsi sulle AI/ML innovazioni anziché sulla complessità dell'infrastruttura, ottenendo al contempo le massime prestazioni dagli investimenti in GPU.

Per iniziare la configurazione UltraServers con il HyperPod cluster, segui i seguenti passaggi:

  1. Crea un cluster basato su EKS HyperPod . Quando scegli un gruppo di istanze, assicurati di scegliere un. UltraServer

  2. Dopo aver creato il cluster, utilizza i seguenti comandi per installare i plugin operativi:

    Plugin per dispositivi NVIDIA v0.17.2

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

    FD DaemonSet versione 0.17.3

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

    Scoperta delle funzionalità della GPU

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

Ora puoi eseguire i lavori. L'esempio seguente mostra come creare un dominio, configurare un dominio IMEX e abilitare l'allocazione dei canali. Questi passaggi consentono inoltre di creare un pod per fornire un canale per la comunicazione NCCL.

  1. Crea un file con le specifiche delle risorse da usare 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. Applica la configurazione che hai creato.

    kubectl apply -f imex-channel-injection.yaml
  3. Per verificare che il tuo pod sia stato creato, esegui get pods i comandi.

    kubectl get pods kubectl get pods -n nvidia-dra-driver-gpu -l resource.nvidia.com/computeDomain
  4. Puoi anche controllare i log del pod per vedere se è assegnato un canale di comunicazione.

    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. Puoi anche controllare i log per verificare che la configurazione IMEX automatizzata sia in esecuzione con un canale allocato.

    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. Dopo aver verificato tutto, elimina il carico di lavoro e rimuovi la configurazione.

    kubectl delete -f imex-channel-injection.yaml