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 :
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
Téléchargez les poids du modèle Hugging Face et convertissez-le 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 vous utilisez un Python supérieur ou égal à 3,10 et inférieur à 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 :
-
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.
-
Mettre à jour
launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_lora.shyour_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 \ -
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.
-
mettez à jour le fichier examples/gpt_oss/launch/peft _gpt_oss_120b_checkpointless_p5.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 Training.
resume.restore_config.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. <path_to_pretrained_weights>
dataset.dataset_path= <path_to_dataset>: chemin d'accès à l'ensemble de données stocké dans le stockage partagé
-
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