Jadwalkan pekerjaan Slurm di cluster SageMaker HyperPod - Amazon SageMaker

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Jadwalkan pekerjaan Slurm di cluster SageMaker HyperPod

Anda dapat meluncurkan pekerjaan pelatihan menggunakan Slurm standar sbatch atau srun perintah. Misalnya, untuk meluncurkan pekerjaan pelatihan 8-node, Anda dapat menjalankan pelatihan srun -N 8 --exclusive train.sh SageMaker HyperPod pendukung di berbagai lingkungan, termasuk,conda, venvdocker, danenroot. Anda dapat mengonfigurasi lingkungan ML dengan menjalankan skrip siklus hidup di kluster Anda. SageMaker HyperPod Anda juga memiliki opsi untuk melampirkan sistem file bersama seperti Amazon FSx, yang juga dapat digunakan sebagai lingkungan virtual.

Contoh berikut menunjukkan cara menjalankan pekerjaan untuk melatih Llama-2 dengan teknik Fully Sharded Data Parallelism (FSDP) pada cluster dengan sistem file bersama SageMaker HyperPod Amazon FSx. Anda juga dapat menemukan lebih banyak contoh dari GitHub repositori Pelatihan Terdistribusi Awsome.

Tip

Semua SageMaker HyperPod contoh tersedia di 3.test_cases folder GitHub repositori Pelatihan Terdistribusi Awsome.

  1. Kloning GitHub repositori Pelatihan Terdistribusi Awsome, dan salin contoh pekerjaan pelatihan ke sistem file Amazon FSx Anda.

    $ TRAINING_DIR=/fsx/users/my-user/fsdp $ git clone https://github.com/aws-samples/awsome-distributed-training/
  2. Jalankan create_conda_env.shskrip. Ini menciptakan conda lingkungan di sistem file Amazon FSx Anda. Pastikan bahwa sistem file dapat diakses oleh semua node di cluster.

  3. Bangun lingkungan Conda virtual dengan meluncurkan pekerjaan slurm node tunggal sebagai berikut.

    $ srun -N 1 /path_to/create_conda_env.sh
  4. Setelah lingkungan dibangun, Anda dapat meluncurkan pekerjaan pelatihan dengan menunjuk ke jalur lingkungan pada volume bersama. Anda dapat meluncurkan pekerjaan pelatihan single-node dan multi-node dengan pengaturan yang sama. Untuk meluncurkan pekerjaan, buat skrip peluncur pekerjaan (juga disebut skrip titik masuk) sebagai berikut.

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

    Jika Anda ingin membuat pekerjaan pelatihan Anda lebih tangguh terhadap kegagalan perangkat keras dengan menggunakan kemampuan resume otomatis SageMaker HyperPod, Anda perlu mengatur variabel lingkungan dengan benar MASTER_ADDR di skrip entrypoint. Untuk mempelajari selengkapnya, lihat Lanjutkan otomatis.

    Tutorial ini mengasumsikan bahwa script ini disimpan sebagai/fsx/users/my_user/train.sh.

  5. Dengan skrip ini dalam volume bersama di/fsx/users/my_user/train.sh, jalankan srun perintah berikut untuk menjadwalkan pekerjaan Slurm.

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