기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
컨텍스트 병렬 처리
컨텍스트 병렬 처리는 시퀀스 차원을 따라 모델 활성화를 분할하는 모델 병렬 처리의 한 유형입니다. LayerNorm
및 RMSNorm
만 분할하는 다른 시퀀스 병렬 처리
SMP v2는 컨텍스트 병렬 처리를 위해 Transformer Engine
SMP 컨텍스트 병렬 처리와 호환되는 Hugging Face 트랜스포머 모델
SMP v2는 현재 다음 Hugging Face 트랜스포머 모델에 대한 컨텍스트 병렬 처리를 지원합니다.
-
GPT-NeoX
-
Llama 2 및 Llama 3
컨텍스트 병렬 처리 구성
클러스터의 GPU 수를 균등하게 나눈 context_parallel_degree
파라미터로 정수 값을 설정합니다. 예를 들어 8-GPU 인스턴스가 있는 경우 context_parallel_degree
에 2, 4 또는 8을 사용합니다. 작은 context_parallel_degree
값으로 시작하여 모델이 필요한 입력 시퀀스 길이로 GPU 메모리에 적합할 때까지 점진적으로 늘리는 것이 좋습니다.
다음 코드 조각은 SageMaker 모델 병렬 처리 라이브러리 v2 사용에 도입된 2단계 프로세스를 따르면서 훈련 스크립트에 SMP 초기화 모듈 torch.sagemaker.init()
를 추가하고 훈련 작업 시작 관리자를 위한 JSON 형식의 SMP 구성 사전을 설정하는 방법을 보여줍니다. PyTorch 모델 또는 PyTorch FSDPcontext_parallel_degree
파라미터에 대한 자세한 내용은 SMP v2 코어 기능 구성 파라미터를 참조하세요.
훈련 스크립트에서
1단계의 일환으로 스크립트를 로 초기화torch.sagemaker.init()
하여 SMP v2를 활성화하고 torch.sagemaker.transform API로 모델을 래핑합니다.
SMP v2.6.0부터 cp_comm_type
인수를 사용하여 사용할 컨텍스트 병렬 처리 구현을 결정할 수 있습니다. SMP 라이브러리는 현재 p2p
및 all_gather
의 두 가지 구현을 지원합니다. 이 p2p
구현은 주의 구현 중에 키-값 누적에 대해 피어-투-피어 전송-수신 호출을 사용하고 비동기적으로 실행되어 컴퓨팅과 중복됩니다. all_gather
대신 구현은 AllGather
집합 작업을 사용하고 동기적으로 실행됩니다.
import torch.sagemaker as tsm tsm.init() from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_config(..) model = tsm.transform(model, cp_comm_type="p2p")
SMP 구성
2단계의 일부로 SageMaker PyTorch 추정기의 SMP 구성 사전에 다음 파라미터를 추가합니다.
{ ..., # other SMP config parameters "context_parallel_degree": 2 }