

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.

# Tutoriales - Optimización completa del GPT OSS 120b de Amazon SageMaker HyperPod Checkpointless
<a name="sagemaker-eks-checkpointless-recipes-finetune"></a>

Se requiere la siguiente secuencia de pasos para ejecutar recetas de entrenamiento sin puntos de control. HyperPod

## Requisitos previos
<a name="sagemaker-eks-checkpointless-recipes-finetune-prereqs"></a>

Antes de configurar el entorno, asegúrese de disponer de:
+ [Se habilitó el soporte de Amazon EKS en Amazon SageMaker HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ [Configure el operador HyperPod de entrenamiento (v1.2\+)](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator.html)
+ Una ubicación de almacenamiento compartida. Puede ser un sistema de archivos de Amazon FSx 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
+ [Elige una receta de entrenamiento sin puntos de control compatible para el Llama 70B o GPT-OSS 120B de la fuente.](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection)
+ [Descarga el modelo Hugging Face con pesas](https://huggingface.co/docs/hub/models-downloading) [y el formato compatible con Covert to Nemo.](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face)
+ Configure su entorno

## Configuración del entorno de Kubernetes
<a name="sagemaker-eks-checkpointless-finetune-recipes-kubernetes"></a>

Para configurar su entorno de Kubernetes, haga lo siguiente:

1. Configure el entorno virtual. Asegúrese de que su versión de Python sea superior o igual a la 3.10 e inferior a la 3.14.

   ```
   python3 -m venv ${PWD}/venv
   source venv/bin/activate
   ```

1. [Configura kubectl y eksctl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)

1. [Instala Helm](https://helm.sh/docs/intro/install/)

1. Conéctese con su clúster de Kubernetes.

   ```
   aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
   ```

1. Instale las dependencias siguiendo uno de estos métodos:

   1. Método 1: método de SageMaker HyperPod recetas:

      ```
      # install SageMaker HyperPod Recipes.
      git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git
      cd sagemaker-hyperpod-recipes
      pip3 install -r requirements.txt
      ```

   1. Método 2: kubectl con el método job yaml predefinido

      ```
      # install SageMaker HyperPod checkpointless training.
      git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git
      cd sagemaker-hyperpod-checkpointless-training
      ```

Ahora puedes lanzar la receta de entrenamiento sin puntos de control usando el lanzador o usando kubectl. NeMo-style 

## Lanza trabajos de formación con el lanzador de recetas
<a name="sagemaker-eks-checkpointless-recipes-finetune-launcher"></a>

Puedes usar las SageMaker HyperPod recetas de Amazon para enviar tu trabajo de formación. El uso de las recetas implica actualizar k8s.yaml, config.yaml y ejecutar el script de lanzamiento.

1. Actualice `launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_full_fine_tuning.sh`.

   your\_container: un contenedor de aprendizaje profundo. Para encontrar la versión más reciente del contenedor de formación sobre checkpointless, consulta las notas de la versión de formación sobre [checkpointless](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html).

   ```
   #!/bin/bash
   
   SAGEMAKER_TRAINING_LAUNCHER_DIR=${SAGEMAKER_TRAINING_LAUNCHER_DIR:-"$(pwd)"}
   TRAIN_DIR="${TRAIN_DIR}"
   VAL_DIR="${VAL_DIR}"
   EXP_DIR="${EXP_DIR}"
   LOG_DIR="${LOG_DIR}"
   CONTAINER_MOUNT="/data"
   CONTAINER="${CONTAINER}"
   MODEL_NAME_OR_PATH="${MODEL_NAME_OR_PATH}"
   
   HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \
       recipes=fine-tuning/gpt_oss/checkpointless_gpt_oss_120b_full_fine_tuning \
       recipes.dataset.dataset_path="${TRAIN_DIR}" \
       recipes.exp_manager.exp_dir="${EXP_DIR}" \
       recipes.log_dir="${LOG_DIR}" \
       recipes.resume.restore_config.path="${MODEL_NAME_OR_PATH}" \
       base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \
       git.use_default=false \
       cluster=k8s \
       cluster_type=k8s \
       container="${CONTAINER}" \
       +cluster.hostNetwork=true \
       +cluster.persistent_volume_claims.0.claimName=fsx-claim \
       +cluster.persistent_volume_claims.0.mountPath="${CONTAINER_MOUNT}" \
       +recipes.dataset.val_dataset_path="${VAL_DIR}" \
       ++recipes.callbacks.3.test_fault_config.fault_prob_between_lock=1 \
   ```

1. Lanzamiento del trabajo de entrenamiento

   ```
   bash launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_full_fine_tuning.sh
   ```

Después de enviar el trabajo de entrenamiento, puede usar el siguiente comando para comprobar si lo ha enviado correctamente.

```
kubectl get pods

NAME                             READY   STATUS             RESTARTS        AGE
gpt-oss-120b-worker-0             0/1    running               0            36s
```

Si el estado es PENDIENTE o ContainerCreating, ejecute el siguiente comando para obtener más información

```
kubectl describe pod <name of pod>
```

Cuando el STATUS del trabajo cambie a Running, podrá examinar el registro con el siguiente comando.

```
kubectl logs <name of pod>
```

El `STATUS` pasará a `COMPLETED` cuando ejecute `kubectl get pods`.

## Lanza el trabajo de entrenamiento con kubectl con yaml predefinido
<a name="sagemaker-eks-checkpointless-recipes-finetune-kubectl"></a>

Otra opción es iniciar la formación a través de kubectl con un trabajo predefinido, yaml.

1.  examples/gpt\_ossactualice el archivo//.yaml launch/full\_finetune\_gpt\_oss\_120b\_checkpointless\_p5
   + imagen: Un contenedor de aprendizaje profundo. Para encontrar la versión más reciente del contenedor de formación sobre checkpointless, consulta las notas de la versión de formación sobre [checkpointless](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html).
   + [resume.restore\_config.path=: la ruta para descargar las pesas de modelos previamente entrenadas en formato Nemo en el paso de requisitos previos.](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-recipes-finetune.html#sagemaker-eks-checkpointless-recipes-finetune-prereqs) <path\_to\_pretrained\_weights>
   + dataset.dataset\_path=<path\_to\_dataset>: la ruta al conjunto de datos almacenado en el almacenamiento compartido

1. Envía el trabajo mediante kubectl con full\_finetune\_gpt\_oss\_120b\_checkpointless\_p5.yaml

   ```
   kubectl apply -f examples/gpt_oss/launch/full_finetune_gpt_oss_120b_checkpointless_p5.yaml
   ```

Después de enviar el trabajo de entrenamiento, puede usar el siguiente comando para comprobar si lo ha enviado correctamente.

```
kubectl get pods

NAME                             READY   STATUS             RESTARTS        AGE
gpt-oss-120b-worker-0             0/1    running               0            36s
```

Si el ESTADO es PENDIENTE o, ejecuta el siguiente comando para obtener más detalles ContainerCreating

```
kubectl describe pod <name of pod>
```

Cuando el STATUS del trabajo cambie a Running, podrá examinar el registro con el siguiente comando.

```
kubectl logs <name of pod>
```

El ESTADO pasará a Completado cuando ejecutes kubectl get pods