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 Peft-LoRa (GPU) del clúster Slurm
El siguiente tutorial configura el entorno de Slurm e inicia un trabajo de ajuste preciso con eficiencia de parámetros (PEFT) en un modelo de 8 mil millones de parámetros de Llama.
Requisitos previos
Antes de empezar a configurar el entorno, asegúrese de tener:
-
Configure el clúster HyperPod GPU Slurm
-
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)
-
FLECHA
-
-
(Opcional) Si necesitas las pesas previamente entrenadas HuggingFace o si estás entrenando un modelo Llama 3.2, debes obtener la HuggingFace ficha antes de empezar a entrenar. Para obtener más información sobre cómo obtener el token, consulta Tokens de acceso de usuario
.
Configura el entorno HyperPod GPU Slurm
Para iniciar un trabajo de formación en un clúster de Slurm, haga lo siguiente:
-
Utilice SSH en el nodo principal de su clúster de Slurm.
-
Después de iniciar sesión, configure el entorno virtual. Asegúrese de utilizar Python 3.9 o superior.
#set up a virtual environment python3 -m venv ${PWD}/venv source venv/bin/activate
-
Clona los repositorios de SageMaker HyperPod recetas y SageMaker HyperPod adaptadores en una ubicación de almacenamiento compartida. La ubicación de almacenamiento compartido puede ser un sistema de FSx archivos Amazon o un sistema NFS al que se pueda acceder desde los nodos del clúster.
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 encontrar la versión más reciente del contenedor SMP, consulte. Notas de publicación de la biblioteca de paralelismo de SageMaker modelos Para obtener más información sobre el uso del archivo Enroot, consulte la imagen de AWS Nemo-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 utilizar 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
Inicie el trabajo de formación
Para lanzar un trabajo de PEFT para el modelo de 8 mil millones de parámetros de Llama con una longitud de secuencia de 8192 en un único nodo de cómputo de Slurm, defina el siguiente script de lanzamiento: launcher_scripts/llama/run_hf_llama3_8b_seq8k_gpu_lora.sh
-
IMAGE
: El contenedor de la sección de configuración del entorno. -
HF_MODEL_NAME_OR_PATH
: Defina el nombre o la ruta de las pesas previamente entrenadas en el parámetro hf_model_name_or_path de la receta. -
(Opcional) Puedes proporcionar el HuggingFace token si necesitas pesas previamente entrenadas configurando el siguiente par clave-valor: HuggingFace
recipes.model.hf_access_token=${
HF_ACCESS_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 output directory EXP_DIR="${
YOUR_EXP_DIR
}" HF_ACCESS_TOKEN="${YOUR_HF_TOKEN
}" HF_MODEL_NAME_OR_PATH="${YOUR_HF_MODEL_NAME_OR_PATH
}" # Add hf_model_name_or_path and turn off synthetic_data HYDRA_FULL_ERROR=1 python3 ${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py \ recipes=fine-tuning/llama/hf_llama3_8b_seq8k_gpu_lora \ base_results_dir=${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results \ recipes.run.name="hf_llama3_lora" \ recipes.exp_manager.exp_dir="$EXP_DIR" \ recipes.model.data.train_dir="$TRAIN_DIR" \ recipes.model.data.val_dir="$VAL_DIR" \ recipes.model.hf_model_name_or_path="$HF_MODEL_NAME_OR_PATH" \ container="${IMAGE}" \ +cluster.container_mounts.0="/fsx:/fsx" \ recipes.model.hf_access_token="${HF_ACCESS_TOKEN}"
Tras configurar todos los parámetros necesarios en el script anterior, puede iniciar el trabajo de entrenamiento ejecutándolo.
bash launcher_scripts/llama/run_hf_llama3_8b_seq8k_gpu_lora.sh
Para obtener más información sobre la configuración del clúster de Slurm, consulte. Realice un trabajo de formación en HyperPod Slurm