搭配 Amazon EKS 使用 P6e-GB200 UltraServers - Amazon EKS

協助改進此頁面

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

若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。

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

搭配 Amazon EKS 使用 P6e-GB200 UltraServers

本主題說明如何設定和使用 Amazon EKS 搭配 P6e-GB200 UltraServers。具有 4 個 NVIDIA Blackwell GPUs 的p6e-gb200.36xlarge執行個體類型僅提供 P6e-GB200 UltraServers。P6e-GB200 UltraServers 有兩種類型。u-p6e-gb200x36 UltraServer 有 9 個p6e-gb200.36xlarge執行個體,u-p6e-gb200x72UltraServer 有 18 個p6e-gb200.36xlarge執行個體。

若要進一步了解,請參閱 Amazon EC2 P6e-GB200 UltraServers 網頁

考量事項

  • Amazon EKS 支援 P6e-GB200 UltraServers for Kubernetes 1.33 版及更新版本。此 Kubernetes 版本支援動態資源配置 (DRA),預設為在 EKS 和 AL2023 EKS 最佳化加速 AMIs 中啟用。DRA 是搭配 EKS 使用 P6e-GB200 UltraServers 的要求。Karpenter 或 EKS Auto Mode 不支援 DRA,建議在搭配 EKS 使用 P6e-GB200 UltraServers 時使用 EKS 自我管理節點群組或 EKS 受管節點群組。

  • P6e-GB200 UltraServers 可透過適用於 ML 的 EC2 容量區塊提供。管理 Amazon EKS 上 AI/ML 工作負載的運算資源 如需如何使用容量區塊啟動 EKS 節點的資訊,請參閱 。

  • 搭配容量區塊使用 EKS 受管節點群組時,您必須使用自訂啟動範本。使用 P6e-GB200 UltraServers 升級 EKS 受管節點群組時,您必須先將節點群組的所需大小設定為 ,0才能升級。

  • 建議使用 EKS 最佳化加速 AMIs 的 AL2023 ARM NVIDIA 變體。此 AMI 包含使用 P6e-GB200 UltraServers 所需的節點元件和組態。如果您決定建置自己的 AMI,您必須負責安裝和驗證節點和系統軟體的相容性,包括驅動程式。如需詳細資訊,請參閱針對 GPU 執行個體使用 EKS 最佳化AMIs

  • 建議使用 EKS 最佳化 AMI 版本 v20251103 或更新版本,其中包括 NVIDIA 驅動程式 580 版。此 NVIDIA 驅動程式版本可讓 Coherent 驅動程式型記憶體 (CDMM) 處理潛在的記憶體過度報告。啟用 CDMM 時,不支援下列功能:NVIDIA Multi-Instance GPU (MIG) 和 vGPU。如需 CDMM 的詳細資訊,請參閱 NVIDIA Coherent 驅動程式型記憶體管理 (CDMM)

  • 搭配 EKS 最佳化 AL2023 NVIDIA AMI 使用 NVIDIA GPU 運算子時,您必須停用驅動程式和工具組的運算子安裝,因為這些已包含在 AMI 中。 AL2023 EKS 最佳化 AL2023 NVIDIA AMIs 不包含 NVIDIA Kubernetes 裝置外掛程式或 NVIDIA DRA 驅動程式,且必須單獨安裝。

  • 每個p6e-gb200.36xlarge執行個體最多可以設定 17 個網路卡,並可以利用 EFA 在 UltraServers 之間進行通訊。工作負載網路流量可以跨 UltraServers,但為取得最高效能,建議您在利用 IMEX 進行 UltraServer GPU 內通訊的相同 UltraServer 中排程工作負載。 UltraServer 如需詳細資訊,請參閱 P6e-GB200 執行個體的 EFA 組態

  • 每個p6e-gb200.36xlarge執行個體都有 3x 7.5TB 執行個體存放區儲存空間。根據預設,EKS 最佳化 AMI 不會格式化和掛載執行個體存放區。節點的暫時性儲存可以在請求暫時性儲存的 Pod 和下載到節點的容器映像之間共用。如果使用 AL2023 EKS 最佳化 AMI,您可以透過將 NodeConfig 中的執行個體本機儲存政策設定為 RAID0,將其設定為使用者資料中節點引導的一部分。將 設定為 RAID0 會分割執行個體存放區,並設定容器執行時間和 kubelet,以利用此暫時性儲存。

