Tutoriels - Amazon SageMaker HyperPod Checkpointless Peft-LoRa GPT OSS 120b - Amazon SageMaker AI

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

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

Avant de commencer à configurer votre environnement, assurez-vous d’avoir :

Configuration de l'environnement Kubernetes

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
  2. Configurer kubectl et eksctl

  3. Installez Helm

  4. Connectez-vous à votre cluster Kubernetes.

    aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
  5. 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

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_contrainer : 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 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 \
  2. 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

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

  1. mettez à jour le fichier examples/gpt_oss/launch/peft _gpt_oss_120b_checkpointless_p5.yaml

  2. Soumettez le job en utilisant kubectl avec peft_gpt_oss_120b_checkpointless_p5.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