

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

# Menjadwalkan pekerjaan Slurm di cluster SageMaker HyperPod
<a name="sagemaker-hyperpod-run-jobs-slurm-schedule-slurm-job"></a>

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`, `venv``docker`, dan`enroot`. 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 SageMaker HyperPod dengan sistem file bersama Amazon. FSx Anda juga dapat menemukan lebih banyak contoh dari [ GitHub repositori Pelatihan Terdistribusi Awsome](https://github.com/aws-samples/awsome-distributed-training/).

**Tip**  
Semua SageMaker HyperPod contoh tersedia di `3.test_cases` folder [ GitHub repositori Pelatihan Terdistribusi Awsome](https://github.com/aws-samples/awsome-distributed-training/).

1. Kloning [ GitHub repositori Pelatihan Terdistribusi Awsome](https://github.com/aws-samples/awsome-distributed-training/), dan salin contoh pekerjaan pelatihan ke sistem file Amazon Anda. FSx 

   ```
   $ TRAINING_DIR=/fsx/users/my-user/fsdp
   $ git clone https://github.com/aws-samples/awsome-distributed-training/
   ```

1. Jalankan [https://github.com/aws-samples/awsome-distributed-training/blob/main/3.test_cases/10.FSDP/0.create_conda_env.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/3.test_cases/10.FSDP/0.create_conda_env.sh)skrip. Ini menciptakan `conda` lingkungan di sistem FSx file Amazon Anda. Pastikan bahwa sistem file dapat diakses oleh semua node di cluster.

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

   ```
   $ srun -N 1 /path_to/create_conda_env.sh
   ```

1. 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 [Pemulihan simpul otomatis dan lanjutkan otomatis](sagemaker-hyperpod-resiliency-slurm-auto-resume.md).

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

1. 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
   ```