

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.

# Tutorial previo a los trabajos de SageMaker formación de Trainium
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-pretrain-tutorial"></a>

Este tutorial le guía a través del proceso de configuración y ejecución de un trabajo previo a la formación mediante trabajos de formación con instancias de SageMaker Trainium. AWS 
+ Configure su entorno
+ Lanzamiento de un trabajo de entrenamiento

Antes de comenzar, asegúrese de que cumple los siguientes requisitos previos.

**Requisitos previos**  
Antes de configurar el entorno, asegúrese de disponer de:  
Sistema de FSx archivos Amazon o depósito S3 donde puede cargar los datos y generar los artefactos de entrenamiento.
Solicita una cuota de servicio para la `ml.trn1.32xlarge` instancia en Amazon SageMaker AI. Para solicitar un aumento de la cuota de servicio, haga lo siguiente:  
Navegue hasta la consola AWS de Service Quotas.
Elija AWS los servicios.
Selecciona JupyterLab.
Especifique una instancia para `ml.trn1.32xlarge`.
Cree un rol AWS Identity and Access Management (de IAM) con las políticas `AmazonEC2FullAccess` administradas `AmazonSageMakerFullAccess` y las políticas. Estas políticas proporcionan a Amazon SageMaker AI permisos para ejecutar los ejemplos.
Datos en uno de los siguientes formatos:  
JSON
JSONGZ (JSON comprimido)
ARROW
(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, consulte [User access tokens](https://huggingface.co/docs/hub/en/security-tokens).

## Configura tu entorno para los trabajos de entrenamiento de Trainium SageMaker
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-environment-setup"></a>

Antes de realizar un trabajo de SageMaker formación, utilice el `aws configure` comando para configurar sus AWS credenciales y su región preferida. Como alternativa, también puede proporcionar sus credenciales a través de variables de entorno como `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` y `AWS_SESSION_TOKEN`. Para obtener más información, consulte [SageMaker AI Python SDK](https://github.com/aws/sagemaker-python-sdk).

Recomendamos encarecidamente utilizar un cuaderno SageMaker AI Jupyter en SageMaker IA JupyterLab para iniciar un trabajo de SageMaker formación. Para obtener más información, consulte [SageMaker JupyterLab](studio-updated-jl.md).
+ (Opcional) Si utilizas el cuaderno Jupyter en Amazon SageMaker Studio, puedes omitir la ejecución del siguiente comando. Asegúrese de utilizar una versión >= python 3.9

  ```
  # set up a virtual environment
  python3 -m venv ${PWD}/venv
  source venv/bin/activate
  # install dependencies after git clone.
  
  git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git
  cd sagemaker-hyperpod-recipes
  pip3 install -r requirements.txt
  ```
+ Instale SageMaker AI Python SDK

  ```
  pip3 install --upgrade sagemaker
  ```
+ 
  + Si está ejecutando un trabajo de entrenamiento multimodal en Llama 3.2, la versión `transformers` debe ser `4.45.2` o superior.
    + `transformers==4.45.2`Añádelo a `requirements.txt` source\_dir solo cuando utilices el SDK de SageMaker Python para IA.
    + Si utilizas HyperPod recetas para lanzarlas `sm_jobs` como tipo de clúster, no es necesario que especifiques la versión de los transformers.
  + `Container`: El SDK de SageMaker AI Python configura automáticamente el contenedor Neuron.

## Lanzamiento del trabajo de entrenamiento con un cuaderno de Jupyter
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-launch-training-job-notebook"></a>

Puedes usar el siguiente código de Python para ejecutar un trabajo de SageMaker entrenamiento con tu receta. Utiliza el PyTorch estimador del [SDK de SageMaker Python](https://sagemaker.readthedocs.io/en/stable/) para IA para enviar la receta. El siguiente ejemplo lanza la receta llama3-8b como un trabajo de entrenamiento de IA SageMaker .
+ `compiler_cache_url`: es la caché que se utilizará para guardar los artefactos compilados, como un artefacto de Amazon S3.

```
import os
import sagemaker,boto3
from sagemaker.debugger import TensorBoardOutputConfig

from sagemaker.pytorch import PyTorch

sagemaker_session = sagemaker.Session()
role = sagemaker.get_execution_role()

recipe_overrides = {
    "run": {
        "results_dir": "/opt/ml/model",
    },
    "exp_manager": {
        "explicit_log_dir": "/opt/ml/output/tensorboard",
    },
    "data": {
        "train_dir": "/opt/ml/input/data/train",
    },
    "model": {
        "model_config": "/opt/ml/input/data/train/config.json",
    },
    "compiler_cache_url": "{{<compiler_cache_url>}}"
} 

tensorboard_output_config = TensorBoardOutputConfig(
    s3_output_path=os.path.join(output, 'tensorboard'),
    container_local_output_path=overrides["exp_manager"]["explicit_log_dir"]
)

estimator = PyTorch(
    output_path=output_path,
    base_job_name=f"llama-trn",
    role=role,
    instance_type="ml.trn1.32xlarge",
    sagemaker_session=sagemaker_session,
    training_recipe="training/llama/hf_llama3_70b_seq8k_trn1x16_pretrain",
    recipe_overrides=recipe_overrides,
)

estimator.fit(inputs={"train": "your-inputs"}, wait=True)
```

El código anterior crea un objeto PyTorch estimador con la receta de entrenamiento y, a continuación, ajusta el modelo mediante el método. `fit()` Utilice el parámetro `training_recipe` para especificar la receta que desee utilizar para el entrenamiento.

## Lanzamiento del trabajo de entrenamiento con el lanzador de fórmulas
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-launch-training-job-recipes"></a>
+ Actualice `./recipes_collection/cluster/sm_jobs.yaml`.
  + compiler\_cache\_url: es la URL utilizada para guardar los artefactos. Puede ser una URL de Amazon S3.

  ```
  sm_jobs_config:
    output_path: {{<s3_output_path>}}
    wait: True
    tensorboard_config:
      output_path: {{<s3_output_path>}}
      container_logs_path: /opt/ml/output/tensorboard  # Path to logs on the container
    wait: True  # Whether to wait for training job to finish
    inputs:  # Inputs to call fit with. Set either s3 or file_system, not both.
      s3:  # Dictionary of channel names and s3 URIs. For GPUs, use channels for train and validation.
        train: {{<s3_train_data_path>}}
        val: null
    additional_estimator_kwargs:  # All other additional args to pass to estimator. Must be int, float or string.
      max_run: 180000
      image_uri: {{<your_image_uri>}}
      enable_remote_debug: True
      py_version: py39
    recipe_overrides:
      model:
        exp_manager:
          exp_dir: {{<exp_dir>}}
        data:
          train_dir: /opt/ml/input/data/train
          val_dir: /opt/ml/input/data/val
  ```
+ Actualice `./recipes_collection/config.yaml`.

  ```
  defaults:
    - _self_
    - cluster: sm_jobs
    - recipes: training/llama/hf_llama3_8b_seq8k_trn1x4_pretrain
  cluster_type: sm_jobs # bcm, bcp, k8s or sm_jobs. If bcm, k8s or sm_jobs, it must match - cluster above.
  
  instance_type: ml.trn1.32xlarge
  base_results_dir: ~/sm_job/hf_llama3_8B # Location to store the results, checkpoints and logs.
  ```
+ Lance el trabajo con `main.py`.

  ```
  python3 main.py --config-path recipes_collection --config-name config
  ```

Para obtener más información sobre la configuración de los trabajos SageMaker de formación, consulte. [SageMaker tutoriales previos a la formación para trabajos de formación (GPU)](sagemaker-hyperpod-gpu-sagemaker-training-jobs-pretrain-tutorial.md)