このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
Amazon EKS で P6e-GB200 UltraServer を使用する
このトピックでは、P6e-GB200 UltraServer で Amazon EKS を設定して使用する方法について説明します。4 基の NVIDIA Blackwell GPU を搭載した p6e-gb200.36xlarge インスタンスタイプは、P6e-GB200 UltraServer としてのみ使用できます。P6e-GB200 UltraServer には 2 つのタイプがあります。u-p6e-gb200x36 UltraServer には 9 個の p6e-gb200.36xlarge インスタンスがあり、u-p6e-gb200x72 UltraServer には 18 個の p6e-gb200.36xlarge インスタンスがあります。
詳細については、Amazon EC2 P6e-GB200 UltraServer のウェブページ
考慮事項
-
Amazon EKS は、Kubernetes バージョン 1.33 以降で P6e-GB200 UltraServer をサポートしています。この Kubernetes バージョンリリースでは、EKS および AL2023 EKS 最適化高速 AMI でデフォルトで有効になっている動的リソース割り当て
(DRA) がサポートされています。DRA は、P6e-GB200 UltraServer を EKS で使用するための要件です。DRA は Karpenter または EKS Auto Mode ではサポートされていません。EKS で P6e-GB200 UltraServer を使用する場合は、EKS セルフマネージド型ノードグループまたは EKS マネージド型ノードグループを使用することをお勧めします。 -
P6e-GB200 UltraServer は、EC2 Capacity Blocks for ML
を通じて利用できます。キャパシティブロックを使用して EKS ノードを起動する方法については、「Amazon EKS で AI/ML ワークロードのコンピューティングリソースを管理する」を参照してください。 -
キャパシティブロックを使用して EKS マネージド型ノードグループを使用する場合は、カスタム起動テンプレートを使用する必要があります。P6e-GB200 UltraServer で EKS マネージド型ノードグループをアップグレードする場合は、アップグレードする前にノードグループの希望するサイズを
0に設定する必要があります。 -
EKS 最適化高速 AMI の AL2023 ARM NVIDIA バリアントを使用することをお勧めします。この AMI には、P6e-GB200 UltraServer を操作するために必要なノードコンポーネントと設定が含まれています。独自の AMI を構築する場合は、ドライバーを含むノードとシステムソフトウェアの互換性をインストールして検証する責任があります。詳細については、「GPU インスタンス向けに EKS 最適化高速 AMI を使用する」を参照してください。
-
NVIDIA ドライバーバージョン 580 を含む EKS 最適化 AMI リリース
v20251103以降を使用することをお勧めします。この NVIDIA ドライバーバージョンでは、潜在的なメモリの過剰レポートに対処するために、コヒーレントなドライバーベースのメモリ管理 (CDMM) が有効になります。CDMM が有効になっている場合、NVIDIA マルチインスタンス GPU (MIG) と vGPU の機能はサポートされていません。CDMM の詳細については、「NVIDIA Coherent Driver-based Memory Management (CDMM)」を参照してください。 -
EKS 最適化 AL2023 NVIDIA AMI で NVIDIA GPU Operator
を使用する場合は、ドライバーとツールキットのオペレータインストールを無効にする必要があります。これらは既に AMI に含まれているためです。EKS 最適化 AL2023 NVIDIA AMI には、NVIDIA Kubernetes デバイスプラグインまたは NVIDIA DRA ドライバーが含まれていないため、これらは個別にインストールする必要があります。 -
各
p6e-gb200.36xlargeインスタンスは、最大 17 枚のネットワークカードで構成でき、UltraServer 間の通信に EFA を活用できます。ワークロードのネットワークトラフィックは UltraServer をまたぐことができますが、最高のパフォーマンスを得るには、UltraServer 内の GPU 通信に IMEX を活用し、同じ UltraServer にワークロードをスケジュールすることをお勧めします。詳細については、「P6e-GB200 インスタンスの EFA 設定」を参照してください。 -
各
p6e-gb200.36xlargeインスタンスには、7.5 TB のインスタンスストアストレージが 3 つあります。デフォルトでは、EKS 最適化 AMI はインスタンスストアをフォーマットおよびマウントしません。ノードのエフェメラルストレージは、エフェメラルストレージをリクエストするポッドと、ノードにダウンロードされるコンテナイメージとの間で共有できます。AL2023 EKS 最適化 AMI を使用している場合は、NodeConfig のインスタンスローカルストレージポリシーを RAID0 に設定することで、ユーザーデータのノードブートストラップの一部として設定できます。RAID0 に設定すると、インスタンスストアがストライプ化され、コンテナランタイムおよび kubelet がこのエフェメラルストレージを使用するように設定されます。
コンポーネント
P6e-GB200 UltraServer を使用して EKS でワークロードを実行するには、次のコンポーネントをお勧めします。オプションで、NVIDIA GPU Operator
| スタック | コンポーネント |
|---|---|
|
EKS 最適化高速 AMI |
カーネル 6.12 |
|
NVIDIA GPU ドライバー |
|
|
NVIDIA CUDA ユーザーモードドライバー |
|
|
NVIDIA Container Toolkit |
|
|
NVIDIA ファブリックマネージャー |
|
|
NVIDIA IMEX ドライバー |
|
|
NVIDIA NVLink サブネットマネージャー |
|
|
EFA driver |
|
|
ノードで実行されているコンポーネント |
VPC CNI |
|
EFA デバイスプラグイン |
|
|
NVIDIA K8s デバイスプラグイン |
|
|
NVIDIA DRA ドライバー |
|
|
NVIDIA Node Feature Discovery (NFD) |
|
|
NVIDIA GPU Feature Discovery (GFD) |
上記の表のノードコンポーネントは、次の機能を実行します。
-
VPC CNI: EKS で実行されているポッドのプライマリネットワークインターフェイスとして VPC IP を割り当てます
-
EFA デバイスプラグイン: EKS で実行されているポッドのセカンダリネットワークとして EFA デバイスを割り当てます。P6e-GB200 UltraServer 間のネットワークトラフィックを担当します。マルチノードワークロードの場合、UltraServe 内の GPU 間通信はマルチノード NVLink を介して行われます。
-
NVIDIA Kubernetes デバイスプラグイン: EKS で実行されているポッドのデバイスとして GPU を割り当てます。NVIDIA DRA ドライバー の GPU 割り当て機能が実験段階を終えるまで、NVIDIA Kubernetes デバイスプラグインを使用することをお勧めします。最新情報については、NVIDIA DRA ドライバーのリリース
を参照してください。 -
NVIDIA DRA ドライバー: P6e-GB200 UltraServer で実行されているワークロードに従う IMEX ドメインの作成を容易にする ComputeDomain カスタムリソースを有効にします。
-
ComputeDomain リソースは、Internode Memory Exchange (IMEX) ドメインを記述します。ComputeDomain の ResourceClaim を持つワークロードがクラスターにデプロイされると、NVIDIA DRA ドライバーは、一致するノードで実行される IMEX DaemonSet を自動的に作成し、ワークロードが開始される前にノード間で IMEX チャネル (複数可) を確立します。IMEX の詳細については、「マルチノード NVLink システム向け NVIDIA IMEX の概要
」を参照してください。 -
NVIDIA DRA ドライバーは、ネットワークトポロジと NVLink ドメインに関する情報を伝達する NVIDIA GFD によって適用される clique ID ラベル (
nvidia.com/gpu.clique) を使用します。 -
ワークロードジョブごとに ComputeDomain を作成するのがベストプラクティスです。
-
-
NVIDIA Node Feature Discovery (NFD): 検出されたノードレベルの属性に基づいて GFD がノードラベルを適用するために必要な依存関係。
-
NVIDIA GPU Feature Discovery (GFD):
nvidia.com/gpu.cliqueという NVIDIA 標準のトポロジーラベルをノードに適用します。同じnvidia.com/gpu.clique内のノードにはマルチノードの NVLink 到達可能性があり、アプリケーションのポッドアフィニティを使用して、ポッドを同じ NVlink ドメインにスケジュールできます。
手順
次のセクションでは、Kubernetes バージョン 1.33 以降を実行している EKS クラスターと、AL2023 ARM NVIDIA EKS 最適化高速 AMI を実行している P6e-GB200 UltraServer を含む 1 つ以上のノードグループがあることを前提としています。EKS セルフマネージドノードとマネージドノードグループの前提条件の手順については、「Amazon EKS で AI/ML ワークロードのコンピューティングリソースを管理する」にあるリンクを参照してください。
次の手順では、以下のコンポーネントを使用します。
| 名前 | バージョン | 説明 |
|---|---|---|
|
NVIDIA GPU Operator |
25.3.4 以降 |
NVIDIA Kubernetes デバイスプラグインや NFD/GFD などの必要なプラグインのライフサイクル管理用。 |
|
NVIDIA DRA ドライバー |
25.8.0 以降 |
ComputeDomain CRD と IMEX ドメイン管理用。 |
|
EFA デバイスプラグイン |
0.5.14 以降 |
UltraServer 間通信用。 |
NVIDIA GPU Operator をインストールする
NVIDIA GPU Operator は、Kubernetes クラスターで GPU を使用するために必要なコンポーネントの管理を簡素化します。NVIDIA GPU ドライバーとContainer Toolkit は、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 Operator をインストールします。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 Operator バージョン v25.3.4 以降では、NVIDIA DRA ドライバーを個別にインストールする必要があります。今後のリリースで変更される可能性があるため、NVIDIA GPU Operator のリリースノート
-
以下の設定を使用して、
dra-values.yamlという名前の Helm 値ファイルを作成します。NVIDIA GPU を搭載したノードにのみデプロイするように DRA ドライバーを設定するnodeAffinityとtolerationsに注意してください。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 UltraServer 上の分散 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 デバイスプラグインをインストールする
UltraServer 間で EFA 通信を使用するには、EFA 用の Kubernetes デバイスプラグインをインストールする必要があります。P6e-GB200 インスタンスは最大 17 枚のネットワークカードで設定でき、プライマリ NCI (インデックス 0) は interface タイプで、最大 100 Gbps の ENA 帯域幅をサポートしている必要があります。ノードのプロビジョニング中に、要件に従って EFA インターフェイスと ENA インターフェイスを設定します。EFA 設定の詳細については、「P6e-GB200 インスタンスの EFA 設定」に関する AWS ドキュメントを参照してください。
-
以下の設定を使用して、
efa-values.yamlという名前の Helm 値ファイルを作成します。tolerations: - key: nvidia.com/gpu operator: Exists effect: NoSchedule -
前のステップで作成した
dra-values.yamlファイルを使用して、クラスターに NVIDIA DRA Operator をインストールします。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例えば、各 NCI グループに 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 ドメイン内の 2 つのノードにまたがるマルチノード帯域幅テストを実行するには、まず MPI Operator をインストールします。
kubectl create -f https://github.com/kubeflow/mpi-operator/releases/download/v0.7.0/mpi-operator.yaml -
テストマニフェストを定義する
nvbandwidth-test-job.yamlという名前の Helm 値ファイルを作成します。マルチノード NVLink 到達可能性を持つ同じ NVLink ドメインにワーカーをスケジュールするためのnvidia.com/gpu.cliqueポッドアフィニティに注意してください。NVIDIA DRA ドライバーバージョン
v25.8.0以降では、ComputeDomains は伸縮自在であり、ComputeDomain 定義で.spec.numNodesを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 に 2 つのノードがあることを確認できます。
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