컨텍스트 병렬 처리 - Amazon SageMaker

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

컨텍스트 병렬 처리

컨텍스트 병렬 처리는 시퀀스 차원을 따라 모델 활성화를 분할하는 모델 병렬 처리의 한 유형입니다. LayerNorm 및 만 분할하는 다른 시퀀스 병렬 처리 기술과 달리 RMSNorm컨텍스트 병렬 처리는 시퀀스 차원을 따라 네트워크 입력 및 모든 중간 활성화를 분할합니다.

SMP v2는 컨텍스트 병렬 처리를 위해 Transformer Engine과 통합되며 FSDP 및 와 PyTorch 함께 사용할 수 있습니다SMP텐서 병렬화. 모델 훈련을 위해 세 개의 병렬 처리를 모두 동시에 활성화할 수 있습니다. 컨텍스트 병렬 처리는 활성화 크기가 크고 시퀀스 길이가 긴 훈련 모델에 유용합니다. 각 디바이스가 시퀀스 차원을 따라 점수 및 출력의 일부만 계산할 수 있도록 하여 주의 점수 및 주의 출력 계산을 가속화합니다. 또한 텐서 병렬 처리는 숨겨진 차원을 따라 분할을 통해 계산을 가속화하지만, 컴퓨팅 요구 사항이 시퀀스 차원에 따라 사분면으로 증가하므로 컨텍스트 병렬 처리의 이점이 더 큽니다.

SMP 컨텍스트 병렬 처리와 호환되는 Hugging Face Transformer 모델

SMP v2는 현재 다음 Hugging Face 변환기 모델에 대한 컨텍스트 병렬 처리를 지원합니다.

  • GPT-NeoX

  • Llama 2 및 Llama 3

컨텍스트 병렬 처리 구성

context_parallel_degree parameter 를 GPUs 클러스터의 수를 균등하게 나눈 값으로 설정합니다. 예를 들어 인스턴스가 8GPU인 경우 에 2, 4 또는 8을 사용합니다context_parallel_degree. 작은 context_parallel_degree 값으로 시작하여 모델이 필요한 입력 시퀀스 길이로 GPU 메모리에 적합할 때까지 점진적으로 늘리는 것이 좋습니다.

다음 코드 조각은 에 도입된 2단계 프로세스를 따르면서 훈련 스크립트torch.sagemaker.init()에 SMP 초기화 모듈을 추가하고 훈련 작업 시작 관리자를 위한 JSON 형식으로 SMP 구성 사전을 설정하는 방법을 보여줍니다 SageMaker 모델 병렬 처리 라이브러리 v2 사용. PyTorch 모델 또는 PyTorch FSDP 구성을 변경할 필요가 없습니다. context_parallel_degree 파라미터에 대한 자세한 내용은 SMPv2 핵심 기능 구성 매개변수을 참조하세요.

훈련 스크립트에서

1단계의 일환으로 스크립트를 로 초기화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)

SMP 구성

2단계의 일부로 SageMaker PyTorch 추정기의 SMP 구성 사전에 다음 파라미터를 추가합니다.

{ ..., # other SMP config parameters "context_parallel_degree": 2 }