Utilisation UltraServers sur Amazon SageMaker HyperPod - Amazon SageMaker AI

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation UltraServers sur Amazon SageMaker HyperPod

SageMaker HyperPod le support des Ultraservers fournit des capacités de calcul par GPU hautes performances pour les charges de travail liées à l'IA et à l'apprentissage automatique. Basés sur NVL72 l'architecture NVIDIA GB2 00, ces Ultraservers fournissent une NVLink connectivité à 18 GB2 00 instances dans une configuration à double rack, pour un total de 72 B200. GPUs Cette NVLink structure permet aux charges de travail d'utiliser les communications GPU qui augmentent la capacité utilisable du GPU et la mémoire adressable au-delà de ce qui est possible avec des instances discrètes, prenant en charge des modèles d'IA plus complexes et gourmands en ressources. La NVLink connectivité est rendue possible par la technologie NVIDIA IMEX, qui gère la configuration de bas niveau pour des connexions sécurisées à la structure GPU entre les instances d'un même rack.

HyperPod simplifie le déploiement et la gestion de ces clusters de GPU grâce à une prise en compte intelligente de la topologie et à une configuration automatisée. La plate-forme découvre et étiquette automatiquement les nœuds en fonction de leur emplacement physique et des informations sur les blocs de capacité, ce qui permet de planifier les charges de travail distribuées en fonction de la topologie. HyperPod résume les exigences complexes de configuration IMEX, vous permettant de vous concentrer sur le déploiement de la charge de travail plutôt que sur la configuration d'une structure GPU de bas niveau. Vous pouvez choisir des options de déploiement flexibles, notamment des nœuds autogérés et des groupes de nœuds gérés par EKS. Amazon EKS fournit des solutions optimisées AMIs qui incluent des pilotes NVIDIA préconfigurés, Fabric Manager, des pilotes IMEX et tous les logiciels système nécessaires pour un fonctionnement fluide.

L'intégration inclut des fonctionnalités de placement de pods qui garantissent que les charges de travail distribuées sont planifiées de manière optimale entre les NVL72 domaines à l'aide d'étiquettes topologiques Kubernetes standard. Les fonctionnalités intégrées de surveillance et de restauration automatique fournissent un support opérationnel. L'agent de santé AMI détecte les erreurs du GPU dans les journaux du noyau et peut résoudre automatiquement les problèmes ou remplacer les nœuds défectueux dans les groupes de nœuds gérés. Cette combinaison d'évolutivité du GPU, de placement intelligent de la charge de travail et d'opérations automatisées vous permet de vous concentrer sur vos AI/ML innovations plutôt que sur la complexité de l'infrastructure, tout en optimisant les performances de vos investissements en GPU.

Pour configurer l'utilisation UltraServers de votre HyperPod cluster, suivez les étapes suivantes :

  1. Créez un HyperPod cluster basé sur EKS. Lorsque vous choisissez un groupe d'instances, assurez-vous d'en choisir un UltraServer.

  2. Une fois votre cluster créé, utilisez les commandes suivantes pour installer des plugins opérationnels :

    Plug-in pour appareil 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 v0.17.3

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

    Découverte des fonctionnalités du GPU

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

Vous pouvez désormais exécuter des tâches. L'exemple suivant montre comment créer un domaine, configurer un domaine IMEX et activer l'allocation de canaux. Ces étapes vous permettent également de créer un module pour approvisionner un canal pour la communication NCCL.

  1. Créez un fichier de spécification de ressource à utiliser avec 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. Appliquez la configuration que vous avez créée.

    kubectl apply -f imex-channel-injection.yaml
  3. Pour vérifier que votre pod est créé, exécutez les get pods commandes.

    kubectl get pods kubectl get pods -n nvidia-dra-driver-gpu -l resource.nvidia.com/computeDomain
  4. Vous pouvez également consulter les journaux du module pour voir s'il a attribué un canal de communication.

    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. Vous pouvez également consulter les journaux pour vérifier que la configuration IMEX automatisée fonctionne avec un canal alloué.

    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. Après avoir tout vérifié, supprimez la charge de travail et supprimez la configuration.

    kubectl delete -f imex-channel-injection.yaml