

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

# 전문가 병렬 처리
<a name="model-parallel-core-features-v2-expert-parallelism"></a>

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

MoE 모델은 신경망, 일반적으로 피드 포워드 네트워크(FFN)로 구성된 여러 *전문가*로 구성됩니다. *라우터*라는 게이트 네트워크는 어떤 토큰이 어떤 전문가에게 전송되는지 결정합니다. 이러한 전문가는 입력 데이터의 특정 측면을 전문적으로 처리하여 모델을 더 빠르게 훈련하고 컴퓨팅 비용을 절감하는 동시에 대응 고밀도 모델과 동일한 성능 품질을 달성할 수 있습니다. 일반적으로 전문가 혼합에 대해 자세히 알아보려면 *NVIDIA 개발자 웹* 사이트의 [LLM 아키텍처에서 전문가 혼합 적용](https://developer.nvidia.com/blog/applying-mixture-of-experts-in-llm-architectures/) 블로그를 참조하세요.

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

SMP v2는 전문가 병렬 처리를 구현하기 위해 [NVIDIA Megatron](https://github.com/NVIDIA/Megatron-LM)과 통합되어 MoE 모델 학습을 지원하며 PyTorch FSDP API를 기반으로 실행됩니다. PyTorch FSDP 훈련 코드를 그대로 계속 사용하고 MoE 모델 훈련을 위해 SMP 전문가 병렬 처리를 활성화합니다.

## SMP 전문가 병렬 처리와 호환되는 Hugging Face 트랜스포머 모델
<a name="model-parallel-core-features-v2-expert-parallelism-supported-models"></a>

SMP v2는 현재 다음 Hugging Face 트랜스포머 모델에 대한 전문가 병렬 처리를 지원합니다.
+ [혼합](https://huggingface.co/docs/transformers/en/model_doc/mixtral)

## 전문가 병렬 처리 구성
<a name="model-parallel-core-features-v2-expert-parallelism-configure"></a>

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

다음 코드 조각은 [SageMaker 모델 병렬 처리 라이브러리 v2 사용](model-parallel-use-api-v2.md)에 도입된 2단계 프로세스를 따르면서 훈련 스크립트에 SMP 초기화 모듈 `torch.sagemaker.init()`을 추가하고 훈련 작업 시작 관리자를 위한 JSON 형식으로 SMP 구성 사전을 설정하는 방법을 보여줍니다. PyTorch 모델 또는 [PyTorch FSDP](https://pytorch.org/docs/stable/fsdp.html#module-torch.distributed.fsdp) 구성을 변경할 필요가 없습니다. `expert_parallel_degree` 파라미터에 대한 자세한 내용은 [SMP v2 코어 기능 구성 파라미터](distributed-model-parallel-v2-reference.md#distributed-model-parallel-v2-reference-init-config)를 참조하세요.

**참고**  
[하이브리드 샤딩 데이터 병렬 처리](model-parallel-core-features-v2-sharded-data-parallelism.md)에서 전문가 병렬 처리를 사용할 수 있습니다. 전문가 병렬 처리는 현재 텐서 병렬 처리와 호환되지 않습니다.

**참고**  
이 전문가 병렬 처리 훈련 기능은 SageMaker 라이브러리와 PyTorch 라이브러리의 다음 조합에서 사용할 수 있습니다.  
SMP v2.3.0 이상
SageMaker Python SDK v2.214.4 이상
PyTorch v2.2.0 이상

### 훈련 스크립트에서
<a name="model-parallel-core-features-v2-expert-parallelism-configure-in-script"></a>

[1단계](model-parallel-use-api-v2.md#model-parallel-adapt-pytorch-script-v2)의 일환으로 스크립트를 `torch.sagemaker.init()`로 초기화하여 SMP v2를 활성화하고 [`torch.sagemaker.transform`](distributed-model-parallel-v2-reference.md#model-parallel-v2-torch-sagemaker-reference-transform) API로 모델을 래핑하고 API에 `config` 파라미터를 추가하여 MoE 활성화합니다. 다음 코드 조각은 처음부터 훈련하는 `from_config` 방법 또는 미세 조정을 위한 `from_pretrained` 메서드를 사용하여 MoE 트랜스포머 모델 구성을 가져오는 일반 모델 클래스 `AutoModelForCausalLM`에 대해 SMP MoE를 활성화하는 방법을 보여줍니다. `MoEConfig` 클래스에 대한 자세한 내용을 알아보려면 [`torch.sagemaker.moe.moe_config.MoEConfig`](distributed-model-parallel-v2-reference.md#model-parallel-v2-torch-sagemaker-reference-moe) 섹션을 참조하세요.

```
# 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 구성
<a name="model-parallel-core-features-v2-expert-parallelism-configure-in-estimator-config"></a>

[2단계](model-parallel-use-api-v2.md#model-parallel-launch-a-training-job-v2)의 일부로 SageMaker PyTorch 추정기의 SMP 구성 사전에 다음 파라미터를 추가합니다.

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