

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

# 컨텍스트 병렬 처리
<a name="model-parallel-core-features-v2-context-parallelism"></a>

*컨텍스트 병렬 처리*는 시퀀스 차원을 따라 모델 활성화를 분할하는 모델 병렬 처리의 한 유형입니다. `LayerNorm` 및 `RMSNorm`만 분할하는 다른 [시퀀스 병렬 처리](https://arxiv.org/abs/2205.05198) 기술과 달리 컨텍스트 병렬 처리는 시퀀스 차원을 따라 네트워크 입력 및 모든 중간 활성화를 분할합니다.

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

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

SMP v2는 현재 다음 Hugging Face 트랜스포머 모델에 대한 컨텍스트 병렬 처리를 지원합니다.
+ GPT-NeoX
+ Llama 2 및 Llama 3
+ [Mistral 7B](https://huggingface.co/mistralai/Mistral-7B-v0.3)

## 컨텍스트 병렬 처리 구성
<a name="model-parallel-core-features-v2-context-parallelism-configure"></a>

클러스터의 GPU 수를 균등하게 나눈 `context_parallel_degree` 파라미터로 정수 값을 설정합니다. 예를 들어 8-GPU 인스턴스가 있는 경우 `context_parallel_degree`에 2, 4 또는 8을 사용합니다. 작은 `context_parallel_degree` 값으로 시작하여 모델이 필요한 입력 시퀀스 길이로 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) 구성을 변경할 필요가 없습니다. `context_parallel_degree` 파라미터에 대한 자세한 내용은 [SMP v2 코어 기능 구성 파라미터](distributed-model-parallel-v2-reference.md#distributed-model-parallel-v2-reference-init-config)를 참조하세요.

### 훈련 스크립트에서
<a name="model-parallel-core-features-v2-context-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로 모델을 래핑합니다.

SMP v2.6.0부터 `cp_comm_type` 인수를 사용하여 사용할 컨텍스트 병렬 처리 구현을 결정할 수 있습니다. SMP 라이브러리는 현재 `p2p` 및 `all_gather`의 두 가지 구현을 지원합니다. 이 `p2p` 구현은 주의 구현 중에 키-값 누적에 대해 피어-투-피어 전송-수신 호출을 사용하고 비동기적으로 실행되어 컴퓨팅과 중복됩니다. `all_gather` 대신 구현은 `AllGather` 집합 작업을 사용하고 동기적으로 실행됩니다.

```
import torch.sagemaker as tsm
tsm.init()

from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_config(..)
model = tsm.transform(model, cp_comm_type="p2p")
```

### SMP 구성
<a name="model-parallel-core-features-v2-context-parallelism-configure-in-estimator"></a>

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

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