SageMaker 분산 데이터 병렬화 라이브러리 소개 - 아마존 SageMaker

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

SageMaker 분산 데이터 병렬화 라이브러리 소개

SageMaker 분산 데이터 병렬화 (SMDDP) 라이브러리는 분산 데이터 병렬 훈련의 컴퓨팅 성능을 향상시키는 집단 통신 라이브러리입니다. SMDDP 라이브러리는 다음을 제공하여 주요 집단 통신 작업의 통신 오버헤드를 해결합니다.

  1. 이 라이브러리는 다음에 최적화된 서비스를 제공합니다AllReduce. AWSAllReduce분산 데이터 훈련 중에 각 훈련 반복이 끝날 때 GPU 간의 그래디언트를 동기화하는 데 사용되는 주요 연산입니다.

  2. 라이브러리는 다음에 최적화된 서비스를 제공합니다. AllGather AWSAllGather샤디드 데이터 병렬 트레이닝에 사용되는 또 다른 주요 연산으로, 이는 SageMaker 모델 병렬화 (SMP) 라이브러리, 제로 리던던시 옵티마이저 ( DeepSpeed Zero), 완전 샤딩된 데이터 병렬화 (FSDP) 와 같은 인기 라이브러리에서 제공하는 메모리 효율적인 데이터 병렬 처리 기법입니다. PyTorch

  3. 라이브러리는 AWS 네트워크 인프라와 Amazon EC2 인스턴스 토폴로지를 완전히 활용하여 최적화된 node-to-node 통신을 수행합니다.

SMDDP 라이브러리는 교육 클러스터를 확장할 때 선형에 가까운 확장 효율성으로 성능을 개선하여 교육 속도를 높일 수 있습니다.

참고

SageMaker 분산된 교육 라이브러리는 교육 플랫폼 내의 SageMaker Hugging Face용 AWS 딥 러닝 PyTorch 컨테이너와 Hugging Face를 통해 사용할 수 있습니다. 라이브러리를 사용하려면 SageMaker Python용 SDK (Boto3) 또는 Python을 통해 Python SDK 또는 SageMaker API를 사용해야 합니다. AWS Command Line Interface설명서 전체에서 지침과 예제는 SageMaker Python SDK와 함께 분산 교육 라이브러리를 사용하는 방법에 중점을 둡니다.

AWS 컴퓨팅 리소스 및 네트워크 인프라에 최적화된 SMDDP 집단 통신 운영

SMDDP 라이브러리는 AWS 컴퓨팅 리소스 및 네트워크 인프라에 최적화된 통합 운영 AllReduceAllGather 공동 작업의 구현을 제공합니다.

SMDDP 집단 운영 AllReduce

SMDDP 라이브러리는 역방향 패스와 AllReduce 연산을 최적으로 겹쳐서 GPU 활용도를 크게 향상시킵니다. CPU와 GPU 간의 커널 연산을 최적화하여 선형에 가까운 스케일링 효율성과 더 빠른 학습 속도를 달성합니다. GPU가 추가 GPU 사이클을 제거하지 않고 그래디언트를 계산하는 동안 라이브러리는 병렬로 AllReduce 수행되므로 라이브러리가 더 빠르게 학습할 수 있습니다.

  • CPU 활용: 라이브러리는 CPU를 사용하여 AllReduce 그래디언트를 적용하여 GPU에서 이 작업을 오프로드합니다.

  • 향상된 GPU 사용: 클러스터의 GPU가 컴퓨팅 그래디언트에 집중하여 훈련 전반에 걸쳐 활용도를 높입니다.

다음은 SMDDP 작업의 상위 수준 워크플로입니다. AllReduce

  1. 이 라이브러리는 GPU(작업자)에 순위를 할당합니다.

  2. 각 반복에서 이 라이브러리는 각 글로벌 배치를 총 워커 수(월드 사이즈)로 나누고 작업자에게 작은 배치(배치 샤드)를 할당합니다.

    • 글로벌 배치의 크기는 (number of nodes in a cluster) * (number of GPUs per node) * (per batch shard)입니다.

    • 배치 샤드(소규모 배치)는 반복별로 각 GPU(작업자)에 할당되는 데이터 세트의 하위 집합입니다.

  3. 이 라이브러리는 각 작업자에 대해 훈련 스크립트를 실행합니다.

  4. 이 라이브러리는 모든 반복이 끝날 때마다 작업자의 모델 가중치 및 그래디언트 사본을 관리합니다.

  5. 이 라이브러리는 작업자 전체의 모델 가중치와 그래디언트를 동기화하여 훈련된 단일 모델을 집계합니다.

