Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Pianificazione di un job Slurm su un cluster SageMaker HyperPod
Puoi avviare job di addestramento utilizzando i comandi standard sbatch o srun di Slurm. Ad esempio, per avviare un processo di formazione a 8 nodi, è possibile eseguire la formazione dei srun -N 8 --exclusive train.sh SageMaker HyperPod supporti in una serie di ambienti, tra cuiconda, venvdocker, eenroot. È possibile configurare un ambiente ML eseguendo script del ciclo di vita sui cluster. SageMaker HyperPod Hai anche la possibilità di allegare un file system condiviso come Amazon FSx, che può essere utilizzato anche come ambiente virtuale.
L'esempio seguente mostra come eseguire un job per addestrare Llama-2 con la tecnica Fully Sharded Data Parallelism (FSDP) su un cluster SageMaker HyperPod con un file system condiviso Amazon. FSx Puoi anche trovare altri esempi dal repository Awsome Distributed Training. GitHub
Suggerimento
Tutti gli SageMaker HyperPod esempi sono disponibili nella 3.test_cases cartella del repository Awsome Distributed Training
-
Clona l' GitHub archivio Awsome Distributed Training
e copia gli esempi di lavori di formazione sul tuo file system Amazon FSx . $TRAINING_DIR=/fsx/users/my-user/fsdp$git clone https://github.com/aws-samples/awsome-distributed-training/ -
Eseguire lo script
create_conda_env.sh. Questo crea un condaambiente sul tuo FSx file system Amazon. Verifica che il file system sia accessibile a tutti i nodi del cluster. -
Crea l’ambiente virtuale Conda avviando un processo Slurm a nodo singolo come descritto di seguito.
$srun -N 1/path_to/create_conda_env.sh -
Dopo aver creato l’ambiente, puoi avviare un job di addestramento indicando il percorso dell’ambiente sul volume condiviso. Puoi avviare job di addestramento sia a nodo singolo che multinodo con la stessa configurazione. Per avviare un processo, crea uno script di avvio dei processi (chiamato anche script del punto di ingresso) come segue.
#!/usr/bin/env bash set -ex ENV_PATH=/fsx/users/my_user/pytorch_envTORCHRUN=$ENV_PATH/bin/torchrun TRAINING_SCRIPT=/fsx/users/my_user/pt_train.pyWORLD_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_SCRIPTSuggerimento
Se si desidera rendere il processo di formazione più resistente ai guasti hardware utilizzando la funzionalità di ripristino automatico di SageMaker HyperPod, è necessario impostare correttamente la variabile di ambiente
MASTER_ADDRnello script entrypoint. Per ulteriori informazioni, consulta Ripristino automatico dei nodi e ripristino automatico.Questo tutorial presuppone che questo script sia salvato come
/fsx/users/my_user/train.sh. -
Con questo script nel volume condiviso in
/fsx/users/my_user/train.sh, esegui il comandosrunseguente per pianificare il processo Slurm.$cd /fsx/users/my_user/$srun -N 8 train.sh