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.
Einen Slurm-Job auf einem Cluster planen SageMaker HyperPod
Sie können Trainingsjobs mit den Standard-Slurm-Befehlen sbatch oder srun starten. Um beispielsweise einen Trainingsjob mit 8 Knoten zu starten, können Sie srun -N 8 --exclusive train.sh SageMaker HyperPod Support-Schulungen in einer Reihe von Umgebungen durchführen, darunter conda venvdocker, undenroot. Sie können eine ML-Umgebung konfigurieren, indem Sie Lifecycle-Skripts auf Ihren SageMaker HyperPod Clustern ausführen. Sie haben auch die Möglichkeit, ein gemeinsam genutztes Dateisystem wie Amazon FSx anzufügen, das auch als virtuelle Umgebung verwendet werden kann.
Das folgende Beispiel zeigt, wie Sie einen Job für das Training Llama-2 mit der Fully Sharded Data Parallelism (FSDP) -Technik auf einem SageMaker HyperPod Cluster mit einem gemeinsam genutzten Amazon FSx-Dateisystem ausführen. 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 GitHub Training-Repositorys verfügbar.
-
Klonen Sie das Awsome Distributed GitHub
Training-Repository und kopieren Sie die Beispiele für Trainingsjobs in Ihr Amazon FSx-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 entsteht eine conda-Umgebung auf Ihrem Amazon-FSx-Dateisystem. 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-Auftrag 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 verweisen. 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_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_SCRIPTTipp
Wenn Sie Ihren Trainingsjob widerstandsfähiger gegen Hardwareausfälle machen möchten, indem Sie die Funktion zur automatischen Wiederaufnahme von verwenden SageMaker HyperPod, müssen Sie die Umgebungsvariable
MASTER_ADDRim Entrypoint-Skript ordnungsgemäß einrichten. Weitere Informationen hierzu finden Sie unter Automatische Knotenwiederherstellung und automatische Wiederaufnahme.In diesem Tutorial wird davon ausgegangen, dass dieses Skript unter
/fsx/users/my_user/train.shgespeichert ist. -
Führen Sie mit diesem Skript im freigegebenen Volume unter
/fsx/users/my_user/train.shden folgendensrun-Befehl aus, um den Slurm-Auftrag zu planen.$cd /fsx/users/my_user/$srun -N 8 train.sh