

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)
<a name="hyperpod-gpu-slurm-pretrain-tutorial"></a>

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](https://huggingface.co/docs/hub/en/security-tokens).

## HyperPod Configuración del entorno GPU Slurm
<a name="hyperpod-gpu-slurm-environment-setup"></a>

Para iniciar un trabajo de formación en un clúster de HyperPod GPU Slurm, haga lo siguiente:

1. SSH en el nodo principal del clúster de Slurm.

1. 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
   ```

1. 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
   ```

1. Cree un archivo squash con Enroot. Para buscar la versión más reciente del contenedor de SMP, consulte [Notas de publicación de la biblioteca de paralelismo de SageMaker modelos](model-parallel-release-notes.md). Para comprender mejor cómo usar el archivo Enroot, consulte la imagen de [AWS Nemo-Launcher optimizada para compilar](https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/2.nemo-launcher#2-build-aws-optimized-nemo-launcher-image).

   ```
   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>}}"
   ```

1. 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
<a name="hyperpod-gpu-slurm-launch-training-job"></a>

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 ](https://github.com/aws/sagemaker-hyperpod-recipes)

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](cluster-specific-configurations-run-training-job-hyperpod-slurm.md).