元件

建議使用 P6e-GB200 UltraServers 在 EKS 上執行工作負載時,建議使用下列元件。您可以選擇性地使用 NVIDIA GPU 運算子來安裝 NVIDIA 節點元件。搭配 EKS 最佳化 AL2023 NVIDIA AMI 使用 NVIDIA GPU 運算子時,您必須停用驅動程式和工具組的運算子安裝,因為這些已包含在 AMI 中。

堆疊 元件

EKS 最佳化加速 AMI

核心 6.12

NVIDIA GPU 驅動程式

NVIDIA CUDA 使用者模式驅動程式

NVIDIA 容器工具組

NVIDIA 布料管理員

NVIDIA IMEX 驅動程式

NVIDIA NVLink 子網路管理員

EFA 驅動程式

在節點上執行的元件

VPC CNI

EFA 裝置外掛程式

NVIDIA K8s 裝置外掛程式

NVIDIA DRA 驅動程式

NVIDIA 節點功能探索 (NFD)

NVIDIA GPU 功能探索 (GFD)

上表中的節點元件會執行下列函數:

  • VPC CNI:將 VPC IPs 配置為在 EKS 上執行之 Pod 的主要網路介面

  • EFA 裝置外掛程式:將 EFA 裝置配置為在 EKS 上執行之 Pod 的次要網路。負責跨 P6e-GB200 UltraServers 的網路流量。對於多節點工作負載,UltraServer GPU-to-GPU 可以流經多節點 NVLink。

  • NVIDIA Kubernetes 裝置外掛程式:將 GPUs 配置為在 EKS 上執行之 Pod 的裝置。建議使用 NVIDIA Kubernetes 裝置外掛程式,直到 NVIDIA DRA 驅動程式 GPU 配置功能從實驗畢業。如需更新的資訊,請參閱 NVIDIA DRA 驅動程式版本

  • NVIDIA DRA 驅動程式:啟用 ComputeDomain 自訂資源,以促進在 P6e-GB200 UltraServers 上執行工作負載之後建立 IMEX 網域。

    • ComputeDomain 資源說明 Internode Memory Exchange (IMEX) 網域。當具有 ComputeDomain ResourceClaim 的工作負載部署到叢集時,NVIDIA DRA 驅動程式會自動建立在相符節點上執行的 IMEX DaemonSet,並在工作負載啟動之前在節點之間建立 IMEX 通道 (IMEX)。若要進一步了解 IMEX,請參閱適用於多節點 NVLink 系統的 NVIDIA IMEX 概觀

    • NVIDIA DRA 驅動程式使用 NVIDIA GFD 套用的 clique ID 標籤 (nvidia.com/gpu.clique),可轉送網路拓撲和 NVLink 網域的知識。

    • 最佳實務是為每個工作負載任務建立 ComputeDomain。

  • NVIDIA 節點功能探索 (NFD):GFD 根據探索到的節點層級屬性套用節點標籤所需的相依性。

  • NVIDIA GPU 功能探索 (GFD):將稱為 的 NVIDIA nvidia.com/gpu.clique 標準拓撲標籤套用至節點。相同 內的節點nvidia.com/gpu.clique具有多節點 NVLink 連線能力,您可以在應用程式中使用 Pod 親和性,將 Pod 排程至相同的 NVlink 網域。

程序

下節假設您有一個執行 Kubernetes 1.33 版或更新版本的 EKS 叢集,其中包含一或多個執行 AL2023 ARM NVIDIA EKS 最佳化加速 AMI 的 P6e-GB200 UltraServers 節點群組。如需 EKS 自我管理節點和受管節點群組的先決條件步驟管理 Amazon EKS 上 AI/ML 工作負載的運算資源,請參閱 中的連結。

下列程序使用下列元件。

Name 版本 Description

NVIDIA GPU Operator

25.3.4+

用於必要外掛程式的生命週期管理,例如 NVIDIA Kubernetes 裝置外掛程式和 NFD/GFD。

NVIDIA DRA 驅動程式

25.8.0+

對於 ComputeDomain CRDs和 IMEX 網域管理。

EFA 裝置外掛程式

0.5.14+

用於跨 UltraServer 通訊。

安裝 NVIDIA GPU 運算子

