Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Planen Sie einen Slurm-Job auf einem Cluster SageMaker HyperPod
Sie können Trainingsjobs mit den srun
Standard-Slurm-Befehlen sbatch
oder -Befehlen starten. Um beispielsweise einen Trainingsjob mit 8 Knoten zu starten, können Sie srun -N 8 --exclusive train.sh
SageMaker HyperPod unterstützende Schulungen in einer Reihe von Umgebungen ausführen, darunterconda
, venv
docker
, und. enroot
Sie können eine ML-Umgebung konfigurieren, indem Sie Lifecycle-Skripten auf Ihren SageMaker HyperPod Clustern ausführen. Sie haben auch die Möglichkeit, ein gemeinsam genutztes Dateisystem wie Amazon anzuhängenFSx, das auch als virtuelle Umgebung verwendet werden kann.
Das folgende Beispiel zeigt, wie ein Job zum Trainieren von Llama-2 mit der Fully Sharded Data Parallelism (FSDP) -Technik auf einem SageMaker HyperPod Cluster mit einem gemeinsamen Amazon-Dateisystem ausgeführt wird. FSx Weitere Beispiele finden Sie auch im Awsome Distributed Training Repository. GitHub
Tipp
Alle SageMaker HyperPod Beispiele sind im 3.test_cases
Ordner des Awsome Distributed Training GitHub
-
Klonen Sie das Awsome Distributed Training GitHub Repository
und kopieren Sie die Beispiele für Trainingsjobs in Ihr FSx Amazon-Dateisystem. $
TRAINING_DIR=
/fsx/users/my-user/fsdp
$
git clone https://github.com/aws-samples/awsome-distributed-training/
-
Führen Sie das
create_conda_env.sh
-Skript aus. Dadurch wird eine conda
Umgebung auf Ihrem FSx Amazon-Dateisystem erstellt. Stellen Sie sicher, dass das Dateisystem für alle Knoten im Cluster zugänglich ist. -
Erstellen Sie die virtuelle Conda-Umgebung, indem Sie einen Slurm-Job mit einem einzelnen Knoten wie folgt starten.
$
srun -N 1
/path_to/create_conda_env.sh
-
Nachdem die Umgebung erstellt wurde, können Sie einen Trainingsjob starten, indem Sie auf den Umgebungspfad auf dem gemeinsam genutzten Volume zeigen. Sie können sowohl Trainingsjobs mit einem Knoten als auch mit mehreren Knoten mit derselben Konfiguration starten. Um einen Job zu starten, erstellen Sie wie folgt ein Job-Launcher-Skript (auch als Einstiegspunktskript bezeichnet).
#!/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_SCRIPTTipp
Wenn Sie Ihren Trainingsjob mithilfe der Funktion zur automatischen Wiederaufnahme von widerstandsfähiger gegen Hardwareausfälle machen möchten SageMaker HyperPod, müssen Sie die Umgebungsvariable
MASTER_ADDR
im Entrypoint-Skript ordnungsgemäß einrichten. Weitere Informationen hierzu finden Sie unter Automatische Wiederaufnahme.In dieser Anleitung wird davon ausgegangen, dass dieses Skript unter gespeichert ist.
/fsx/users/my_user/train.sh
-
Wenn sich dieses Skript im gemeinsam genutzten Volume unter befindet
/fsx/users/my_user/train.sh
, führen Sie den folgendensrun
Befehl aus, um den Slurm-Job zu planen.$
cd /fsx/users/my_user/
$
srun -N 8 train.sh