Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
HyperPod Tutorial de preentrenamiento de Slurm Cluster (GPU)
El siguiente tutorial configura el entorno de Slurm y comienza un trabajo de entrenamiento en un modelo de 8000 millones de parámetros de Llama.
Requisitos previos
Antes de configurar el entorno para ejecutar la fórmula, asegúrese de haber hecho lo siguiente:
-
Configura un clúster Slurm de HyperPod GPU.
-
Tu clúster de HyperPod Slurm debe tener activados Nvidia Enroot y Pyxis (están activados de forma predeterminada).
-
-
Una ubicación de almacenamiento compartida. Puede ser un sistema de FSx archivos Amazon 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) Debes obtener un HuggingFace token si utilizas las pesas del modelo HuggingFace para realizar un entrenamiento previo o realizar ajustes. Para obtener más información sobre cómo obtener el token, consulte User access tokens
.
HyperPod Configuración del entorno GPU Slurm
Para iniciar un trabajo de formación en un clúster de HyperPod GPU Slurm, haga lo siguiente:
-
SSH en el nodo principal del clúster de Slurm.
-
Después de iniciar sesión, configure el entorno virtual. Asegúrese de utilizar Python 3.9 o posterior.
#set up a virtual environment python3 -m venv ${PWD}/venv source venv/bin/activate -
Clona las SageMaker HyperPod recetas y los repositorios de SageMaker HyperPod adaptadores en una ubicación de almacenamiento compartida.
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 -
Cree un archivo squash con Enroot. Para buscar la versión más reciente del contenedor de SMP, consulte Notas de la versión de la biblioteca de paralelismo de modelos de SageMaker. Para comprender mejor cómo usar el archivo Enroot, consulte la imagen de AWSNemo-Launcher optimizada para compilar
. 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>" -
Para usar el archivo squash de Enroot para empezar a entrenar, utilice el siguiente ejemplo para modificar el archivo
recipes_collection/config.yaml.container: /fsx/path/to/your/smdistributed-modelparallel.sqsh
Lanzamiento del trabajo de entrenamiento
Tras instalar las dependencias, lance un trabajo de entrenamiento desde el directorio sagemaker-hyperpod-recipes/launcher_scripts. Las dependencias se obtienen clonando el repositorio de recetas: SageMaker HyperPod
En primer lugar, elija su fórmula de entrenamiento en Github; el nombre del modelo se especifica en la fórmula. En el siguiente ejemplo, utilizamos el script launcher_scripts/llama/run_hf_llama3_8b_seq16k_gpu_p5x16_pretrain.sh para lanzar una fórmula de entrenamiento previo de Llama 8b con una longitud de secuencia de 8192: llama/hf_llama3_8b_seq16k_gpu_p5x16_pretrain.
-
IMAGE: es el contenedor de la sección de configuración del entorno. -
(Opcional) Puedes proporcionar el HuggingFace token si necesitas pesos previamente entrenados HuggingFace configurando el siguiente par clave-valor:
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"
Después de configurar todos los parámetros necesarios en el script del lanzador, puede ejecutar el script con el siguiente comando.
bash launcher_scripts/llama/run_hf_llama3_8b_seq16k_gpu_p5x16_pretrain.sh
Para obtener más información acerca de la configuración del clúster de Slurm, consulte ¿Estás realizando un trabajo de formación en HyperPod Slurm.