Tutorial di preaddestramento sul cluster Trainium Slurm - Amazon SageMaker AI

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.