컨텍스트 병렬성 - 아마존 SageMaker

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

컨텍스트 병렬성

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

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

전문가 병렬 SMP 처리와 호환되는 Hugging Face Transformer 모델

SMPv2는 현재 다음과 같은 Hugging Face 트랜스포머 모델에 대한 컨텍스트 병렬 지원을 제공합니다.

  • GPT-NEOx

  • 라마 2와 라마 3

전문가 병렬 처리 구성

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

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

교육 스크립트에서

1단계에서 SMP v2를 torch.sagemaker.init() 활성화하도록 스크립트를 초기화하고 를 사용하여 모델을 래핑하십시오. 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 }