클러스터에서 Slurm 작업을 예약하십시오. SageMaker HyperPod - 아마존 SageMaker

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

클러스터에서 Slurm 작업을 예약하십시오. SageMaker HyperPod

표준 Slurm sbatch 또는 srun 명령을 사용하여 교육 작업을 시작할 수 있습니다. 예를 들어, 8노드 교육 작업을 시작하려면,, condavenv, 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 폴더에서 사용할 수 있습니다.

  1. Awsome 분산 교육 GitHub 리포지토리를 복제하고 교육 작업 예제를 Amazon FSx 파일 시스템에 복사하십시오.

    $ TRAINING_DIR=/fsx/users/my-user/fsdp $ git clone https://github.com/aws-samples/awsome-distributed-training/
  2. create_conda_env.sh스크립트 실행. 그러면 Amazon FSx 파일 시스템에 conda 환경이 만들어집니다. 클러스터의 모든 노드가 파일 시스템에 액세스할 수 있는지 확인하십시오.

  3. 다음과 같이 단일 노드 Slurm 작업을 시작하여 가상 Conda 환경을 구축하십시오.

    $ srun -N 1 /path_to/create_conda_env.sh
  4. 환경을 구축한 후 공유 볼륨의 환경 경로를 가리키면 교육 작업을 시작할 수 있습니다. 동일한 설정으로 단일 노드 및 다중 노드 교육 작업을 모두 시작할 수 있습니다. 작업을 시작하려면 다음과 같이 작업 시작 스크립트 (진입점 스크립트라고도 함) 를 만드십시오.

    #!/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

  5. 공유 볼륨에서 /fsx/users/my_user/train.sh 이 스크립트를 srun 사용하여 다음 명령을 실행하여 Slurm 작업을 예약하십시오.

    $ cd /fsx/users/my_user/ $ srun -N 8 train.sh