기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon SageMaker HyperPod에서 UltraServers 사용
Ultraserver에 대한 SageMaker HyperPod 지원은 AI 및 기계 학습 워크로드를 위한 고성능 GPU 컴퓨팅 기능을 제공합니다. NVIDIA GB200 및 NVL72 아키텍처를 기반으로 구축된 이러한 Ultraservers는 듀얼 랙 구성의 GB200 인스턴스 18개에서 NVLink 연결을 제공하여 B200 GPU가 총 72개가 됩니다. 이 NVLink 패브릭을 사용하면 워크로드가 사용 가능한 GPU 용량과 주소 지정 가능한 메모리를 이산 인스턴스에서 가능한 용량 이상으로 늘려 더 복잡하고 리소스 집약적인 AI 모델을 지원하는 GPU 통신을 지원할 수 있습니다. NVLink 연결은 동일한 랙 내의 인스턴스 간 보안 GPU 패브릭 연결을 위한 저수준 구성을 처리하는 NVIDIA IMEX 기술을 통해 활성화됩니다.
HyperPod는 지능형 토폴로지 인식 및 자동화된 구성을 통해 이러한 GPU 클러스터의 배포 및 관리를 간소화합니다. 플랫폼은 분산 워크로드에 대한 토폴로지 인식 스케줄링을 지원하는 물리적 위치 및 용량 블록 정보로 노드를 자동으로 검색하고 레이블을 지정합니다. HyperPod는 복잡한 IMEX 구성 요구 사항을 추상화하므로 사용자는 저수준 GPU 패브릭 설정 대신 워크로드 배포에 집중할 수 있습니다. 자체 관리형 노드와 EKS 관리형 노드 그룹을 둘 다 포함하는 유연한 배포 옵션을 선택할 수 있습니다. Amazon EKS는 사전 구성된 NVIDIA 드라이버, Fabric Manager, IMEX 드라이버 및 원활한 작동을 위해 필요한 모든 시스템 소프트웨어를 포함하는 최적화된 AMI를 제공합니다.
통합에는 표준 Kubernetes 토폴로지 레이블을 사용하여 NVL72 도메인 간에 분산 워크로드가 최적으로 예약되도록 하는 포드 배치 기능이 포함되어 있습니다. 내장된 모니터링 및 자동 복구 기능은 AMI 상태 에이전트가 커널 로그에서 GPU 오류를 감지하고 관리형 노드 그룹의 문제를 자동으로 해결하거나 장애가 있는 노드를 교체할 수 있는 운영 지원을 제공합니다. GPU 규모, 지능형 워크로드 배치 및 자동화된 운영의 이러한 조합을 통해 인프라 복잡성보다는 AI/ML 혁신에 집중하는 동시에 GPU 투자의 성능을 극대화할 수 있습니다.
HyperPod 클러스터와 함께 UltraServers를 사용하여 설정하려면 다음 단계를 참조하세요.
-
EKS 기반 HyperPod 클러스터를 생성합니다. 인스턴스 그룹을 선택할 때는 UltraServer를 선택해야 합니다.
-
클러스터를 생성한 후 다음 명령을 사용하여 운영 플러그인을 설치합니다.
NVIDIA 디바이스 플러그인 v0.17.2
kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.17.2/deployments/static/nvidia-device-plugin.ymlFD DaemonSet v0.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 도메인을 구성하고, 채널 할당을 활성화하는 방법을 보여줍니다. 또한 이 단계를 통해 포드를 생성하여 NCCL 통신을 위한 채널을 프로비저닝할 수 있습니다.
-
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 -
생성한 구성을 적용합니다.
kubectl apply -f imex-channel-injection.yaml -
포드가 생성되었는지 확인하려면
get pods명령을 실행합니다.kubectl get pods kubectl get pods -n nvidia-dra-driver-gpu -l resource.nvidia.com/computeDomain -
포드의 로그를 확인하여 통신 채널을 할당했는지도 확인할 수 있습니다.
kubectl logs imex-channel-injectiontotal 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 -
로그를 확인하여 할당된 채널로 자동 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 -
모든 것을 확인한 후 워크로드를 삭제하고 구성을 제거합니다.
kubectl delete -f imex-channel-injection.yaml