기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
텐서 병렬화
텐서 병렬 처리는 특정 모델 가중치, 그라디언트, 옵티마이저 상태가 디바이스 간에 분할되는 일종의 모델 병렬 처리입니다. 개별 가중치를 그대로 유지하지만 디바이스 간에 가중치, 그라데이션 또는 최적화 도구 세트를 분할하는 파이프라인 병렬 처리와 달리 텐서 병렬 처리는 개별 가중치를 샤딩합니다. 여기에는 일반적으로 해당 모델의 특정 연산, 모듈 또는 계층에 대한 분산 계산이 포함됩니다.
단일 파라미터가 대부분의 GPU 메모리를 소비하는 경우(예: 어휘 크기가 큰 대형 임베딩 테이블 또는 클래스 수가 많은 대형 softmax 계층) Tensor 병렬 처리가 필요합니다. 이 경우 이렇게 큰 텐서 또는 연산을 원자 단위로 처리하는 것은 비효율적이며 메모리 부하의 균형을 맞추는 데 방해가 됩니다.
SMP v2는 텐서 병렬 처리를 위한 구현을 위해 트랜스포머 엔진
실제로 텐서 병렬 처리는 다음 시나리오에서 특히 유용합니다.
-
긴 컨텍스트 길이로 훈련하면 FSDP 단독으로 활성화 메모리가 높아집니다.
-
글로벌 배치 크기가 원하는 한도를 초과하는 매우 큰 클러스터로 훈련하는 경우.
SMP 텐서 병렬 처리와 호환되는 Hugging Face Transformer 모델
SMP v2는 현재 다음 Hugging Face 변환기 모델에 대한 텐서 병렬 처리를 지원합니다.
-
GPT-NeoX
-
Llama 2
이러한 모델에 텐서 병렬 처리를 적용하기 위한 참조 구성은 섹션을 참조하세요구성 팁.
텐서 병렬 처리 구성
의 경우 tensor_parallel_degree
텐서 병렬 처리 정도에 대한 값을 선택합니다. 값은 클러스터의 수GPUs를 균등하게 나누어야 합니다. 예를 들어 8 인 인스턴스를 사용하는 동안 모델을 샤딩하려면 2, 4 또는 8을 GPUs선택합니다. 작은 숫자로 시작하고 모델이 GPU 메모리에 맞을 때까지 점진적으로 늘리는 것이 좋습니다.
다음 코드 조각은 에 도입된 2단계 프로세스를 따르면서 훈련 스크립트torch.sagemaker.init()
에 SMP 초기화 모듈을 추가하고 훈련 작업 시작 관리자를 위한 JSON 형식으로 SMP 구성 사전을 설정하는 방법을 보여줍니다 SageMaker 모델 병렬 처리 라이브러리 v2 사용. PyTorch 모델 또는 PyTorch FSDPtensor_parallel_degree
및 random_seed
파라미터에 대한 자세한 내용은 SMPv2 핵심 기능 구성 매개변수 단원을 참조하세요.
SMP 구성
{ "tensor_parallel_degree": 8, "random_seed": 0 }
훈련 스크립트에서
로 초기화torch.sagemaker.init()
하여 SMP v2를 활성화하고 모델을 torch.sagemaker.transform 로 래핑합니다API.
import torch.sagemaker as tsm tsm.init() from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_config(..) model = tsm.transform(model)
Hugging Face Transformer 체크포인트 저장 및 로드
SMP 라이브러리가 모델을 변환하면 모델의 상태 사전(state_dict
)이 변경됩니다. 즉, 모델이 원래 Hugging Face Transformer 체크포인트 기능과 호환되지 않습니다. 이를 처리하기 위해 SMP 라이브러리는 Hugging Face Transformer 표현의 변환된 모델에서 체크포인트를 저장하고 미세 조정APIs을 위해 Hugging Face Transformer 모델 체크포인트를 로드torch.sagemaker.transform
API하는 를 제공합니다.
SMP v2의 텐서 병렬 처리 기능을 사용하는 동안 체크포인트를 저장하는 방법에 대한 자세한 내용은 섹션을 참조하세요를 사용한 체크포인트 지정 SMP.
SMP v2의 텐서 병렬 처리 기능을 적용하는 모델을 미세 조정하는 방법에 대한 자세한 내용은 섹션을 참조하세요미세 조정.