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.
HyperPod Tutorial zur Vorbereitung des Slurm-Clusters (GPU)
Das folgende Tutorial richtet die Slurm-Umgebung ein und startet einen Trainingsjob auf einem Lama-Modell mit 8 Milliarden Parametern.
Voraussetzungen
Bevor Sie mit der Einrichtung Ihrer Umgebung zur Ausführung des Rezepts beginnen, stellen Sie sicher, dass Sie über Folgendes verfügen:
-
Richten Sie einen HyperPod GPU-Slurm-Cluster ein.
-
In Ihrem HyperPod Slurm-Cluster müssen Nvidia Enroot und Pyxis aktiviert sein (diese sind standardmäßig aktiviert).
-
-
Ein gemeinsam genutzter Speicherort. Es kann sich um ein FSx Amazon-Dateisystem oder ein NFS-System handeln, auf das von den Clusterknoten aus zugegriffen werden kann.
-
Daten in einem der folgenden Formate:
-
JSON
-
JSONGZ (komprimiertes JSON)
-
ARROW
-
-
(Optional) Sie benötigen ein HuggingFace Token, wenn Sie die Modellgewichte von HuggingFace für das Training oder die Feinabstimmung verwenden. Weitere Informationen zum Abrufen des Tokens finden Sie unter Benutzerzugriffstoken
.
HyperPod Einrichtung der GPU-Slurm-Umgebung
Gehen Sie wie folgt vor, um einen Trainingsjob auf einem HyperPod GPU-Slurm-Cluster zu initiieren:
-
Verbinden Sie sich per SSH mit dem Hauptknoten Ihres Slurm-Clusters.
-
Nachdem Sie sich angemeldet haben, richten Sie die virtuelle Umgebung ein. Vergewissern Sie sich, dass Sie Python 3.9 oder höher verwenden.
#set up a virtual environment python3 -m venv ${PWD}/venv source venv/bin/activate -
Klonen Sie die SageMaker HyperPod Rezepte und SageMaker HyperPod Adapter-Repositorys an einen gemeinsam genutzten Speicherort.
git clone https://github.com/aws/sagemaker-hyperpod-training-adapter-for-nemo.git git clone --recursive https://github.com/aws/sagemaker-hyperpod-recipes.git cd sagemaker-hyperpod-recipes pip3 install -r requirements.txt -
Erstellen Sie mit Enroot eine Squash-Datei. Die aktuelle Version des SMP-Containers finden Sie unter Versionshinweise zur Modell-Parallelitätsbibliothek von SageMaker AI. Weitere Informationen zur Verwendung der Enroot-Datei finden Sie unter Erstellen eines AWS optimierten Nemo-Launcher-Images
. REGION="<region>" IMAGE="658645717510.dkr.ecr.${REGION}.amazonaws.com/smdistributed-modelparallel:2.4.1-gpu-py311-cu121" aws ecr get-login-password --region ${REGION} | docker login --username AWS --password-stdin 658645717510.dkr.ecr.${REGION}.amazonaws.com enroot import -o $PWD/smdistributed-modelparallel.sqsh dockerd://${IMAGE} mv $PWD/smdistributed-modelparallel.sqsh "/fsx/<any-path-in-the-shared-filesystem>" -
Um die Enroot-Squash-Datei zum Starten des Trainings zu verwenden, ändern Sie die
recipes_collection/config.yaml-Datei anhand des folgenden Beispiels.container: /fsx/path/to/your/smdistributed-modelparallel.sqsh
Starten eines Trainingsjobs
Nachdem Sie die Abhängigkeiten installiert haben, starten Sie einen Trainingsjob aus dem sagemaker-hyperpod-recipes/launcher_scripts-Verzeichnis. Sie erhalten die Abhängigkeiten, indem Sie das Rezept-Repository klonen: SageMaker HyperPod
Wählen Sie zunächst Ihr Trainingsrezept von Github aus. Der Modellname wird als Teil des Rezepts angegeben. Im folgenden Beispiel verwenden wir das launcher_scripts/llama/run_hf_llama3_8b_seq16k_gpu_p5x16_pretrain.sh-Skript, um ein Llama 8b mit einer Sequenzlänge von 8192, llama/hf_llama3_8b_seq16k_gpu_p5x16_pretrain, und einem Vorab-Trainingsrezept zu starten.
-
IMAGE: Der Container aus dem Abschnitt „Umgebungseinrichtung“. -
(Optional) Sie können das HuggingFace Token bereitstellen, wenn Sie vorab trainierte Gewichtungen von benötigen, HuggingFace indem Sie das folgende Schlüssel-Wert-Paar festlegen:
recipes.model.hf_access_token=<your_hf_token>
#!/bin/bash IMAGE="${YOUR_IMAGE}" SAGEMAKER_TRAINING_LAUNCHER_DIR="${SAGEMAKER_TRAINING_LAUNCHER_DIR:-${PWD}}" TRAIN_DIR="${YOUR_TRAIN_DIR}" # Location of training dataset VAL_DIR="${YOUR_VAL_DIR}" # Location of validation dataset # experiment ouput directory EXP_DIR="${YOUR_EXP_DIR}" HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \ recipes=training/llama/hf_llama3_8b_seq16k_gpu_p5x16_pretrain \ base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \ recipes.run.name="hf_llama3_8b" \ recipes.exp_manager.exp_dir="$EXP_DIR" \ recipes.model.data.train_dir="$TRAIN_DIR" \ recipes.model.data.val_dir="$VAL_DIR" \ container="${IMAGE}" \ +cluster.container_mounts.0="/fsx:/fsx"
Nachdem Sie alle erforderlichen Parameter im Launcher-Skript konfiguriert haben, können Sie das Skript mit dem folgenden Befehl ausführen.
bash launcher_scripts/llama/run_hf_llama3_8b_seq16k_gpu_p5x16_pretrain.sh
Weitere Informationen zur Konfiguration des Slurm-Clusters finden Sie unter Einen Trainingsjob auf HyperPod Slurm ausführen.