NVIDIA GPU 運算子可簡化在 Kubernetes 叢集中使用 GPUs 所需的元件管理。由於 NVIDIA GPU 驅動程式和容器工具組已安裝為 EKS 最佳化加速 AMI 的一部分,因此必須在 Helm 值組態false中將這些項目設為 。

  1. 使用下列組態建立名為 gpu-operator-values.yaml的 Helm 值檔案。

    devicePlugin: enabled: true nfd: enabled: true gfd: enabled: true driver: enabled: false toolkit: enabled: false migManager: enabled: false
  2. 使用您在上一個步驟中建立gpu-operator-values.yaml的檔案,為您的叢集安裝 NVIDIA GPU 運算子。

    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

安裝 NVIDIA DRA 驅動程式

從 NVIDIA GPU 運算子版本 開始v25.3.4,必須單獨安裝 NVIDIA DRA 驅動程式。建議追蹤 NVIDIA GPU 運算子版本備註,因為這可能會在未來版本中變更。

  1. 使用下列組態建立名為 dra-values.yaml的 Helm 值檔案。請注意 nodeAffinitytolerations,其會將 DRA 驅動程式設定為僅在具有 NVIDIA GPU 的節點上部署。

    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. 使用您在上一個步驟中建立dra-values.yaml的檔案,為您的叢集安裝 NVIDIA DRA 驅動程式。

    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. 安裝後,DRA 驅動程式會建立可讓 Kubernetes 了解和配置ComputeDomain資源DeviceClass的資源,讓 P6e-GB200 UltraServers 上的分散式 GPU 工作負載能夠進行 IMEX 管理。

    確認 DRA 資源可透過下列命令使用。

    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

安裝 EFA 裝置外掛程式

若要在 UltraServers 之間使用 EFA 通訊,您必須安裝適用於 EFA 的 Kubernetes 裝置外掛程式。P6e-GB200 執行個體最多可設定 17 個網路卡,且主要 NCI (索引 0) 必須為 類型,interface並支援高達 100 Gbps 的 ENA 頻寬。在節點佈建期間,根據您的需求設定 EFA 和 ENA 介面。如需 EFA 組態的詳細資訊,請參閱 P6e-GB200 執行個體 AWS 文件的 EFA 組態。

  1. 使用下列組態建立名為 efa-values.yaml的 Helm 值檔案。

    tolerations: - key: nvidia.com/gpu operator: Exists effect: NoSchedule
  2. 使用您在上一個步驟中建立dra-values.yaml的檔案,為您的叢集安裝 NVIDIA DRA 運算子。

    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

    例如,如果您在描述節點時,將執行個體設定為在每個 NIC 群組中使用 1 個僅限 efa 的界面,則預期每個節點會看到 4 個可配置的 EFA 裝置。

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

對於多節點 NVLINK NCCL 測試和其他微型基準,請檢閱 awesome-distributed-training GitHub 儲存庫。下列步驟說明如何使用 nvbandwidth 執行多節點 NVLink 測試。

  1. 若要跨 NVL72 網域中的兩個節點執行多節點頻寬測試,請先安裝 MPI 運算子:

    kubectl create -f https://github.com/kubeflow/mpi-operator/releases/download/v0.7.0/mpi-operator.yaml
  2. 建立名為 的 Helm 值檔案nvbandwidth-test-job.yaml,以定義測試資訊清單。請注意nvidia.com/gpu.clique,在具有多節點 NVLink 連線能力的相同 NVLink 網域中排程工作者的 Pod 親和性。

    從 NVIDIA DRA 驅動程式版本 v25.8.0 ComputeDomains 開始是彈性的,.spec.numNodes可以在 ComputeDomain 定義0中設定為 。檢閱最新的 NVIDIA DRA 驅動程式版本備註以取得更新。

    --- 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. 建立 ComputeDomain 並使用下列命令啟動任務。

    kubectl apply -f nvbandwidth-test-job.yaml
  4. ComputeDomain 建立,您可以看到工作負載的 ComputeDomain 有兩個節點:

    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. 使用下列命令檢閱任務的結果。

    kubectl logs --tail=-1 -l job-name=nvbandwidth-test-launcher
  6. 測試完成時,請使用下列命令將其刪除。

    kubectl delete -f nvbandwidth-test-job.yaml