SageMaker 분산 모델 병렬화 모범 사례 - 아마존 SageMaker

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

SageMaker 분산 모델 병렬화 모범 사례

SageMaker 모델 병렬 라이브러리 v2 (SMP v2) 를 사용하여 분산 교육 작업을 실행할 때는 다음 지침을 사용하십시오.

분산 교육을 위한 올바른 구성 설정

SMP v2에서 제공하는 분산 교육 기법을 적용하기 위한 최적의 출발점을 추정하고 찾으려면 다음 목록을 검토하십시오. 각 목록 항목에서는 를 사용할 때의 이점과 잠재적 SageMaker 모델 병렬화 라이브러리 v2의 핵심 기능 장단점을 설명합니다.

구성 팁

이 섹션에서는 글로벌 배치 크기 요구 사항에 따라 최적의 처리량을 위한 최상의 모델 구성을 결정하는 방법에 대한 지침을 제공합니다.

먼저, 모델 크기와 상관없이 다음 설정을 권장합니다.

  1. 사용할 수 있는 가장 강력한 인스턴스 유형을 사용하십시오.

  2. Mixed Precision을 사용하면 성능과 메모리 감소에 상당한 이점이 있으므로 항상 혼합 정밀도를 켜십시오. 보다 bfloat16 정확하므로 사용하는 것이 좋습니다float16.

  3. 와 같이 해당하는 경우 언제든지 NCCL을 사용하는 대신 SageMaker 분산 데이터 병렬화 라이브러리를 켜십시오. SMDDP라이브러리와의 호환성은 다음에 최적화되었습니다. AWS 인프라 tensor-parallelism-only 사용 사례 (및) 의 경우는 예외입니다. hybrid_shard_degree = 1 tensor_paralle_degree > 1

  4. 모델에 약 600억 개 이상의 매개변수가 있는 경우에는 를 사용하는 것이 좋습니다지연된 파라미터 초기화. 또한 지연된 매개변수 초기화를 사용하여 모든 모델의 초기화 속도를 높일 수 있습니다.

  5. 활성화하는 것이 좋습니다. 활성화 체크포인트

모델 크기에 따라 다음 지침으로 시작하는 것이 좋습니다.

  1. 샤딩된 데이터 병렬화를 사용하십시오.

    1. GPU 메모리에 담을 배치 크기에 따라 적절한 샤딩 데이터 병렬도를 선택하십시오. 일반적으로 네트워크 통신으로 인한 오버헤드를 최소화하면서 모델을 GPU 메모리에 맞출 수 있도록 가장 낮은 등급부터 시작해야 합니다. 캐시 플러시가 발생한다는 경고가 표시되면 샤딩 수준을 높이는 것이 좋습니다.

    2. 최대 로컬 배치 크기 및 필요한 글로벌 배치 크기 (있는 경우) 를 world_size 기준으로 결정하십시오.

    3. 활성화 오프로딩을 실험해 볼 수 있습니다. 시나리오에 따라 샤딩 수준을 높이지 않고도 메모리 요구 사항을 해결할 수 있으므로 커뮤니케이션이 줄어듭니다.

  2. 에서 소개한 것처럼 PyTorch FSDP의 샤딩된 데이터 병렬화와 SMP v2의 텐서 병렬화를 동시에 사용하십시오. 텐서 병렬화

    1. FSDP만 사용하는 대규모 클러스터에서 훈련할 경우 글로벌 배치 크기가 너무 커져 모델에 수렴 문제가 발생할 수 있습니다. 일반적으로 대부분의 연구 작업에서는 배치 크기를 4백만 토큰 미만으로 유지합니다. 이 경우 SMP v2의 텐서 병렬 처리를 사용하여 PyTorch FSDP를 구성하여 배치 크기를 줄이면 문제를 해결할 수 있습니다.

      예를 들어 노드가 256개이고 시퀀스 길이가 4096개인 경우 GPU당 배치 크기가 1개라도 글로벌 배치 크기는 8백만 토큰이 됩니다. 그러나 차수가 2이고 배치 크기가 텐서 병렬 그룹당 1인 텐서 병렬화를 사용하면 GPU당 배치 크기가 1/2이 되며, 이는 4백만 개의 토큰으로 변환됩니다.

    2. 8k와 같이 컨텍스트 길이가 긴 상태에서 학습하면 16k 활성화 메모리가 매우 커질 수 있습니다. FSDP는 활성화를 분할하지 않으므로 활성화로 인해 GPU의 메모리 부족이 발생할 수 있습니다. 이러한 시나리오에서는 SMP v2의 텐서 병렬 처리를 사용하여 PyTorch FSDP를 구성하여 효율적으로 훈련할 수 있습니다.

참조 구성

SageMaker 모델 병렬성 교육 팀은 Lama 2 모델을 사용하여 torch.sagemaker.transform SMP 변환기 모델로 변환하고 시퀀스 길이 4096 및 혼합 정밀도 (FP16 또는 BF16) 를 갖는 ml.p4d.24xlarge 인스턴스를 대상으로 훈련한 실험을 기반으로 다음과 같은 참조점을 제공합니다.

모델 모델 크기 (모델 파라미터 수) 인스턴스의 수 샤딩된 데이터 병렬도 텐서 병렬도 활성화 체크포인트 활성화 오프로딩 배치 크기
라마 2 7B 1 8 1 TRUE FALSE 4
70B 32 256 1 TRUE FALSE 2
175B 64 128 4 TRUE TRUE 6

이전 구성에서 추론하여 모델 구성의 GPU 메모리 사용량을 추정할 수 있습니다. 예를 들어, 100억 파라미터 모델의 시퀀스 길이를 늘리거나 모델 크기를 200억 개로 늘리는 경우 먼저 배치 크기를 줄이는 것이 좋습니다. 그래도 모형이 맞지 않으면 텐서 병렬성의 정도를 높여 보세요.

SageMaker 콘솔 및 Amazon을 사용하여 교육 작업 모니터링 및 로깅 CloudWatch

CPU 메모리 사용률, GPU 메모리 사용률, GPU 사용률과 같은 시스템 수준 지표를 모니터링하려면 콘솔을 통해 제공되는 시각화를 사용하십시오. SageMaker

  1. 왼쪽 탐색 창에서 추적을 선택합니다.

  2. 훈련 작업을 선택합니다.

  3. 기본 창에서 자세한 내용을 보려는 훈련 작업 이름을 선택합니다.

  4. 기본 창을 탐색하고 모니터 섹션을 찾아 자동화된 시각화를 확인하세요.

  5. 훈련 작업 로그를 보려면 모니터 섹션에서 로그 보기를 선택합니다. 에서 교육 작업의 분산된 교육 작업 로그에 액세스할 수 있습니다. CloudWatch 다중 노드 분산 훈련을 시작한 경우 algo-n-1234567890 형식의 태그가 포함된 여러 로그 스트림이 표시될 것입니다. algo-1 로그 스트림은 기본(0번째) 노드의 훈련 로그를 추적합니다.

자세한 정보는 Amazon CloudWatch 메트릭을 사용한 교육 작업 모니터링 및 분석을 참조하세요.

권한

모델 병렬화를 사용하여 SageMaker 교육 작업을 실행하려면 IAM 역할에 다음과 같은 적절한 권한이 있어야 합니다.