協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 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 運算子
| 堆疊 | 元件 |
|---|---|
|
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中將這些項目設為 。
-
使用下列組態建立名為
gpu-operator-values.yaml的 Helm 值檔案。devicePlugin: enabled: true nfd: enabled: true gfd: enabled: true driver: enabled: false toolkit: enabled: false migManager: enabled: false -
使用您在上一個步驟中建立
gpu-operator-values.yaml的檔案,為您的叢集安裝 NVIDIA GPU 運算子。helm repo add nvidia https://helm.ngc.nvidia.com/nvidia helm repo updatehelm 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 運算子版本備註
-
使用下列組態建立名為
dra-values.yaml的 Helm 值檔案。請注意nodeAffinity和tolerations,其會將 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 -
使用您在上一個步驟中建立
dra-values.yaml的檔案,為您的叢集安裝 NVIDIA DRA 驅動程式。helm repo add nvidia https://helm.ngc.nvidia.com/nvidia helm repo updatehelm 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 -
安裝後,DRA 驅動程式會建立可讓 Kubernetes 了解和配置
ComputeDomain資源DeviceClass的資源,讓 P6e-GB200 UltraServers 上的分散式 GPU 工作負載能夠進行 IMEX 管理。確認 DRA 資源可透過下列命令使用。
kubectl api-resources | grep resource.k8s.iodeviceclasses 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 ResourceSlicekubectl get deviceclassesNAME 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 組態。
-
使用下列組態建立名為
efa-values.yaml的 Helm 值檔案。tolerations: - key: nvidia.com/gpu operator: Exists effect: NoSchedule -
使用您在上一個步驟中建立
dra-values.yaml的檔案,為您的叢集安裝 NVIDIA DRA 運算子。helm repo add eks https://aws.github.io/eks-charts helm repo updatehelm 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 驗證 IMEX
對於多節點 NVLINK NCCL 測試和其他微型基準,請檢閱 awesome-distributed-training
-
若要跨 NVL72 網域中的兩個節點執行多節點頻寬測試,請先安裝 MPI 運算子:
kubectl create -f https://github.com/kubeflow/mpi-operator/releases/download/v0.7.0/mpi-operator.yaml -
建立名為 的 Helm 值檔案
nvbandwidth-test-job.yaml,以定義測試資訊清單。請注意nvidia.com/gpu.clique,在具有多節點 NVLink 連線能力的相同 NVLink 網域中排程工作者的 Pod 親和性。從 NVIDIA DRA 驅動程式版本
v25.8.0ComputeDomains 開始是彈性的,.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 -
建立 ComputeDomain 並使用下列命令啟動任務。
kubectl apply -f nvbandwidth-test-job.yaml -
ComputeDomain 建立,您可以看到工作負載的 ComputeDomain 有兩個節點:
kubectl get computedomains.resource.nvidia.com -o yamlstatus: nodes: - cliqueID: <ClusterUUID>.<Clique ID> ipAddress: <node-ip> name: <node-hostname> - cliqueID: <ClusterUUID>.<Clique ID> ipAddress: <node-ip> name: <node-hostname> status: Ready -
使用下列命令檢閱任務的結果。
kubectl logs --tail=-1 -l job-name=nvbandwidth-test-launcher -
測試完成時,請使用下列命令將其刪除。
kubectl delete -f nvbandwidth-test-job.yaml