Tutorial di preaddestramento sul cluster Trainium Slurm
Il tutorial seguente configura un ambiente Trainium su un cluster Slurm e avvia un job di addestramento su un modello Llama da 8 miliardi di parametri.
Prerequisiti
Prima di iniziare a configurare l’ambiente, assicurati di avere:
-
Un cluster SageMaker HyperPod Trainium Slurm configurato.
-
Una posizione di archiviazione condivisa. Può essere un file system Amazon FSx o un sistema NFS accessibile dai nodi del cluster.
-
I dati in uno dei seguenti formati:
-
JSON
-
JSONGZ (JSON compresso)
-
ARROW
-
-
(Facoltativo) È necessario ottenere un token HuggingFace se utilizzi i pesi del modello di HuggingFace per il preaddestramento o il fine-tuning. Per ulteriori informazioni su come ottenere il token, consulta User access tokens
.
Configurazione dell’ambiente Trainium sul cluster Slurm
Per avviare un job di addestramento su un cluster Slurm, procedi come descritto di seguito:
-
SSH nel nodo head del cluster Slurm.
-
Dopo aver effettuato l’accesso, configura l’ambiente Neuron. Per informazioni sulla configurazione di Neuron, consulta Neuron setup steps
. Ti consigliamo di fare affidamento sulle AMI di deep learning preinstallate con i driver di Neuron, come Ubuntu 20 con DLAMI PyTorch . -
Clona il repository delle ricette SageMaker HyperPod in una posizione di archiviazione condivisa nel cluster. La posizione di archiviazione condivisa può essere un file system Amazon FSx o un sistema NFS accessibile dai nodi del cluster.
git clone --recursive https://github.com/aws/sagemaker-hyperpod-recipes.git cd sagemaker-hyperpod-recipes pip3 install -r requirements.txt -
Segui questo tutorial: HuggingFace Llama3-8B Pretraining
-
Prepara una configurazione del modello. Le configurazioni del modello disponibili nel repository Neuron. Per la configurazione del modello utilizzata in questo tutorial, consulta la configurazione del modello llama3 8b
.
Avvio del job di addestramento in Trainium
Per avviare un job di addestramento in Trainium, specifica una configurazione del cluster e una ricetta Neuron. Ad esempio, per avviare un job di preaddestramento di llama3 8b in Trainium, imposta lo script di avvio launcher_scripts/llama/run_hf_llama3_8b_seq8k_trn1x4_pretrain.sh su quanto segue:
-
MODEL_CONFIG: la configurazione del modello dalla sezione di configurazione dell’ambiente -
(Facoltativo) Se hai bisogno di pesi preaddestrati da HuggingFace, puoi fornire il token HuggingFace impostando la coppia chiave-valore seguente:
recipes.model.hf_access_token=<your_hf_token>
#!/bin/bash #Users should set up their cluster type in /recipes_collection/config.yaml SAGEMAKER_TRAINING_LAUNCHER_DIR=${SAGEMAKER_TRAINING_LAUNCHER_DIR:-"$(pwd)"} COMPILE=0 TRAIN_DIR="${TRAIN_DIR}" # Location of training dataset MODEL_CONFIG="${MODEL_CONFIG}" # Location of config.json for the model HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \ base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \ instance_type="trn1.32xlarge" \ recipes.run.compile="$COMPILE" \ recipes.run.name="hf-llama3-8b" \ recipes.trainer.num_nodes=4 \ recipes=training/llama/hf_llama3_8b_seq8k_trn1x4_pretrain \ recipes.data.train_dir="$TRAIN_DIR" \ recipes.model.model_config="$MODEL_CONFIG"
Per avviare il job di addestramento, utilizza il comando seguente:
bash launcher_scripts/llama/run_hf_llama3_8b_seq8k_trn1x4_pretrain.sh
Per ulteriori informazioni sulla configurazione del cluster Slurm, consulta Esecuzione di un job di addestramento in HyperPod Slurm.