

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Tutoriels - Amazon SageMaker HyperPod Checkpointless Peft-LoRa GPT OSS 120b
<a name="sagemaker-eks-checkpointless-recipes-peft"></a>

La séquence d'étapes suivante est requise pour exécuter des recettes d'entraînement sans point de contrôle sur. HyperPod

## Conditions préalables
<a name="sagemaker-eks-checkpointless-recipes-peft-prereqs"></a>

Avant de commencer à configurer votre environnement, assurez-vous d’avoir :
+ [Support Amazon EKS activé sur Amazon SageMaker HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ [Configuration de l'opérateur HyperPod de formation (v1.2\$1)](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator.html)
+ Un emplacement de stockage partagé. Il peut s'agir d'un système de FSx fichiers Amazon ou d'un système NFS accessible depuis les nœuds du cluster.
+ Des données dans l’un des formats suivants :
  + JSON
  + JSONGZ (JSON compressé)
  + ARROW
+ [Choisissez une recette d'entraînement sans point de contrôle compatible pour Llama 70B ou GPT-OSS 120B à partir de la source.](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection)
+ [Téléchargez les poids du modèle Hugging Face](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) et convertissez-le au format compatible avec [Nemo.](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face)
+ Configurez votre environnement

## Configuration de l'environnement Kubernetes
<a name="sagemaker-eks-checkpointless-recipes-peft-kubernetes"></a>

Pour configurer votre environnement Kubernetes, procédez comme suit :

1. Configurez l’environnement virtuel. Assurez-vous que vous utilisez un Python supérieur ou égal à 3,10 et inférieur à 3,14.

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

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

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

1. Connectez-vous à votre cluster Kubernetes.

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

1. Installez les dépendances en utilisant l’une des méthodes suivantes :
   + SageMaker HyperPod méthode des recettes :

     ```
     # 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 avec méthode yaml de travail prédéfinie

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

Vous pouvez désormais lancer la recette d'entraînement sans point de contrôle en utilisant le lanceur de NeMo style -style ou en utilisant kubectl.

## Lancement de la tâche d’entraînement avec le lanceur de recettes
<a name="sagemaker-eks-checkpointless-recipes-peft-recipes-launcher"></a>

Vous pouvez également utiliser les SageMaker HyperPod recettes pour soumettre votre offre de formation. L'utilisation des recettes implique la mise à jour de k8s.yaml, config.yaml et l'exécution du script de lancement.

1. Mettre à jour `launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_lora.sh`

   your\$1contrainer : un conteneur de Deep Learning. Pour trouver la version la plus récente du conteneur de formation Checkpointless, consultez les notes de version de [Checkpointless](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) Training.

   ```
   #!/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. Lancement de la tâche d’entraînement

   ```
   bash launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_lora.sh
   ```

Une fois que vous avez soumis la tâche d’entraînement, vous pouvez utiliser la commande suivante pour vérifier si vous l’avez soumise avec succès.

```
kubectl get pods

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

Si le STATUS est en attente ContainerCreating, ou exécutez la commande suivante pour obtenir plus de détails

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

Une fois que l’élément STATUS de la tâche a pris la valeur Running, vous pouvez examiner le journal à l’aide de la commande suivante.

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

Le STATUS deviendra Terminé lorsque vous exécuterez kubectl get pods

## Lancez la tâche de formation avec kubectl avec yaml prédéfini
<a name="sagemaker-eks-checkpointless-recipes-peft-kubectl"></a>

Une autre option consiste à lancer la formation via kubectl avec un job yaml prédéfini.

1. mettez à jour le fichier examples/gpt\$1oss/launch/peft \$1gpt\$1oss\$1120b\$1checkpointless\$1p5.yaml
   + image : Un conteneur de Deep Learning. Pour trouver la version la plus récente du conteneur de formation Checkpointless, consultez les notes de version de [Checkpointless](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) Training.
   + [resume.restore\$1config.path= : chemin d'accès aux poids des modèles préentraînés téléchargés au format Nemo à l'étape Prérequis.](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-recipes-peft.html#sagemaker-eks-checkpointless-recipes-peft-prereqs) <path\$1to\$1pretrained\$1weights>
   + dataset.dataset\$1path= <path\$1to\$1dataset>: chemin d'accès à l'ensemble de données stocké dans le stockage partagé

1. Soumettez le job en utilisant kubectl avec peft\$1gpt\$1oss\$1120b\$1checkpointless\$1p5.yaml

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

Une fois que vous avez soumis la tâche d’entraînement, vous pouvez utiliser la commande suivante pour vérifier si vous l’avez soumise avec succès.

```
kubectl get pods

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

Si le STATUS est en attente ContainerCreating, ou exécutez la commande suivante pour obtenir plus de détails

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

Une fois que l’élément STATUS de la tâche a pris la valeur Running, vous pouvez examiner le journal à l’aide de la commande suivante.

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

Le STATUS deviendra Terminé lorsque vous exécuterez kubectl get pods