Tutorial de entrenamiento previo del clúster Trainium de Slurm
En el siguiente tutorial se muestra cómo configurar el entorno de Trainium en un clúster de Slurm y lanzar un trabajo de entrenamiento en un modelo de 8000 millones de parámetros de Llama.
Requisitos previos
Antes de configurar el entorno, asegúrese de disponer de:
-
Configure un clúster de SageMaker HyperPod Trainium Slurm.
-
Una ubicación de almacenamiento compartida. Puede ser un sistema de archivos de Amazon FSx o un sistema NFS al que se pueda acceder desde los nodos del clúster.
-
Datos en uno de los siguientes formatos:
-
JSON
-
JSONGZ (JSON comprimido)
-
ARROW
-
-
(Opcional) Debe obtener un token de HuggingFace si utiliza las ponderaciones de modelos de HuggingFace para el entrenamiento previo o el refinamiento. Para obtener más información sobre cómo obtener el token, consulte User access tokens
.
Configuración del entorno de Trainium en el clúster de Slurm
Para iniciar un trabajo de entrenamiento en un clúster de Slurm, haga lo siguiente:
-
SSH en el nodo principal del clúster de Slurm.
-
Después de iniciar sesión, configure el entorno de Neuron. Para obtener más información sobre la configuración de Neuron, consulte los pasos de configuración de Neuron
. Recomendamos que confíe en las AMI de aprendizaje profundo preinstaladas con los controladores de Neuron, como Ubuntu 20 con DLAMI Pytorch . -
Clone el repositorio de fórmulas de SageMaker HyperPod en una ubicación de almacenamiento compartida en el clúster. La ubicación de almacenamiento compartido puede ser un sistema de archivos de Amazon FSx o un sistema NFS al que se pueda acceder desde los nodos del clúster.
git clone --recursive https://github.com/aws/sagemaker-hyperpod-recipes.git cd sagemaker-hyperpod-recipes pip3 install -r requirements.txt -
Siga los pasos de este tutorial: HuggingFace Llama3-8B Pretraining
-
Prepare la configuración de un modelo. Las configuraciones de modelos están disponibles en el repositorio de Neuron. Para ver la configuración del modelo utilizada en este tutorial, consulte llama3 8b model config
.
Lanzamiento del trabajo de entrenamiento en Trainium
Para iniciar un trabajo de entrenamiento en Trainium, especifique una configuración de clúster y una fórmula de Neuron. Por ejemplo, para lanzar un trabajo de entrenamiento previo de llama3 8b en Trainium, defina el script de lanzamiento, launcher_scripts/llama/run_hf_llama3_8b_seq8k_trn1x4_pretrain.sh, de la siguiente manera:
-
MODEL_CONFIG: es el modelo de configuración de la sección de configuración del entorno. -
(Opcional) Puede proporcionar el token de HuggingFace si necesita ponderaciones entrenadas previamente de HuggingFace al configurar el siguiente par clave-valor:
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"
Para iniciar el trabajo de entrenamiento, ejecute el siguiente comando:
bash launcher_scripts/llama/run_hf_llama3_8b_seq8k_trn1x4_pretrain.sh
Para obtener más información acerca de la configuración del clúster de Slurm, consulte Ejecución de un trabajo de entrenamiento en HyperPod Slurm.