기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
분산 훈련 전략
분산 훈련은 일반적으로 데이터 병렬과 모델 병렬이라는 두 가지 접근 방식으로 나뉩니다. 데이터 병렬은 분산 훈련에 대한 가장 일반적인 접근 방식입니다. 데이터가 많고, 배치화되며, 신경망 또는 ML 알고리즘에서 처리할 여러 CPUs 또는 GPUs (노드)로 데이터 블록을 전송한 다음 결과를 결합합니다. 신경망은 각 노드에서 동일합니다. 모델 병렬 접근 방식은 노드 메모리에 한 조각으로 담을 수 없는 대형 모델에 사용됩니다. 즉, 모델을 분할하고 여러 노드에 각 부분을 배치합니다. 이 경우 모델의 모든 부분에서 데이터가 처리되도록 데이터 배치를 각 노드로 보내야 합니다.
네트워크와 모델이라는 용어는 종종 같은 의미로 사용됩니다. 대규모 모델은 실제로 많은 계층과 파라미터가 있는 대규모 네트워크입니다. 대규모 네트워크를 사용하여 훈련하면 큰 모델이 생성되고, 사전 훈련된 파라미터와 가중치를 모두 포함하여 모델을 네트워크에 다시 로드하면 대형 모델이 메모리에 로드됩니다. 모델을 분리하여 여러 노드로 분할하면 기본 네트워크도 분리됩니다. 네트워크는 여러 계층으로 구성되며, 네트워크를 분할하려면 여러 컴퓨팅 디바이스에 계층을 배치해야 합니다.
디바이스 간에 계층을 순진하게 분할하는 일반적인 위험은 사용량이 매우 GPU 적습니다. 훈련은 기본적으로 순방향 및 역방향 패스 모두에서 순차적으로 이루어지며, 지정된 시간에 한 명만 능동적으로 계산할 GPU 수 있고 다른 한 명만 활성화가 전송될 때까지 대기합니다. 모던 모델 병렬 라이브러리는 파이프라인 실행 일정을 사용하여 디바이스 사용률을 높임으로써 이 문제를 해결합니다. 그러나 Amazon SageMaker AI의 분산 모델 병렬 라이브러리에만 자동 모델 분할이 포함됩니다. 라이브러리의 두 가지 핵심 기능인 자동 모델 분할과 파이프라인 실행 스케줄링은 자동화된 결정을 내림으로써 모델 병렬화를 구현하는 프로세스를 단순화하여 디바이스를 효율적으로 활용합니다.
데이터 병렬과 모델 병렬을 사용한 훈련
대규모 데이터세트로 훈련하는 경우 데이터 병렬 접근법부터 시작하세요. 훈련 중에 메모리가 부족하면 모델 병렬 접근 방식으로 전환하거나 하이브리드 모델 및 데이터 병렬화를 시도해 볼 수 있습니다. 또한 다음을 시도하여 데이터 병렬 성능을 개선할 수 있습니다.
-
모델의 하이퍼파라미터를 변경하세요.
-
배치 크기를 줄이세요.
-
크기가 맞을 때까지 배치 크기를 계속 줄이세요. 배치 크기를 1로 줄였는데도 여전히 메모리가 부족하다면 모델 병렬 훈련을 시도해야 합니다.
그라데이션 압축 시도(FP16, INT8):
-
NVIDIA TensorCore탑재된 하드웨어에서 혼합 정밀도 훈련
을 사용하면 속도 향상과 메모리 소비가 모두 감소합니다. -
SageMaker AI의 분산 데이터 병렬 처리 라이브러리는 즉시 자동 혼합 정밀도(AMP)를 지원합니다. 훈련 스크립트에 대한 프레임워크 수준 수정 AMP 외에는 추가 작업이 필요하지 않습니다. 그라데이션이에 있는 경우 FP16 SageMaker AI 데이터 병렬 처리 라이브러리는에서
AllReduce
작업을 실행합니다FP16. 훈련 스크립트 AMP APIs 구현에 대한 자세한 내용은 다음 리소스를 참조하세요.-
프레임워크 - PyTorch
NVIDIA 딥 러닝 성능 설명서의 -
프레임워크 - TensorFlow
NVIDIA 딥 러닝 성능 설명서의 -
NVIDIA 개발자 문서의 딥 러닝에 대한 자동 혼합 정밀도
-
PyTorch 블로그NVIDIA에서 더 빠른 훈련을 위한 기본 PyTorch 자동 혼합 정밀도 소개 GPUs
-
TensorFlow 설명서의 TensorFlow 혼합 정밀도 APIs
-
입력 크기를 줄여 보세요.
-
NLP 시퀀스 링크를 늘리거나 배치 크기를 조정해야 하는 경우 시퀀스 길이를 줄이거나를 조정GPUs하여 배치를 분산합니다.
-
이미지 해상도를 낮추세요.
수렴에 영향을 줄 수 있으므로 배치 정규화를 사용하는지 확인하세요. 분산 훈련을 사용하면 배치가 로 분할GPUs되고 배치 크기가 훨씬 더 작은 경우 오류율이 높아져서 모델 수렴이 중단될 수 있습니다. 예를 들어 배치 크기가 64GPU인 단일에서 네트워크를 프로토타입화한 다음 4개의 p3dn.24xlarge를 사용하여 로 스케일 업한 경우 이제 32개가 있고 배치GPUs당GPU 크기가 64에서 2로 떨어집니다. 이렇게 하면 단일 노드에서 볼 수 있었던 수렴이 깨질 수 있습니다.
다음과 같은 경우 모델 병렬 훈련으로 시작하세요.
-
모델이 단일 디바이스에 맞지 않습니다.
-
모델 크기로 인해 모델 가중치가 대부분의 GPU 메모리를 차지하고 더 작고 최적화되지 않은 배치 크기를 선택해야 하는 경우와 같이 더 큰 배치 크기를 선택하는 데 제한이 있습니다.
SageMaker AI 분산 라이브러리에 대한 자세한 내용은 다음을 참조하세요.