Amazon SageMaker HyperPod에서 토폴로지 인식 일정 사용 - Amazon SageMaker AI

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

Amazon SageMaker HyperPod에서 토폴로지 인식 일정 사용

데이터 전송 효율성은 고성능 컴퓨팅(HPC) 및 기계 학습 워크로드에서 중요한 요소입니다. Amazon SageMaker HyperPod와 함께 UltraServers를 사용하는 경우 SageMaker HyperPod는 토폴로지 레이블을 리소스에 자동으로 적용합니다. 토폴로지 인식 예약은 인스턴스 토폴로지(인스턴스 내에서 리소스가 연결되는 방식)와 네트워크 토폴로지(인스턴스가 서로 연결되는 방식)를 모두 고려하여 리소스를 할당하여 데이터 전송 오버헤드를 최소화하는 데 도움이 됩니다. 인스턴스 토폴로지에 대한 자세한 내용은 Amazon EC2 인스턴스 토폴로지를 참조하세요.

토폴로지 인식 예약은 Slurm 및 Amazon EKS의 두 클러스터 모두에서 작동합니다. 토폴로지가 Slurm과 작동하는 방식에 대한 일반적인 정보는 Slurm 설명서의 토폴로지 가이드를 참조하세요.

Amazon SageMaker HyperPod에서 데이터 전송 오버헤드는 일반적으로 세 가지 주요 소스에서 발생합니다.

  • GPU-to-GPU 데이터 전송: NVLink 및 NVLink 스위치와 같은 최신 기술을 사용하면 다른 컴퓨팅 리소스를 사용하지 않고도 GPUs 간에 처리량이 많은 데이터를 전송할 수 있습니다. 이는 매우 효율적이지만 일반적으로 단일 인스턴스로 제한됩니다.

  • GPU-to-CPU 데이터 전송: NUMA(Uniform Memory Access) 시스템에는 단일 마더보드에 여러 시스템 버스가 있습니다. p5.48xlarge와 같은 일반적인 EC2 인스턴스 아키텍처에는 각각 CPU 1개와 GPUs. 최적의 성능을 위해 GPUs와 동일한 시스템 버스에 연결된 CPU에서 GPU로 데이터를 로드하거나 읽는 프로세스를 실행해야 합니다.

  • 인스턴스 간 네트워크 통신: 인스턴스는 네트워크 스위치 체인을 통해 데이터를 전송합니다. 가장 짧은 경로는 일반적으로 가장 짧은 지연 시간에 해당합니다.

UltraServer 아키텍처

SageMaker HyperPod는 p6e-gb200.36xlarge 인스턴스를 사용하는 UltraServer 아키텍처를 지원합니다. UltraServer에는 최대 18개의 p6e-gb200.36xlarge 인스턴스가 포함되어 있으며 각 인스턴스에는 4개의 GPUs. 모든 노드GPUs는 NVLink 스위치를 통해 상호 연결되므로 네트워크 인터페이스를 사용하지 않고도 두 GPUs 간에 데이터를 전송할 수 있습니다.

이 아키텍처는 개별 인스턴스에 비해 상당한 성능 향상을 제공합니다. 이 아키텍처를 효과적으로 활용하려면 작업을 단일 UltraServer에서 컴퓨팅 노드로 제출해야 합니다.

EKS 토폴로지 레이블

EC2 인스턴스 토폴로지에 따라 HyperPod는 노드에 다음 레이블을 자동으로 지정합니다.

  • topology.kubernetes.io/region - 노드 AWS 리전 가 있는 입니다.

  • topology.kubernetes.io/zone - 노드가 있는 가용 영역입니다.

  • topology.k8s.aws/network-node-layer - NetworkNodes는 인스턴스의 네트워크 노드 세트를 설명합니다. 각 네트워크 노드 세트에서 네트워크 노드는 위에서 아래로 계층적 순서로 나열됩니다. 인스턴스에 연결된 네트워크 노드는 목록의 마지막 네트워크 노드입니다. 네트워크 노드 계층은 최대 4개이며 각 노드에는 레이블이 지정됩니다. 사용 가능한 계층은 topology.k8s.aws/network-node-layer-1, topology.k8s.aws/network-node-layer-2, 입니다topology.k8s.aws/network-node-layer-3.

  • topology.k8s.aws/ultraserver-id - Ultraserver에서 동일한 NVLink 도메인에 속하는 각 인스턴스에 레이블을 지정하는 데 사용되는 식별자입니다. SageMaker HyperPod에서 UltraServers를 사용하는 방법에 대한 자세한 내용은 섹션을 참조하세요Amazon SageMaker HyperPod에서 UltraServers 사용.

이러한 레이블을 사용하면 HyperPod 태스크 거버넌스에서 토폴로지 인식 일정을 사용하여 토폴로지 레이블과 주석을 적용하여 워크로드의 훈련 효율성을 최적화할 수 있습니다. 자세한 내용은 Amazon SageMaker HyperPod 태스크 거버넌스에서 토폴로지 인식 예약 사용 단원을 참조하십시오.

