Amazon SageMaker HyperPod에서 UltraServers 사용 - Amazon SageMaker AI

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon SageMaker HyperPod에서 UltraServers 사용

Ultraserver에 대한 SageMaker HyperPod 지원은 AI 및 기계 학습 워크로드를 위한 고성능 GPU 컴퓨팅 기능을 제공합니다. NVIDIA GB200 및 NVL72 아키텍처를 기반으로 구축된 이러한 Ultraserver는 듀얼 랙 구성의 18GB200 인스턴스에서 NVLink 연결을 제공하여 총 72개의 B200 GPUs. 이 NVLink 패브릭을 사용하면 워크로드가 사용 가능한 GPU 용량과 주소 지정 가능한 메모리를 이산 인스턴스에서 가능한 용량 이상으로 늘려 더 복잡하고 리소스 집약적인 AI 모델을 지원하는 GPU 통신을 사용할 수 있습니다. NVLink 연결은 동일한 랙 내의 인스턴스 간 보안 GPU 패브릭 연결을 위한 하위 수준 구성을 처리하는 NVIDIA IMEX 기술로 활성화됩니다.

HyperPod는 지능형 토폴로지 인식 및 자동화된 구성을 통해 이러한 GPU 클러스터의 배포 및 관리를 간소화합니다. 플랫폼은 분산 워크로드에 대한 토폴로지 인식 예약을 지원하는 물리적 위치 및 용량 블록 정보로 노드를 자동으로 검색하고 레이블을 지정합니다. HyperPod는 복잡한 IMEX 구성 요구 사항을 추상화하므로 하위 수준 GPU 패브릭 설정 대신 워크로드 배포에 집중할 수 있습니다. 자체 관리형 노드와 EKS 관리형 노드 그룹을 모두 포함하는 유연한 배포 옵션을 선택할 수 있습니다. Amazon EKS는 사전 구성된 NVIDIA 드라이버, Fabric Manager, IMEX 드라이버 및 원활한 작동을 위해 필요한 모든 시스템 소프트웨어를 포함하는 최적화된 AMIs를 제공합니다.

통합에는 표준 Kubernetes 토폴로지 레이블을 사용하여 NVL72 도메인에서 분산 워크로드를 최적으로 예약하는 포드 배치 기능이 포함되어 있습니다. 내장된 모니터링 및 자동 복구 기능은 AMI 상태 확인 에이전트가 커널 로그에서 GPU 오류를 감지하고 관리형 노드 그룹의 문제를 자동으로 해결하거나 결함이 있는 노드를 교체할 수 있는 운영 지원을 제공합니다. GPU 규모, 지능형 워크로드 배치 및 자동화된 작업의 이러한 조합을 통해 인프라 복잡성보다는 AI/ML 혁신에 집중하는 동시에 GPU 투자의 성능을 극대화할 수 있습니다.

HyperPod 클러스터와 함께 UltraServers를 사용하여 설정하려면 다음 단계를 참조하세요.

  1. EKS 기반 HyperPod 클러스터를 생성합니다. 인스턴스 그룹을 선택할 때는 UltraServer를 선택해야 합니다.

  2. 클러스터를 생성한 후 다음 명령을 사용하여 운영 플러그인을 설치합니다.

    NVIDIA 디바이스 플러그인 v0.17.2

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.17.2/deployments/static/nvidia-device-plugin.yml

    FD 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 통신을 위한 채널을 프로비저닝할 수 있습니다.

  1. 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
  2. 생성한 구성을 적용합니다.

    kubectl apply -f imex-channel-injection.yaml
  3. 포드가 생성되었는지 확인하려면 get pods 명령을 실행합니다.

    kubectl get pods kubectl get pods -n nvidia-dra-driver-gpu -l resource.nvidia.com/computeDomain
  4. 포드의 로그를 확인하여 통신 채널을 할당했는지 확인할 수도 있습니다.

    kubectl logs imex-channel-injection
    total 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
  5. 로그를 확인하여 할당된 채널로 자동 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
  6. 모든 것을 확인한 후 워크로드를 삭제하고 구성을 제거합니다.

    kubectl delete -f imex-channel-injection.yaml