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
, venv
docker
, 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 AmazonFSx, 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 SageMaker HyperPod bersama 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
-
Kloning GitHub repositori Pelatihan Terdistribusi Awsome
, 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/
-
Jalankan
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. -
Bangun lingkungan Conda virtual dengan meluncurkan pekerjaan slurm node tunggal sebagai berikut.
$
srun -N 1
/path_to/create_conda_env.sh
-
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_SCRIPTTip
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
. -
Dengan skrip ini dalam volume bersama di
/fsx/users/my_user/train.sh
, jalankansrun
perintah berikut untuk menjadwalkan pekerjaan Slurm.$
cd /fsx/users/my_user/
$
srun -N 8 train.sh