기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon SageMaker HyperPod에서 토폴로지 인식 스케줄링 사용
데이터 전송 효율성은 고성능 컴퓨팅(HPC) 및 기계 학습 워크로드에서 중요한 요소입니다. Amazon SageMaker HyperPod와 함께 UltraServers를 사용하는 경우 SageMaker HyperPod는 토폴로지 레이블을 리소스에 자동으로 적용합니다. 토폴로지 인식 스케줄링은 인스턴스 토폴로지(인스턴스 내에서 리소스가 연결되는 방식)와 네트워크 토폴로지(인스턴스가 서로 연결되는 방식)를 모두 고려하여 리소스를 할당함으로써 데이터 전송 오버헤드를 최소화하는 데 도움이 됩니다. 인스턴스 토폴로지에 대한 자세한 내용은 Amazon EC2 인스턴스 토폴로지를 참조하세요.
토폴로지 인식 스케줄링은 Slurm 및 Amazon EKS의 클러스터에서 작동합니다. 토폴로지가 Slurm과 작동하는 방식에 대한 일반적인 정보는 Slurm 설명서의 Topology guide
Amazon SageMaker HyperPod에서 데이터 전송 오버헤드는 일반적으로 세 가지 주요 소스에서 발생합니다.
-
GPU 간 데이터 전송: NVLink 및 NVLink 스위치와 같은 현대적 기술을 사용하면 다른 컴퓨팅 리소스를 사용하지 않고도 GPU 간에 처리량이 많은 데이터를 전송할 수 있습니다. 이는 매우 효율적이지만 일반적으로 단일 인스턴스로 제한됩니다.
-
GPU와 CPU 간 데이터 전송: Non-uniform Memory Access(NUMA) 시스템에는 단일 마더보드에 여러 시스템 버스가 있습니다. p5.48xlarge와 같은 일반적인 EC2 인스턴스 아키텍처에는 각각 CPU 1개와 GPU 4개가 있는 2개의 서로 다른 시스템이 있습니다. 최적의 성능을 위해 GPU로 데이터를 로드하거나 GPU에서 데이터를 읽는 프로세스는 GPU와 동일한 시스템 버스에 연결된 CPU에서 실행해야 합니다.
-
인스턴스 간 네트워크 통신: 인스턴스는 네트워크 스위치 체인을 통해 데이터를 전송합니다. 가장 짧은 경로가 일반적으로 지연 시간이 가장 짧습니다.
UltraServer 아키텍처
SageMaker HyperPod는 p6e-gb200.36xlarge 인스턴스를 사용하는 UltraServer 아키텍처를 지원합니다. UltraServer에는 최대 18개의 p6e-gb200.36xlarge 인스턴스가 포함되며 각 인스턴스에는 4개의 GPU가 있습니다. 모든 노드의 모든 GPU는 NVLink 스위치를 통해 상호 연결되므로 네트워크 인터페이스를 사용하지 않고도 두 GPU 간에 데이터를 전송할 수 있습니다.
이 아키텍처는 개별 인스턴스에 비해 상당한 성능 향상을 제공합니다. 이 아키텍처를 효과적으로 활용하려면 작업을 단일 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 아키텍처는 블록 플러그인을 지원합니다.
토폴로지/블록 플러그인 사용
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
사용법
작업을 제출할 때 sbatch 및 srun 명령과 함께 다음 추가 인수를 사용할 수 있습니다.
--segment=N: 그룹화할 노드 수를 지정합니다. 세그먼트의 크기는 계획 블록 크기보다 작거나 같아야 합니다.--exclusive=topo: 동일한 블록에 다른 작업을 배치하지 않도록 요청합니다. 벤치마킹 및 성능에 민감한 애플리케이션에 유용합니다.
다음은 블록 할당을 생각할 때 고려할 수 있는 샘플 시나리오입니다.
빈 시스템에 전체 노드 블록 할당
sbatch -N18
빈 시스템에 노드 블록 2개 할당
sbatch -N36
한 블록에 노드 18개 + 다른 블록에 노드 6개 할당
sbatch -N24
한 블록에 노드 12개 할당 + 다른 블록에 노드 12개 할당
sbatch -N24 —segment=12
—exclusive=topo를 사용하면 다른 작업이 없는 블록에 작업을 배치해야 함
sbatch -N12 —exclusive=topo
UltraServer 토폴로지 모범 사례
SageMaker HyperPod의 UltraServer 아키텍처로 최적의 성능을 얻는 방법:
-
적절한 블록 크기 설정: UltraServer 아키텍처와 일치하도록
BlockSizes=18(또는 노드 하나가 예비 노드인 경우 17)을 구성합니다. -
가용성을 높이기 위해 세그먼트 사용:
srun및sbatch명령과 함께--segment=16,--segment=8또는--segment=9를 사용하여 작업 예약 유연성을 개선합니다. -
작업 크기와 세그먼트 크기 고려:
BlockSizes=18인 경우 인스턴스가 최대 18개인 작업은 항상 단일 UltraServer에서 실행됩니다.BlockSizes=16인 경우 인스턴스가 16개 미만인 작업은 항상 단일 UltraServer에서 실행되고, 인스턴스가 18개인 작업은 하나 또는 두 개의 UltraServer에서 실행될 수 있습니다.
분할을 고려할 때 다음 사항을 고려하세요.
--segment=1인 경우 각 인스턴스를 별도의 UltraServer에서 실행할 수 있습니다.-N 18 --segment 9인 경우 한 UltraServer에 9개의 노드가 배치되고, 다른 9개의 노드는 동일한 UltraServer 또는 다른 UltraServer에 배치될 수 있습니다.-N 24 --segment 8인 경우 2개 또는 3개의 UltraServers에서 작업을 실행할 수 있으며, 노드가 8개씩 동일한 서버에 함께 배치됩니다.
SageMaker HyperPod 토폴로지 인식 스케줄링의 제한 사항
topology/block 플러그인에는 이종 클러스터(인스턴스 유형이 다른 클러스터)에 대한 제한 사항이 있습니다.
블록에 나열된 노드만 Slurm에서 예약할 수 있습니다.
블록마다 최소
BlockSizes[0]개의 노드가 있어야 합니다.
이종 클러스터의 경우 다음 대안을 고려하세요.
블록 플러그인을 이종 클러스터와 함께 사용하지 마세요. 대신 다른 파티션에 UltraServer 노드를 격리하세요.
동일한 VPC에서만 UltraServers를 사용하여 별도의 클러스터를 생성하고 Slurm의 멀티클러스터 설정을 사용합니다.