Slurm 네트워크 토폴로지 플러그인

Slurm은 네트워크 토폴로지 인식을 위한 내장 플러그인을 제공합니다. SageMaker HyperPod의 UltraServer 아키텍처는 블록 플러그인을 지원합니다. SageMaker

토폴로지/블록 플러그인 사용

NVIDIA는 다음과 같은 특성을 가진 노드 블록 간에 계층적 일정을 제공하는 토폴로지/블록 플러그인을 개발했습니다.

  • 블록은 노드의 연속 범위입니다.

  • 블록은 서로 겹칠 수 없습니다.

  • 블록의 모든 노드는 다음 블록을 사용하기 전에 작업에 할당됩니다.

  • 계획 블록 크기는 구성된 가장 작은 블록 크기입니다.

  • 블록 레벨 크기가 높을 때마다 이전 블록 레벨 크기보다 2의 출력입니다.

이 플러그인은 정의된 네트워크 토폴로지를 기반으로 노드를 할당합니다.

구성

토폴로지/블록 플러그인을 사용하여 토폴로지 인식 예약을 구성하려면

  • SageMaker HyperPod는 토폴로지/블록 플러그인을 자동으로 구성합니다. 플러그인을 구성하려면 Slurm 구성 디렉터리의 topology.conf 파일에 다음을 지정합니다.

    BlockName=us1 Nodes=ultraserver1-[0-17] BlockName=us2 Nodes=ultraserver2-[0-17] BlockSizes=18
  • 에 다음이 slurm.conf 포함되어 있는지 확인합니다.

    TopologyPlugin=topology/block

사용법

작업을 제출할 때 sbatchsrun 명령과 함께 다음 추가 인수를 사용할 수 있습니다.

  • --segment=N: 그룹화할 노드 수를 지정합니다. 세그먼트의 크기는 계획 블록 크기보다 작거나 같아야 합니다.

  • --exclusive=topo: 동일한 블록에 다른 작업을 배치하지 않도록 요청합니다. 이는 벤치마킹 및 성능에 민감한 애플리케이션에 유용합니다.

다음은 블록 할당을 고려할 때 고려할 수 있는 샘플 시나리오입니다.

빈 시스템에 전체 노드 블록 할당

sbatch -N18

빈 시스템에 두 개의 노드 블록 할당

sbatch -N36

한 블록에 노드 18개 + 다른 블록에 노드 6개 할당

sbatch -N24

한 블록에 12개의 노드를 할당하고 다른 블록에 12개의 노드를 할당합니다.

sbatch -N24 —segment=12

—exclusive=topo를 사용하면 다른 작업이 없는 블록에 작업을 배치해야 합니다.

sbatch -N12 —exclusive=topo

UltraServer 토폴로지 모범 사례

SageMaker HyperPod의 UltraServer 아키텍처로 최적의 성능을 얻으려면: HyperPod

  • 적절한 블록 크기 설정: UltraServer 아키텍처와 일치하도록 BlockSizes=18 (또는 노드 하나가 예비 노드인 경우 17)을 구성합니다.

  • 가용성을 높이기 위해 세그먼트 사용: 및 sbatch 명령srun--segment=9 함께 --segment=8, 또는 --segment=16를 사용하여 작업 예약 유연성을 개선합니다.

  • 작업 크기와 세그먼트 크기를 고려합니다.

    • BlockSizes=18인 경우 인스턴스가 최대 18개인 작업은 항상 단일 UltraServer에서 실행됩니다.

    • BlockSizes=16인 경우 인스턴스가 16개 미만인 작업은 항상 단일 UltraServer에서 실행되고 인스턴스가 18개인 작업은 하나 또는 두 개의 UltraServers에서 실행될 수 있습니다.

분할을 고려할 때 다음 사항을 고려하세요.

  • 를 사용하면 --segment=1각 인스턴스를 별도의 UltraServer에서 실행할 수 있습니다.

  • 를 사용하면 한 UltraServer에 -N 18 --segment 99개의 노드가 배치되고 다른 9개의 노드가 동일한 UltraServer 또는 다른 UltraServer에 배치될 수 있습니다.

  • -N 24 --segment 8를 사용하면 2개 또는 3개의 UltraServers에서 작업을 실행할 수 있으며, 노드 8개마다 동일한 서버에 배치됩니다.

SageMaker HyperPod 토폴로지 인식 일정의 제한 사항

topology/block 플러그인에는 이기종 클러스터(인스턴스 유형이 다른 클러스터)에 대한 제한이 있습니다.

  • 블록에 나열된 노드만 Slurm에서 예약할 수 있습니다.

  • 모든 블록에는 최소 개의 BlockSizes[0] 노드가 있어야 합니다.

이기종 클러스터의 경우 다음 대안을 고려하세요.

  • 이기종 클러스터에는 블록 플러그인을 사용하지 마십시오. 대신 다른 파티션에서 UltraServer 노드를 격리합니다.

  • 동일한 VPC에서만 UltraServers를 사용하여 별도의 클러스터를 생성하고 Slurm의 멀티클러스터 설정을 사용합니다.