

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

# HyperPod에서 Slurm을 사용하여 분산 훈련 워크로드 실행
<a name="sagemaker-hyperpod-run-jobs-slurm-distributed-training-workload"></a>

SageMaker HyperPod는 대규모 언어 모델(LLM) 및 파운데이션 모델(FM) 훈련의 워크로드에 특화되었습니다. 이러한 워크로드에는 여러 병렬 처리 기법을 사용하고 ML 인프라 및 리소스에 최적화된 작업이 필요한 경우가 많습니다. SageMaker HyperPod를 사용하면 다음과 같은 SageMaker AI 분산 훈련 프레임워크를 사용할 수 있습니다.
+  AWS에 최적화된 집합 통신 작업을 제공하는 [SageMaker AI distributed data parallelism (SMDDP) library](data-parallel.md)입니다.
+ 다양한 모델 병렬화 기법을 구현하는 [SageMaker AI model parallelism (SMP) library](model-parallel-v2.md)입니다.

**Topics**
+ [SageMaker HyperPod에서 SMDDP 사용](#sagemaker-hyperpod-run-jobs-slurm-distributed-training-workload-smddp)
+ [SageMaker HyperPod 클러스터에서 SMP 사용](#sagemaker-hyperpod-run-jobs-slurm-distributed-training-workload-smp)

## SageMaker HyperPod에서 SMDDP 사용
<a name="sagemaker-hyperpod-run-jobs-slurm-distributed-training-workload-smddp"></a>

[SMDDP 라이브러리](data-parallel.md)는 분산 데이터 병렬 훈련의 컴퓨팅 성능을 개선하는 집합 통신 라이브러리입니다. SMDDP 라이브러리는 다음과 같은 오픈 소스 분산 훈련 프레임워크에서 작동합니다.
+ [PyTorch 분산 데이터 병렬(DDP)](https://pytorch.org/docs/stable/notes/ddp.html)
+ [PyTorch 완전 샤딩 데이터 병렬 처리(FSDP)](https://pytorch.org/docs/stable/fsdp.html)
+ [DeepSpeed](https://github.com/microsoft/DeepSpeed)
+ [Megatron-DeepSpeed](https://github.com/microsoft/Megatron-DeepSpeed)

SMDDP 라이브러리는 SageMaker HyperPod에 대해 다음을 제공하여 키 집합 통신 작업의 통신 오버헤드를 해결합니다.
+ 라이브러리는에 `AllGather` 최적화된를 제공합니다 AWS. `AllGather`는 샤딩된 데이터 병렬 훈련에 사용되는 키 작업으로, 인기 있는 라이브러리에서 제공하는 메모리 효율적인 데이터 병렬 처리 기법입니다. 여기에는 SageMaker AI 모델 병렬화(SMP) 라이브러리, DeepSpeed Zero Redundancy Optimizer(ZeRO) 및 PyTorch 완전 샤딩 데이터 병렬화(FSDP)가 포함됩니다.
+ 라이브러리는 AWS 네트워크 인프라와 SageMaker AI ML 인스턴스 토폴로지를 완전히 활용하여 최적화된 node-to-node 통신을 수행합니다.

**샘플 데이터 병렬 훈련 작업을 실행하려면**

SMDDP 라이브러리를 사용하여 데이터 병렬 처리 기술을 구현하는 다음 분산 훈련 샘플을 살펴보세요.
+ [https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/12.SM-dataparallel-FSDP](https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/12.SM-dataparallel-FSDP)
+ [https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/13.SM-dataparallel-deepspeed](https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/13.SM-dataparallel-deepspeed)

**SageMaker HyperPod에서 SMDDP 라이브러리를 사용하기 위한 환경을 설정하려면**

다음은 SageMaker HyperPod 에서 SMDDP 라이브러리를 사용하기 위한 훈련 환경 요구 사항입니다.
+ PyTorch v2.0.1 이상
+ CUDA v11.8 이상
+ 3보다 큰 `libstdc++` 런타임 버전
+ Python v3.10.x 이상
+ SMDDP 라이브러리에서 지원하는 인스턴스 유형인 `ml.p4d.24xlarge` 및 `ml.p4de.24xlarge`
+ `imdsv2` 훈련 호스트에서 활성화됨

분산 훈련 작업을 실행하는 방법에 따라 SMDDP 라이브러리를 설치하는 두 가지 옵션이 있습니다.
+ SMDDP 바이너리 파일을 사용한 직접 설치입니다.
+ SMDDP 라이브러리와 함께 사전 설치된 SageMaker AI Deep Learning Containers(DLC) 사용.

SMDDP 라이브러리 또는 SMDDP 바이너리 파일의 URL이 사전 설치된 Docker 이미지는 SMDDP 라이브러리 설명서의 [지원되는 프레임워크](https://docs.aws.amazon.com/sagemaker/latest/dg/distributed-data-parallel-support.html#distributed-data-parallel-supported-frameworks)에 나열되어 있습니다.

**SageMaker HyperPod DLAMI에 SMDDP 라이브러리를 설치하려면**
+ `pip install --no-cache-dir https://smdataparallel.s3.amazonaws.com/binary/pytorch/{{<pytorch-version>/cuXYZ/YYYY-MM-DD/smdistributed_dataparallel-X.Y.Z-cp310-cp310-linux_x86_64}}.whl`
**참고**  
Conda 환경에서 작업하는 경우 `pip` 대신 `conda install`를 사용하여 PyTorch를 설치해야 합니다.  

  ```
  conda install pytorch=={{X.Y.Z}}  torchvision=={{X.Y.Z}} torchaudio=={{X.Y.Z}} pytorch-cuda={{X.Y.Z}} -c pytorch -c nvidia
  ```

**Docker 컨테이너에서 SMDDP 라이브러리를 사용하려면**
+ SMDDP 라이브러리는 SageMaker AI 딥 러닝 컨테이너(DLC)에 사전 설치됩니다. SMDDP 라이브러리가 있는 PyTorch용 SageMaker AI 프레임워크 DLC 목록을 찾으려면 SMDDP 라이브러리 설명서의 [Supported Frameworks](https://docs.aws.amazon.com/sagemaker/latest/dg/distributed-data-parallel-support.html#distributed-data-parallel-supported-frameworks)를 참조하세요. SMDDP 라이브러리를 사용하기 위해 필요한 종속 항목이 설치된 자체 Docker 컨테이너를 가져올 수도 있습니다. SMDDP 라이브러리를 사용하도록 사용자 지정 Docker 컨테이너를 설정하는 방법에 대한 자세한 내용은 [SageMaker AI 분산 데이터 병렬 라이브러리로 자체 Docker 컨테이너 만들기](data-parallel-bring-your-own-container.md) 섹션도 참조하세요.
**중요**  
Docker 컨테이너에서 SMDDP 라이브러리를 사용하려면 호스트 시스템의 `/var/log` 디렉터리를 컨테이너의 `/var/log`에 탑재합니다. 컨테이너를 실행할 때 다음 옵션을 추가하여 이 작업을 수행할 수 있습니다.  

  ```
  docker run {{<OTHER_OPTIONS>}} -v /var/log:/var/log ...
  ```

일반적으로 SMDDP를 사용하여 데이터 병렬 훈련 작업을 실행하는 방법을 알아보려면 [SageMaker AI 분산형 데이터 병렬화 라이브러리를 사용한 분산 훈련](data-parallel-modify-sdp.md) 섹션을 참조하세요.

## SageMaker HyperPod 클러스터에서 SMP 사용
<a name="sagemaker-hyperpod-run-jobs-slurm-distributed-training-workload-smp"></a>

[SageMaker AI model parallelism (SMP) library](model-parallel-v2.md)는 다음과 같은 다양한 [최첨단 모델 병렬화 기법](model-parallel-core-features-v2.md)을 제공합니다.
+ 완전히 샤딩된 데이터 병렬 처리
+ 전문가 병렬 처리
+ FP16/BF16 및 FP8 데이터 유형을 사용한 혼합 정밀도 훈련
+ 텐서 병렬 처리

SMP 라이브러리는 PyTorch FSDP, NVIDIA Megatron 및 NVIDIA Transformer Engine과 같은 오픈 소스 프레임워크와도 호환됩니다.

**샘플 모델 병렬 훈련 워크로드를 실행하려면**

SageMaker AI 서비스 팀은 [https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/17.SM-modelparallelv2](https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/17.SM-modelparallelv2)에서 SMP 라이브러리와 모델 병렬화를 구현하는 샘플 훈련 작업을 제공합니다.