기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
클러스터에서 Slurm 작업을 예약하십시오. SageMaker HyperPod
표준 Slurm sbatch
또는 srun
명령을 사용하여 교육 작업을 시작할 수 있습니다. 예를 들어, 8노드 교육 작업을 시작하려면,, conda
venv
, docker
등 다양한 환경에서 srun -N 8 --exclusive train.sh
SageMaker HyperPod 지원 교육을 실행할 수 있습니다. enroot
SageMaker HyperPod 클러스터에서 라이프사이클 스크립트를 실행하여 ML 환경을 구성할 수 있습니다. 가상 환경으로도 사용할 수 있는 Amazon FSx와 같은 공유 파일 시스템을 연결하는 옵션도 있습니다.
다음 예제는 Amazon FSx 공유 파일 시스템이 있는 클러스터에서 FSDP (완전 샤딩된 데이터 병렬화) 기법을 사용하여 Llama-2를 교육하는 작업을 실행하는 방법을 보여줍니다. SageMaker HyperPod 또한 Awsome 분산 교육 리포지토리에서 더 많은 예제를 찾을 수 있습니다. GitHub
작은 정보
모든 SageMaker HyperPod 예제는 Awsome 분산 교육 GitHub 3.test_cases
폴더에서 사용할 수 있습니다.
-
Awsome 분산 교육 GitHub 리포지토리를
복제하고 교육 작업 예제를 Amazon FSx 파일 시스템에 복사하십시오. $
TRAINING_DIR=
/fsx/users/my-user/fsdp
$
git clone https://github.com/aws-samples/awsome-distributed-training/
-
create_conda_env.sh
스크립트 실행. 그러면 Amazon FSx 파일 시스템에 conda
환경이 만들어집니다. 클러스터의 모든 노드가 파일 시스템에 액세스할 수 있는지 확인하십시오. -
다음과 같이 단일 노드 Slurm 작업을 시작하여 가상 Conda 환경을 구축하십시오.
$
srun -N 1
/path_to/create_conda_env.sh
-
환경을 구축한 후 공유 볼륨의 환경 경로를 가리키면 교육 작업을 시작할 수 있습니다. 동일한 설정으로 단일 노드 및 다중 노드 교육 작업을 모두 시작할 수 있습니다. 작업을 시작하려면 다음과 같이 작업 시작 스크립트 (진입점 스크립트라고도 함) 를 만드십시오.
#!/usr/bin/env bash set -ex ENV_PATH=
/fsx/users/my_user/pytorch_env
TORCHRUN=$ENV_PATH/bin/torchrun TRAINING_SCRIPT=/fsx/users/my_user/pt_train.py
WORLD_SIZE_JOB=$SLURM_NTASKS RANK_NODE=$SLURM_NODEID PROC_PER_NODE=8 MASTER_ADDR=(`scontrol show hostnames \$SLURM_JOB_NODELIST | head -n 1`) MASTER_PORT=$(expr 10000 + $(echo -n $SLURM_JOBID | tail -c 4)) DIST_ARGS="--nproc_per_node=$PROC_PER_NODE \ --nnodes=$WORLD_SIZE_JOB \ --node_rank=$RANK_NODE \ --master_addr=$MASTER_ADDR \ --master_port=$MASTER_PORT \ " $TORCHRUN $DIST_ARGS $TRAINING_SCRIPT작은 정보
의 SageMaker HyperPod 자동 재개 기능을 사용하여 하드웨어 장애에 대한 교육 작업의 복원력을 높이려면 진입점
MASTER_ADDR
스크립트에서 환경 변수를 적절하게 설정해야 합니다. 자세한 내용은 자동 재개 섹션을 참조하세요.이 자습서에서는 이 스크립트가 로 저장되었다고 가정합니다.
/fsx/users/my_user/train.sh
-
공유 볼륨에서
/fsx/users/my_user/train.sh
이 스크립트를srun
사용하여 다음 명령을 실행하여 Slurm 작업을 예약하십시오.$
cd /fsx/users/my_user/
$
srun -N 8 train.sh