

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
<a name="sagemaker-hyperpod-run-jobs-slurm-schedule-slurm-job"></a>

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, darunter`conda`, `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ängen FSx, das auch als virtuelle Umgebung verwendet werden kann.

Das folgende Beispiel zeigt, wie ein Job zum Trainieren von Llama-2 mit der FSDP-Technik (Fully Sharded Data Parallelism) 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 ](https://github.com/aws-samples/awsome-distributed-training/)

**Tipp**  
Alle SageMaker HyperPod Beispiele sind im `3.test_cases` Ordner des [Awsome Distributed Training GitHub ](https://github.com/aws-samples/awsome-distributed-training/) Repositorys verfügbar.

1. Klonen Sie das [Awsome Distributed Training GitHub Repository](https://github.com/aws-samples/awsome-distributed-training/) 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/
   ```

1. Führen Sie das [https://github.com/aws-samples/awsome-distributed-training/blob/main/3.test_cases/10.FSDP/0.create_conda_env.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/3.test_cases/10.FSDP/0.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.

1. 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
   ```

1. 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_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 Knotenwiederherstellung und automatische Wiederaufnahme](sagemaker-hyperpod-resiliency-slurm-auto-resume.md).

   In diesem Tutorial wird davon ausgegangen, dass dieses Skript unter `/fsx/users/my_user/train.sh` gespeichert ist.

1. Führen Sie mit diesem Skript im freigegebenen Volume unter `/fsx/users/my_user/train.sh` den folgenden `srun`-Befehl aus, um den Slurm-Auftrag zu planen.

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