전문가 병렬 처리 - 아마존 SageMaker

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

전문가 병렬 처리

MoE (Mixted of Experts) 모델은 희소한 접근 방식을 사용하는 트랜스포머 모델의 일종으로, 기존의 고밀도 모델 학습에 비해 교육 비용이 더 적습니다. 이 MoE 신경망 아키텍처에서는 각 입력에 전문가라고 하는 모델 구성 요소 중 일부만 활용됩니다. 이 접근 방식은 모델 크기가 더 크더라도 더 효율적인 훈련과 더 빠른 추론 등 여러 가지 이점을 제공합니다. 다시 말해, 완전 고밀도 모델을 학습시키는 데 필요한 동일한 컴퓨팅 예산으로 MoE 사용 시 더 큰 모델이나 데이터 세트를 사용할 수 있습니다.

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

전문가 병렬 처리는 MoE 모델의 전문가를 GPU 장치 간에 분할하여 처리하는 병렬 처리의 일종입니다.

SMP v2는 NVIDIA 메가트론과 통합되어 MoE 모델 교육을 지원하는 전문가 병렬 처리를 구현하며 FSDP API를 기반으로 실행됩니다. PyTorch PyTorch FSDP 교육 코드는 그대로 사용하고 MoE 모델 학습을 위해 SMP 전문가 병렬화를 활성화합니다.

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

SMP v2 전문가 병렬 처리는 다음과 같은 Hugging Face Transformer 모델을 지원합니다.

전문가 병렬 처리 구성

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

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

참고

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

참고

이 전문가 병렬 처리 교육 기능은 다음과 같은 라이브러리 및 라이브러리 조합으로 사용할 수 있습니다. SageMaker PyTorch

  • SMP v2.3.0 이상

  • SageMaker 파이썬 SDK v2.214.4 이상

  • PyTorch v2.2.0 이상

교육 스크립트에서

1단계의 일부로 SMP v2를 torch.sagemaker.init() 활성화하도록 스크립트를 초기화하고 API로 모델을 래핑하여 torch.sagemaker.transform API에 config 매개변수를 추가하여 MoE를 활성화합니다. 다음 코드 스니펫은 MoE 트랜스포머 모델 구성을 AutoModelForCausalLM 가져와서 처음부터 학습하는 방법 또는 미세 조정 방법을 사용하여 일반 모델 클래스의 SMP MoE를 활성화하는 from_config 방법을 보여줍니다. from_pretrained 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단계의 일부로 추정기의 SMP 구성 사전에 다음 파라미터를 추가합니다. SageMaker PyTorch

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