在 Amazon SageMaker HyperPod 中使用 UltraServers - Amazon SageMaker AI

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Amazon SageMaker HyperPod 中使用 UltraServers

SageMaker HyperPod 支援 Ultraservers,可為 AI 和機器學習工作負載提供高效能 GPU 運算功能。這些 Ultraserver 以 NVIDIA GB200 和 NVL72 架構為基礎,以雙機架組態提供跨 18 GB200 執行個體的 NVLink 連線能力,總共 72 個 B200 GPUs。此 NVLink 網狀架構可讓工作負載使用 GPU 通訊,將可用 GPU 容量和可定址記憶體增加到超過離散執行個體的可能範圍,以支援更複雜和資源密集的 AI 模型。NVLink 連線功能由 NVIDIA IMEX 技術啟用,可處理相同機架內執行個體間安全 GPU 光纖連線的低階組態。

HyperPod 透過智慧拓撲意識和自動化組態,簡化這些 GPU 叢集的部署和管理。平台會自動探索並標記節點的實體位置和容量區塊資訊,以支援分散式工作負載的拓撲感知排程。HyperPod 會抽象化複雜的 IMEX 組態需求,讓您專注於工作負載部署,而非低階 GPU 架構設定。您可以選擇靈活的部署選項,包括自我管理節點和 EKS 受管節點群組。Amazon EKS 提供最佳化 AMIs,其中包含預先設定的 NVIDIA 驅動程式、Fabric Manager、IMEX 驅動程式,以及所有必要的系統軟體,以實現無縫操作。

整合包含 Pod 置放功能,可確保使用標準 Kubernetes 拓撲標籤,在 NVL72 網域間以最佳方式排程分散式工作負載。內建監控和自動化復原功能提供操作支援,其中 AMI 運作狀態代理程式會從核心日誌偵測 GPU 錯誤,並可以自動修復問題或取代受管節點群組中的故障節點。GPU 擴展、智慧型工作負載置放和自動化操作的這種組合,可協助您專注於 AI/ML 創新,而不是基礎設施複雜性,同時實現 GPU 投資的最大效能。

若要搭配 HyperPod 叢集使用 UltraServers 進行設定,請參閱下列步驟:

  1. 建立以 EKS 為基礎的 HyperPod 叢集。當您選擇執行個體群組時,請務必選擇 UltraServer。

  2. 建立叢集之後,請使用下列命令安裝操作外掛程式:

    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 0.17.3 版

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

    GPU 功能探索

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

您現在可以執行任務。下列範例示範如何建立網域、設定 IMEX 網域,以及啟用頻道配置。這些步驟也可讓您建立 Pod 來佈建 NCCL 通訊的頻道。

  1. 建立要與 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. 套用您建立的組態。

    kubectl apply -f imex-channel-injection.yaml
  3. 若要確認您的 Pod 已建立,請執行 get pods命令。

    kubectl get pods kubectl get pods -n nvidia-dra-driver-gpu -l resource.nvidia.com/computeDomain
  4. 您也可以從 Pod 檢查日誌,查看日誌是否已配置通訊管道。

    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. 您也可以檢查日誌,以確認自動化 IMEX 組態是否使用配置的頻道執行。

    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. 驗證所有項目之後,請刪除工作負載並移除組態。

    kubectl delete -f imex-channel-injection.yaml