SageMaker 분산 모델 병렬 처리 모범 사례 - Amazon SageMaker AI

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

SageMaker 분산 모델 병렬 처리 모범 사례

SageMaker 모델 병렬 라이브러리 v2(SMP v2)로 분산 훈련 작업을 실행할 때 다음 지침을 사용하세요.

분산 훈련에 적합한 구성 설정

SMP v2가 제공하는 분산 훈련 기법을 적용할 수 있는 최적의 시작점을 추정하고 찾으려면 다음 목록을 검토하세요. 각 목록 항목은 잠재적 절충과 함께 SageMaker 모델 병렬화 라이브러리 v2의 핵심 기능를 사용하는 이점에 대해 설명합니다.

구성 팁

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

먼저 모델 크기에 관계없이 다음 설정을 사용하는 것이 좋습니다.

  1. 사용할 수 있는 가장 강력한 인스턴스 유형을 사용합니다.

  2. 성능 및 메모리 절감에 상당한 이점을 제공하므로 항상 혼합 정밀도를 켭니다. float16보다 정확하므로 bfloat16를 사용하는 것이 좋습니다.

  3. AWS 인프라에 최적화된 SMDDP 라이브러리와의 호환성에 표시된 대로 해당하는 경우 언제든지 SageMaker 분산 데이터 병렬 처리 라이브러리를 켭니다(NCCL 사용 대신). 한 가지 예외는 tensor-parallelism 전용 사용 사례(hybrid_shard_degree = 1tensor_paralle_degree > 1)입니다.

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

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

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

  1. 공유된 데이터 병렬 처리를 사용합니다.

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

    2. 최대 로컬 배치 크기와 필요한 글로벌 배치 크기에 따라 world_size를 결정합니다.

    3. 활성화 오프로드로 실험할 수 있습니다. 시나리오에 따라 샤딩 정도를 높일 필요 없이 메모리 요구 사항을 해결할 수 있으므로 통신이 줄어듭니다.

  2. 텐서 병렬화에 도입된 대로 PyTorch FSDP의 샤딩된 데이터 병렬 처리와 SMP v2의 텐서 병렬 처리를 동시에 사용합니다.

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

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

    2. 8k와 같은 긴 컨텍스트 길이로 훈련하면 16k 활성화 메모리가 매우 높아질 수 있습니다. FSDP는 활성화를 샤딩하지 않으며 활성화로 인해 GPU 메모리가 부족해질 수 있습니다. 이러한 시나리오에서는 SMP v2의 텐서 병렬 처리와 함께 PyTorch FSDP를 구성하여 효율적으로 훈련할 수 있습니다.

참조 구성

SageMaker 모델 병렬 처리 훈련 팀은 torch.sagemaker.transform를 사용하여 SMP 변환기 모델로 변환된 Llama 2 모델을 실험하고 시퀀스 길이 4096 및 혼합 정밀도(FP16 또는 BF16)로 ml.p4d.24xlarge 인스턴스에서 훈련한 실험을 기반으로 다음 참조 포인트를 제공합니다.

모델 모델 크기(모델 파라미터의 수) 인스턴스의 수 샤딩된 데이터 병렬도 텐서 병렬도 활성화 체크포인트 활성화 오프로딩 배치 크기
Llama 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 AI 콘솔 및 Amazon CloudWatch를 사용하여 훈련 작업 모니터링 및 로깅

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

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

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

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

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

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

자세한 내용은 훈련 작업 모니터링 및 분석용 Amazon CloudWatch 지표 섹션을 참조하세요.

권한

모델 병렬 처리로 SageMaker 훈련 작업을 실행하려면 IAM 역할에 다음과 같은 적절한 권한이 있어야 합니다.