Planen Sie einen Slurm-Job auf einem Cluster SageMaker HyperPod - Amazon SageMaker KI

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, venvdocker, 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 Repositorys verfügbar.

  1. 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/
  2. 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.

  3. 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
  4. 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_SCRIPT
    Tipp

    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

  5. Wenn sich dieses Skript im gemeinsam genutzten Volume unter befindet/fsx/users/my_user/train.sh, führen Sie den folgenden srun Befehl aus, um den Slurm-Job zu planen.

    $ cd /fsx/users/my_user/ $ srun -N 8 train.sh