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.
Planung eines Slurm-Jobs auf einem Cluster 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 unterstützende Schulungen in einer Reihe von Umgebungen ausführen, darunterconda, venvdocker, undenroot. 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 FSx anzufügen, das auch als virtuelle Umgebung verwendet werden kann.
Das folgende Beispiel zeigt, wie ein Trainingsjob Llama-2 mit der FSDP-Technik (Fully Sharded Data Parallelism) auf einem SageMaker HyperPod Cluster mit einem gemeinsam genutzten Amazon FSx-Dateisystem ausgeführt wird. 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 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 mithilfe der Funktion zur automatischen Wiederaufnahme von widerstandsfähiger gegen Hardwareausfälle machen möchten 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