

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 - Amazon SageMaker HyperPod Checkpointless PEFT-Lora GPT OSS 120b
<a name="sagemaker-eks-checkpointless-recipes-peft"></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-peft-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 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
+ [Elija una receta de entrenamiento sin puntos de control compatible para 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 conviértelo en un formato compatible con 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-recipes-peft-kubernetes"></a>

Para configurar su entorno de Kubernetes, haga lo siguiente:

1. Configure el entorno virtual. Asegúrese de usar Python superior o igual a 3.10 y < 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:
   + SageMaker HyperPod método de 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
     ```
   + 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 style o usando kubectl. NeMo

## Lanzamiento del trabajo de entrenamiento con el lanzador de fórmulas
<a name="sagemaker-eks-checkpointless-recipes-peft-recipes-launcher"></a>

Como alternativa, puedes usar las SageMaker HyperPod recetas 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_lora.sh`.

   your\_contrainer: un contenedor de aprendizaje profundo. [Para encontrar la versión más reciente del contenedor de formación sobre checkpointless, consulte 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_lora \
       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_lora.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 ESTADO pasará a Completado cuando ejecutes kubectl get pods

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

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

1. examples/gpt\_oss/launch/peftactualiza el \_gpt\_oss\_120b\_checkpointless\_p5.yaml
   + 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 modelos de pesas preentrenados en formato Nemo en el paso de requisitos previos.](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-recipes-peft.html#sagemaker-eks-checkpointless-recipes-peft-prereqs) <path\_to\_pretrained\_weights>
   + <path\_to\_dataset>dataset.dataset\_path=: la ruta al conjunto de datos almacenado en el almacenamiento compartido

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

   ```
   kubectl apply -f examples/gpt_oss/launch/peft_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-120b-lora-checkpointless-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