이 페이지 개선에 도움 주기
이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.
Amazon EKS에서 P6e-GB200 UltraServers 사용
이 주제에서는 P6e-GB200 UltraServers에서 Amazon EKS를 구성하고 사용하는 방법을 설명합니다. NVIDIA Blackwell GPU가 4개인 p6e-gb200.36xlarge 인스턴스 유형은 P6e-GB200 UltraServers로만 사용할 수 있습니다. P6e-GB200 UltraServers에는 두 가지 유형이 있습니다. u-p6e-gb200x36 UltraServer에는 9개의 p6e-gb200.36xlarge 인스턴스가 있고, u-p6e-gb200x72 UltraServer에는 18개의 p6e-gb200.36xlarge 인스턴스가 있습니다.
자세한 내용은 Amazon EC2 P6e-GB200 UltraServers 웹 페이지
고려 사항
-
Amazon EKS는 Kubernetes 버전 1.33 이상에 대해 P6e-GB200 UltraServers를 지원합니다. 이 Kubernetes 버전 릴리스에서는 기본적으로 EKS 및 AL2023 EKS 최적화 가속 AMI에서 활성화된 동적 리소스 할당
(DRA)에 대한 지원을 제공합니다. DRA는 EKS에서 P6e-GB200 UltraServers를 사용할 때 요구 사항입니다. DRA는 Karpenter 또는 EKS Auto Mode에서 지원되지 않으며, EKS에서 P6e-GB200 UltraServers를 사용할 때 EKS 자체 관리형 노드 그룹 또는 EKS 관리형 노드 그룹을 사용하는 것이 좋습니다. -
P6e-GB200 UltraServers는 ML용 EC2 용량 블록
을 통해 사용할 수 있습니다. 용량 블록을 통해 EKS 노드를 시작하는 방법에 대한 자세한 내용은 Amazon EKS에서 AI/ML 워크로드의 컴퓨팅 리소스 관리 섹션을 참조하세요. -
용량 블록을 통해 EKS 관리형 노드 그룹을 사용하는 경우 사용자 지정 시작 템플릿을 사용해야 합니다. P6e-GB200 UltraServers를 사용하여 EKS 관리형 노드 그룹을 업그레이드하는 경우 업그레이드하기 전에 노드 그룹의 원하는 크기를
0으로 설정해야 합니다. -
EKS 최적화 가속 AMI의 AL2023 ARM NVIDIA 변형을 사용하는 것이 좋습니다. 이 AMI에는 P6e-GB200 UltraServers와 함께 작동하는 데 필요한 노드 구성 요소 및 구성이 포함되어 있습니다. 자체 AMI를 빌드하기로 결정한 경우 드라이버를 포함한 노드 및 시스템 소프트웨어를 설치하고 해당 호환성을 검증할 책임은 사용자에게 있습니다. 자세한 내용은 GPU 인스턴스에 대해 EKS 최적화 가속 AMI 사용 섹션을 참조하세요.
-
NVIDIA 드라이버 버전 580이 포함된 EKS 최적화 AMI 릴리스
v20251103이상을 사용하는 것이 좋습니다. 이 NVIDIA 드라이버 버전을 사용하면 Coherent 드라이버 기반 메모리 메모리(CDMM)로 잠재적 메모리 과다 보고를 해결할 수 있습니다. CDMM이 활성화되면 NVIDIA 다중 인스턴스 GPU(MIG) 및 vGPU 기능은 지원되지 않습니다. CDMM에 대한 자세한 내용은 NVIDIA Coherent Driver-based Memory Management (CDMM)를 참조하세요. -
EKS 최적화 AL2023 NVIDIA AMI와 함께 NVIDIA GPU 운영자
를 사용하는 경우 드라이버 및 툴킷의 운영자 설치는 이미 AMI에 포함되어 있으므로 이를 비활성화해야 합니다. EKS 최적화 AL2023 NVIDIA AMI에는 NVIDIA Kubernetes 디바이스 플러그인 또는 NVIDIA DRA 드라이버가 포함되어 있지 않으므로 별도로 설치해야 합니다. -
각
p6e-gb200.36xlarge인스턴스는 최대 17개의 네트워크 카드로 구성될 수 있으며 UltraServers 간 통신에 EFA를 활용할 수 있습니다. 워크로드 네트워크 트래픽은 UltraServers를 통과할 수 있지만, 최고의 성능을 위해 UltraServers 내 GPU 통신을 지원하고자 IMEX를 활용하여 동일한 UltraServers에서 워크로드를 예약하는 것이 좋습니다. 자세한 내용은 P6e-GB200 인스턴스에 대한 네트워크 구성을 참조하세요. -
각
p6e-gb200.36xlarge인스턴스에는 3개의 7.5TB 인스턴스 저장소 스토리지가 있습니다. 기본적으로 EKS 최적화 AMI는 인스턴스 저장소를 포맷하고 탑재하지 않습니다. 노드에 다운로드되는 컨테이너 이미지 및 임시 스토리지를 요청하는 포드 사이에서 노드의 임시 스토리지를 공유할 수 있습니다. 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 IP를 EKS에서 실행하는 포드의 기본 네트워크 인터페이스로 할당합니다.
-
EFA 디바이스 플러그인: EFA 디바이스를 EKS에서 실행하는 포드의 보조 네트워크로 할당합니다. P6e-GB200 UltraServers에서 네트워크 트래픽을 담당합니다. 다중 노드 워크로드의 경우 UltraServers 내부의 GPU 대 GPU는 다중 노드 NVLink를 통해 흐를 수 있습니다.
-
NVIDIA Kubernetes 디바이스 플러그인: GPU를 EKS에서 실행하는 포드의 디바이스로 할당합니다. NVIDIA DRA 드라이버 GPU 할당 기능이 실험 단계를 마칠 때까지 NVIDIA Kubernetes 디바이스 플러그인을 사용하는 것이 좋습니다. 업데이트된 정보는 NVIDIA DRA 드라이버 릴리스
를 참조하세요. -
NVIDIA DRA 드라이버: P6e-GB200 UltraServers에서 실행하는 워크로드를 따르는 IMEX 도메인의 생성을 용이하게 하는 ComputeDomain 사용자 지정 리소스를 활성화합니다.
-
ComputeDomain 리소스는 Internode Memory Exchange(IMEX) 도메인을 설명합니다. ComputeDomain용 ResourceClaim을 사용하는 워크로드가 클러스터에 배포되면 NVIDIA DRA 드라이버는 일치하는 노드에서 실행되는 IMEX DaemonSet를 자동으로 생성하고 워크로드가 시작되기 전에 노드 사이에서 IMEX 채널을 설정합니다. IMEX에 대해 자세히 알아보려면 overview of NVIDIA IMEX for multi-node NVLink systems
를 참조하세요. -
NVIDIA DRA 드라이버는 네트워크 토폴로지 및 NVLink 도메인에 대한 지식을 전달하는 NVIDIA GFD에 의해 적용된 클리크 ID 레이블(
nvidia.com/gpu.clique)을 사용합니다. -
워크로드 작업당 ComputeDomain을 생성하는 것이 모범 사레입니다.
-
-
NVIDIA 노드 기능 검색(NFD): GFD가 검색된 노드 수준 속성을 기반으로 노드 레이블을 적용하는 데 필요한 종속성.
-
NVIDIA GPU 기능 검색(GFD): 노드에
nvidia.com/gpu.clique라는 NVIDIA 표준 토폴로지 레이블을 적용합니다. 동일한nvidia.com/gpu.clique내 노드는 다중 노드 NVLink 연결을 지원하며, 애플리케이션의 포드 친화도를 사용하여 동일한 NVlink 도메인에 대해 포드를 예약할 수 있습니다.
절차
다음 섹션에서는 AL2023 ARM NVIDIA EKS 최적화 가속 AMI를 실행하는 P6e-GB200 UltraServers가 있는 하나 이상의 노드 그룹을 포함하는 Kubernetes 버전 1.33 이상을 실행하는 EKS 클러스터가 있다고 가정합니다. EKS 자체 관리형 노드 및 관리형 노드 그룹의 사전 조건 단계는 Amazon EKS에서 AI/ML 워크로드의 컴퓨팅 리소스 관리의 링크를 참조하세요.
다음 절차에서는 아래 구성 요소를 사용합니다.
| 이름 | 버전 | 설명 |
|---|---|---|
|
NVIDIA GPU 운영자 |
25.3.4 이상 |
NVIDIA Kubernetes 디바이스 플러그인 및 NFD/GFD와 같은 필수 플러그인에 대한 수명 주기 관리의 경우. |
|
NVIDIA DRA 드라이버 |
25.8.0 이상 |
ComputeDomain CRD 및 IMEX 도메인 관리의 경우. |
|
EFA 디바이스 플러그인 |
0.5.14 이상 |
교차 UltraServers 통신의 경우. |
NVIDIA GPU 운영자 설치
NVIDIA GPU 운영자는 Kubernetes 클러스터에서 GPU를 사용하는 데 필요한 구성 요소의 관리를 단순화합니다. NVIDIA GPU 드라이버 및 컨테이너 툴킷은 EKS 최적화 가속 AMI의 일부로 설치되므로 헬름 값 구성에서 false로 설정해야 합니다.
-
다음 구성을 사용하여 이름이
gpu-operator-values.yaml인 헬름 값 파일을 생성하세요.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 드라이버 설치
NVIDIA GPU 운영자 버전 v25.3.4부터 NVIDIA DRA 드라이버를 별도로 설치해야 합니다. NVIDIA GPU 운영자 릴리스 정보
-
다음 구성을 사용하여 이름이
dra-values.yaml인 헬름 값 파일을 생성하세요. 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가
DeviceClass리소스를 이해하고 할당하도록 지원하는ComputeDomain리소스를 생성하여 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 유형이어야 하고 최대 100Gbps의 ENA 대역폭을 지원합니다. 노드 프로비저닝 중에 요구 사항에 따라 EFA 및 ENA 인터페이스를 구성합니다. EFA 구성에 대한 자세한 내용은 AWS 설명서의 P6e-GB200 인스턴스에 대한 EFA 구성을 검토하세요.
-
다음 구성을 사용하여 이름이
efa-values.yaml인 헬름 값 파일을 생성하세요.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예를 들어 각 NCI 그룹에 1개의 efa 전용 인터페이스로 인스턴스를 구성한 경우 노드를 설명할 때 노드당 할당 가능한 EFA 디바이스 4개가 표시될 것으로 예상됩니다.
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 -
테스트 매니페스트를 정의하는
nvbandwidth-test-job.yaml이라는 헬름 값 파일을 생성하세요.nvidia.com/gpu.clique포드는 다중 노드 NVLink 연결을 지원하는 동일한 NVLink 도메인에서 작업자를 예약하는 것을 선호한다는 점에 유의하세요. 아래 샘플에서는 cuMemcpyAsync를 사용하여 다중 노드 디바이스 간 CE 읽기 memcpy 테스트를 실행하고 로그에 결과를 인쇄합니다.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: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: # Only schedule on NVIDIA GB200/GB300 nodes - key: node.kubernetes.io/instance-type operator: In values: - p6e-gb200.36xlarge - p6e-gb300.36xlarge 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: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: # Only schedule on NVIDIA GB200/GB300 nodes - key: node.kubernetes.io/instance-type operator: In values: - p6e-gb200.36xlarge - p6e-gb300.36xlarge 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테스트에 성공하면 다중 노드 memcpy 테스트에 대한 대역폭 통계(GB/s)가 표시됩니다. 다음은 성공적인 테스트 출력에 대한 예제입니다.
... nvbandwidth Version: ... Built from Git version: ... MPI version: ... CUDA Runtime Version: ... CUDA Driver Version: ... Driver Version: ... Process 0 (nvbandwidth-test-worker-0): device 0: NVIDIA GB200 (...) Process 1 (nvbandwidth-test-worker-0): device 1: NVIDIA GB200 (...) Process 2 (nvbandwidth-test-worker-0): device 2: NVIDIA GB200 (...) Process 3 (nvbandwidth-test-worker-0): device 3: NVIDIA GB200 (...) Process 4 (nvbandwidth-test-worker-1): device 0: NVIDIA GB200 (...) Process 5 (nvbandwidth-test-worker-1): device 1: NVIDIA GB200 (...) Process 6 (nvbandwidth-test-worker-1): device 2: NVIDIA GB200 (...) Process 7 (nvbandwidth-test-worker-1): device 3: NVIDIA GB200 (...) Running multinode_device_to_device_memcpy_read_ce. memcpy CE GPU(row) -> GPU(column) bandwidth (GB/s) 0 1 2 3 4 5 6 7 0 N/A 821.45 822.18 821.73 822.05 821.38 822.61 821.89 1 822.34 N/A 821.67 822.12 821.94 820.87 821.53 822.08 2 821.76 822.29 N/A 821.58 822.43 821.15 821.82 822.31 3 822.19 821.84 822.05 N/A 821.67 821.23 820.95 822.47 4 821.63 822.38 821.49 822.17 N/A 821.06 821.78 822.22 5 822.08 821.52 821.89 822.35 821.27 N/A 821.64 822.13 6 821.94 822.15 821.68 822.04 821.39 820.92 N/A 822.56 7 822.27 821.73 822.11 821.86 822.38 821.04 821.49 N/A SUM multinode_device_to_device_memcpy_read_ce ... NOTE: The reported results may not reflect the full capabilities of the platform. Performance can vary with software drivers, hardware clocks, and system topology. -
테스트가 완료되면 다음 명령을 사용하여 삭제하세요.
kubectl delete -f nvbandwidth-test-job.yaml