아래의 아키텍처 다이어그램은 이 라이브러리가 3개 노드로 구성된 클러스터에 대해 데이터 병렬화를 설정하는 방법의 예를 보여줍니다.

SMDDP AllReduce 및 데이터 병렬화 아키텍처 다이어그램

SMDDP AllGather 집단 연산

AllGather각 워커가 입력 버퍼로 시작한 다음 다른 모든 워커의 입력 버퍼를 출력 버퍼로 연결하거나 수집하는 집단 연산입니다.

참고

SMDDP AllGather 집단 연산은 PyTorch v2.0.1 이상의 AWS Deep Learning Containers (DLC) 에서 smdistributed-dataparallel>=2.0.1 사용할 수 있습니다.

AllGather개별 워커가 모델의 일부나 샤딩된 레이어를 보유하는 샤딩된 데이터 병렬화와 같은 분산 교육 기술에 많이 사용됩니다. 워커는 정방향 및 역방향 패스 AllGather 전에 호출하여 샤딩된 레이어를 재구성합니다. 정방향 및 역방향 패스는 파라미터를 모두 수집한 후에도 계속 진행됩니다. 역방향 패스 중에 각 워커는 그래디언트를 수집 (축소) 하고 그래디언트 샤드로 분리 (분산) 하여 해당하는 샤딩된 레이어를 ReduceScatter 업데이트하도록 요청하기도 합니다. 샤딩된 데이터 병렬화에서 이러한 집단 연산의 역할에 대한 자세한 내용은 SMP 라이브러리의 샤딩된 데이터 병렬화 구현, 설명서의 Zero, 완전 샤딩된 데이터 병렬화에 관한 블로그를 참조하십시오. DeepSpeed PyTorch

와 같은 집단 연산은 매 반복마다 호출되기 때문에 AllGather GPU 통신 오버헤드의 주요 원인이 됩니다. 이러한 집단 연산의 계산 속도가 빨라지면 수렴에 대한 부작용 없이 훈련 시간이 짧아집니다. 이를 위해 SMDDP 라이브러리는 P4d 인스턴스에 AllGather 최적화된 기능을 제공합니다.

SMDDP는 다음 기술을 AllGather 사용하여 P4d 인스턴스의 계산 성능을 개선합니다.

  1. 메시 토폴로지가 있는 EFA (Elastic Fabric Adapter) 네트워크를 통해 인스턴스 간 (노드 간) 데이터를 전송합니다. EFA는 AWS 지연 시간이 짧고 처리량이 많은 네트워크 솔루션입니다. 노드 간 네트워크 통신을 위한 메시 토폴로지는 EFA 및 네트워크 인프라의 특성에 더 잘 맞게 조정되었습니다. AWS 여러 패킷 홉을 포함하는 NCCL 링 또는 트리 토폴로지에 비해 SMDDP는 하나의 홉만 필요하므로 여러 홉에서 지연 시간이 누적되는 것을 방지합니다. SMDDP는 메시 토폴로지의 각 통신 피어에 대한 워크로드의 균형을 맞추고 더 높은 글로벌 네트워크 처리량을 달성하는 네트워크 속도 제어 알고리즘을 구현합니다.

  2. NVIDIA GPUDirect RDMA 기술 (GDRcopy) 에 기반한 저지연 GPU 메모리 복사 라이브러리를 채택하여 로컬 NVLink 및 EFA 네트워크 트래픽을 조정합니다. NVIDIA에서 제공하는 지연 시간이 짧은 GPU 메모리 복사 라이브러리인 GDRCopy는 CPU 프로세스와 GPU CUDA 커널 간에 지연 시간이 짧은 통신을 제공합니다. 이 기술을 통해 SMDDP 라이브러리는 노드 내 및 노드 간 데이터 이동을 파이프라인으로 만들 수 있습니다.

  3. GPU 스트리밍 멀티프로세서 사용을 줄여 모델 커널 실행에 필요한 컴퓨팅 성능을 높입니다. P4d 및 P4de 인스턴스에는 각각 108개의 스트리밍 멀티프로세서가 있는 NVIDIA A100 GPU가 장착되어 있습니다. NCCL은 공동 작업을 실행하는 데 최대 24개의 스트리밍 멀티프로세서를 사용하지만 SMDDP는 9개 미만의 스트리밍 멀티프로세서를 사용합니다. 모델 컴퓨팅 커널은 저장된 스트리밍 멀티프로세서를 선택하여 계산 속도를 높입니다.