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 Full Finetuning GPT OSS 120b
La séquence d'étapes suivante est requise pour exécuter des recettes d'entraînement sans point de contrôle. HyperPod
Conditions préalables
Avant de commencer à configurer votre environnement, assurez-vous d’avoir :
Prise en charge d'Amazon EKS activée sur Amazon SageMaker HyperPod
Un emplacement de stockage partagé. Il peut s’agir d’un système de fichiers Amazon FSx 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 prise en charge pour Llama 70B ou GPT-OSS 120B à la source. https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection
Téléchargez les poids du modèle Hugging Face
et passez-les au format compatible avec Nemo. Configurez votre environnement
Configuration de l'environnement Kubernetes
Pour configurer votre environnement Kubernetes, procédez comme suit :
-
Configurez l’environnement virtuel. Assurez-vous que votre version de Python est supérieure ou égale à 3.10 et inférieure à 3.14.
python3 -m venv ${PWD}/venv source venv/bin/activate -
Connectez-vous à votre cluster Kubernetes.
aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}" -
Installez les dépendances en utilisant l’une des méthodes suivantes :
-
Méthode 1 : méthode SageMaker HyperPod 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 -
Méthode 2 : kubectl avec méthode job yaml 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 à l'aide du NeMo-style lanceur ou de kubectl.
Lancez des tâches de formation avec le lanceur de recettes
Vous pouvez utiliser les SageMaker HyperPod recettes Amazon 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.
-
Mettre à jour
launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_full_fine_tuning.shyour_container : un conteneur Deep Learning. Pour trouver la version la plus récente du conteneur de formation Checkpointless, consultez les notes de publication 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_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 \ -
Lancement de la tâche d’entraînement
bash launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_full_fine_tuning.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 STATUT est en ATTENTE ContainerCreating, 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>
STATUS devient COMPLETED lorsque vous exécutez kubectl get pods.
Lancer 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.
-
mettre à jour le examples/gpt_oss/launch/full_finetune_gpt_oss_120b_checkpointless_p5.yaml
image : Un conteneur Deep Learning. Pour trouver la version la plus récente du conteneur de formation Checkpointless, consultez les notes de publication de Checkpointless Training.
resume.restore_config.path= <path_to_pretrained_weights>: le chemin vers les 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-finetune.html#sagemaker-eks-checkpointless-recipes-finetune-prereqs
dataset.dataset_path= <path_to_dataset>: chemin d'accès à l'ensemble de données stocké dans le stockage partagé
-
Soumettez la tâche à l'aide de kubectl avec full_finetune_gpt_oss_120b_checkpointless_p5.yaml
kubectl apply -f examples/gpt_oss/launch/full_finetune_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-oss-120b-worker-0 0/1 running 0 36s
Si le STATUT est en ATTENTE ContainerCreating, 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 lancerez kubectl get pods