전문가 병렬 처리 - Amazon SageMaker

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

전문가 병렬 처리

전문가 혼합(MoE ) 모델은 희소 접근 방식을 사용하는 일종의 변환기 모델로, 기존 고밀도 모델 훈련에 비해 훈련에 더 가볍습니다. 이 MoE 신경망 아키텍처에서는 각 입력에 전문가라는 모델 구성 요소의 하위 집합만 사용됩니다. 이 접근 방식은 모델 크기가 더 크더라도 더 효율적인 훈련과 더 빠른 추론을 비롯한 여러 이점을 제공합니다. 즉, 전체 밀도 모델을 훈련하기 위한 동일한 컴퓨팅 예산으로 MoE 를 사용할 때 더 큰 모델 또는 데이터 세트를 맞출 수 있습니다.

MoE 모델은 여러 전문가로 구성되며, 각 전문가는 신경망, 일반적으로 피드 포워드 네트워크()로 구성됩니다FFN. 라우터라는 게이트 네트워크는 어떤 토큰이 어떤 전문가에게 전송되는지 결정합니다. 이러한 전문가는 입력 데이터의 특정 측면을 전문적으로 처리하여 모델을 더 빠르게 훈련하고 컴퓨팅 비용을 절감하는 동시에 대응 고밀도 모델과 동일한 성능 품질을 달성할 수 있습니다. 일반적인 전문가 혼합에 대한 자세한 내용은 NVIDIA 개발자 웹 사이트의 LLM 아키텍처에서 전문가 혼합 적용 블로그를 참조하세요.

전문가 병렬 처리는 GPU 디바이스 간에 MoE 모델의 전문가를 분할하는 것을 처리하는 병렬 처리의 한 유형입니다.

SMP v2는 전문가 병렬 처리를 구현하여 MoE 모델 훈련을 지원하기 위해 NVIDIA Megatron과 통합되며, 상위 에서 실행됩니다 PyTorch FSDPAPIs. 훈련 코드를 그대로 계속 사용하고 MoE 모델 훈련을 PyTorch FSDP 위한 SMP 전문가 병렬 처리를 활성화합니다.

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

SMP v2는 현재 다음 Hugging Face 변환기 모델에 대한 전문가 병렬 처리를 지원합니다.

전문가 병렬 처리 구성

expert_parallel_degree경우 전문가 병렬 처리 정도에 대한 값을 선택합니다. 값은 클러스터의 수GPUs를 균등하게 나누어야 합니다. 예를 들어 8 인 인스턴스를 사용하는 동안 모델을 샤딩하려면 2, 4 또는 8을 GPUs선택합니다. 작은 숫자로 시작하고 모델이 GPU 메모리에 적합할 때까지 점진적으로 늘리는 것이 좋습니다.

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

참고

에서 전문가 병렬 처리를 사용할 수 있습니다하이브리드 샤딩된 데이터 병렬 처리. 전문가 병렬 처리는 현재 텐서 병렬 처리와 호환되지 않습니다.

참고

이 전문가 병렬 처리 훈련 기능은 SageMaker 와 라이브러리의 다음 조합에서 사용할 수 PyTorch 있습니다.

  • SMP v2.3.0 이상

  • SageMaker Python SDK v2.214.4 이상

  • PyTorch v2.2.0 이상

훈련 스크립트에서

1단계의 일환으로 스크립트를 로 초기화torch.sagemaker.init()하여 SMP v2를 활성화하고 모델을 torch.sagemaker.transform 로 래핑API하고 에 config 파라미터를 추가하여 MoE API 활성화합니다. 다음 코드 조각은 처음부터 훈련하는 from_config 방법 또는 미세 조정 방법을 사용하여 SMP MoE 변환기 모델 구성을 AutoModelForCausalLM 가져오는 일반 모델 클래스from_pretrained에 대해 MoE를 활성화하는 방법을 보여줍니다. SMP MoEConfig 클래스에 대한 자세한 내용은 섹션을 참조하세요torch.sagemaker.moe.moe_config.MoEConfig.

# Import the torch.sagemaker.transform API and initialize. import torch.sagemaker as tsm tsm.init() # Import transformers AutoModelForCausalLM class. from transformers import AutoModelForCausalLM # Import the SMP-implementation of MoE configuration class. from torch.sagemaker.moe.moe_config import MoEConfig # Define a transformer model with an MoE model configuration model = AutoModelForCausalLM.from_config(MoEModelConfig) # Wrap it by torch.sagemaker.transform with the SMP MoE configuration. model = tsm.transform( model, config=MoEConfig( smp_moe=True, random_seed=12345, moe_load_balancing="sinkhorn", global_token_shuffle=False, moe_all_to_all_dispatcher=True, moe_aux_loss_coeff=0.001, moe_z_loss_coeff=0.001 ) )

SMP 구성

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

{ ..., # other SMP config parameters "expert_parallel_degree": 8 }