

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.

# SageMaker tutoriales previos a la formación para trabajos de formación (GPU)
<a name="sagemaker-hyperpod-gpu-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 SageMaker formación con instancias de GPU.
+ Configure su entorno
+ Lanza un trabajo de formación con recetas SageMaker HyperPod 

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 un depósito de Amazon S3 donde puede cargar los datos y generar los artefactos de entrenamiento.
Solicitó una cuota de servicio para 1 ml.p4d.24xlarge y 1 ml.p5.48xlarge en Amazon AI. SageMaker Para solicitar un aumento de la cuota de servicio, haga lo siguiente:  
En la consola AWS Service Quotas, vaya a AWS los servicios,
Elige **Amazon SageMaker AI**.
Elija una instancia de ml.p4d.24xlarge y una instancia de ml.p5.48xlarge.
Cree un rol AWS Identity and Access Management(de IAM) con las siguientes políticas administradas para conceder a la SageMaker IA los permisos necesarios para ejecutar los ejemplos.  
AmazonSageMakerFullAccess
Amazon EC2 FullAccess
Datos en uno de los siguientes formatos:  
JSON
JSONGZ (JSON comprimido)
ARROW
(Opcional) Debes obtener una HuggingFace ficha si utilizas las pesas del modelo para el entrenamiento previo o HuggingFace para ajustarlas con precisión. Para obtener más información sobre cómo obtener el token, consulte [User access tokens](https://huggingface.co/docs/hub/en/security-tokens).

## Configuración del entorno de trabajos de SageMaker entrenamiento con GPU
<a name="sagemaker-hyperpod-gpu-sagemaker-training-jobs-environment-setup"></a>

Antes de ejecutar un trabajo de SageMaker formación, configure sus AWS credenciales y su región preferida ejecutando el `aws configure` comando. Como alternativa al comando configure, 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 SageMaker cuaderno Jupyter de 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) Configure el entorno virtual y las dependencias. Si utilizas una libreta Jupyter en Amazon SageMaker Studio, puedes saltarte este paso. Asegúrese de utilizar Python 3.9 o posterior.

  ```
  # 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
  # Set the aws region.
  
  aws configure set <your_region>
  ```
+ Instale SageMaker AI Python SDK

  ```
  pip3 install --upgrade sagemaker
  ```
+ `Container`: el SDK de Python para SageMaker IA configura automáticamente el contenedor de GPU. También puede proporcionar su propio contenedor.
**nota**  
Si está ejecutando un trabajo de entrenamiento multimodal en Llama 3.2, la versión de `transformers` debe ser `4.45.2 ` o superior.

  `transformers==4.45.2``requirements.txt`Añádelo `source_dir` solo cuando utilices el SDK de Python para SageMaker IA. Por ejemplo, agréguelo si lo está utilizando en un cuaderno de IA. SageMaker JupyterLab

  Si está utilizando HyperPod recetas para iniciar con el tipo de clúster`sm_jobs`, esto se realizará automáticamente.

## Lanzamiento del trabajo de entrenamiento con un cuaderno de Jupyter
<a name="sagemaker-hyperpod-gpu-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. En el siguiente ejemplo, se lanza la receta llama3-8b en la plataforma AI Training. SageMaker 

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

from sagemaker.pytorch import PyTorch

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

bucket = sagemaker_session.default_bucket() 
output = os.path.join(f"s3://{bucket}", "output")
output_path = "<s3-URI>"

overrides = {
    "run": {
        "results_dir": "/opt/ml/model",
    },
    "exp_manager": {
        "exp_dir": "",
        "explicit_log_dir": "/opt/ml/output/tensorboard",
        "checkpoint_dir": "/opt/ml/checkpoints",
    },   
    "model": {
        "data": {
            "train_dir": "/opt/ml/input/data/train",
            "val_dir": "/opt/ml/input/data/val",
        },
    },
}

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-recipe",
    role=role,
    instance_type="ml.p5.48xlarge",
    training_recipe="training/llama/hf_llama3_8b_seq8k_gpu_p5x16_pretrain",
    recipe_overrides=recipe_overrides,
    sagemaker_session=sagemaker_session,
    tensorboard_output_config=tensorboard_output_config,
)

estimator.fit(inputs={"train": "s3 or fsx input", "val": "s3 or fsx input"}, 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\$1recipe para especificar la receta que desee utilizar para el entrenamiento.

**nota**  
Si está ejecutando un trabajo de entrenamiento multimodal en Llama 3.2, la versión de transformers debe ser 4.45.2 o superior.

`transformers==4.45.2`Añádelo `requirements.txt` `source_dir` solo cuando utilices el SDK de Python para SageMaker IA directamente. Por ejemplo, debe añadir la versión al archivo de texto cuando utilice un cuaderno de Jupyter.

Al implementar el punto final para un trabajo de SageMaker formación, debe especificar el URI de la imagen que está utilizando. Si no proporciona la URI de la imagen, el estimador utilizará la imagen de entrenamiento para la implementación. Las imágenes de entrenamiento que se SageMaker HyperPod proporcionan no contienen las dependencias necesarias para la inferencia y el despliegue. En el siguiente ejemplo se muestra cómo se puede utilizar una imagen de inferencia para la implementación:

```
from sagemaker import image_uris
container=image_uris.retrieve(framework='pytorch',region='us-west-2',version='2.0',py_version='py310',image_scope='inference', instance_type='ml.p4d.24xlarge')
predictor = estimator.deploy(initial_instance_count=1,instance_type='ml.p4d.24xlarge',image_uri=container)
```

**nota**  
Para ejecutar el código anterior en una instancia de portátil de Sagemaker, es posible que se necesiten más de los 5 GB de almacenamiento predeterminados que proporciona la IA. SageMaker JupyterLab Si tiene problemas por falta de espacio, cree una nueva instancia de cuaderno en la que debe utilizar una instancia de cuaderno diferente y aumente el almacenamiento del cuaderno.

## Lanzamiento del trabajo de entrenamiento con el lanzador de fórmulas
<a name="sagemaker-hyperpod-gpu-sagemaker-training-jobs-launch-training-job-recipes"></a>

Actualice el archivo `./recipes_collection/cluster/sm_jobs.yaml` para que tenga el siguiente aspecto:

```
sm_jobs_config:
  output_path: <s3_output_path>
  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
    enable_remote_debug: True
  recipe_overrides:
    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>"
```

Actualice `./recipes_collection/config.yaml` para que especifique `sm_jobs` en `cluster` y `cluster_type`.

```
defaults:
  - _self_
  - cluster: sm_jobs  # set to `slurm`, `k8s` or `sm_jobs`, depending on the desired cluster
  - 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.
```

Lance el trabajo con el siguiente comando.

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

Para obtener más información sobre la configuración de los trabajos de SageMaker formación, consulte Ejecutar un trabajo de formación en los trabajos de SageMaker formación.