Démarrage d’une tâche d’entraînement à l’aide de la CLI HyperPod
La CLI SageMaker HyperPod est un outil d’interface de ligne de commande qui permet de gérer les clusters Amazon SageMaker HyperPod. Vous pouvez l’utiliser pour créer, configurer et surveiller des clusters HyperPod pour les charges de travail de machine learning. Pour plus d’informations, consultez le référentiel GitHub sagemaker-hyperpod-cli
Prérequis
-
Installation de la CLI HyperPod Pour personnaliser Amazon Nova sur Amazon SageMaker HyperPod, vous devez consulter la branche
release_v2afin d’utiliser la CLI SageMaker HyperPod. -
Vérifiez que le compartiment de sortie Nova existe avant de soumettre des tâches. Pour vérifier, exécutez
aws s3 ls s3://nova-111122223333/.Le nom du compartiment est la valeur que vous avez spécifiée pour
recipes.run.output_s3_pathdans la formule. Ce compartiment de sortie stocke un fichier manifeste généré après l’entraînement, qui contient les chemins S3 vers les artefacts de sortie stockés dans le compartiment Amazon S3 géré par le service. En outre, il peut éventuellement stocker des fichiers TensorBoard ou des résultats d’évaluation. -
Compréhension des exigences de synchronisation des données Amazon FSx Amazon FSx a besoin de temps pour synchroniser les données d’entraînement Amazon S3 avant que les tâches puissent être exécutées.
Configuration de la CLI HyperPod pour la personnalisation d’Amazon Nova
Afin de configurer la CLI HyperPod pour la personnalisation d’Amazon Nova, suivez ces étapes.
-
Clonez le référentiel GitHub sagemaker-hyperpod-cli
avec la branche release_v2.git clone --recurse-submodules https://github.com/aws/sagemaker-hyperpod-cli.git --branch release_v2 -
Accédez au dossier
sagemaker-hyperpod-cli.cd sagemaker-hyperpod-cli -
Vérifiez que vous disposez de tous les prérequis dans Prérequis
. -
Pour configurer Helm, procédez comme suit.
-
Pour télécharger le script d’installation Helm, exécutez :
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 -
Pour rendre le script exécutable, exécutez :
chmod 700 get_helm.shCette commande change les autorisations pour rendre le script exécutable.
-
Pour exécuter le script d’installation Helm, exécutez :
./get_helm.sh -
Pour supprimer le script d’installation, exécutez :
rm -f ./get_helm.sh
-
-
Pour installer les dépendances HyperPod compatibles avec les groupes d’instances restreints (RIG), procédez comme suit.
Note
Avant d’installer les dépendances, vous devez disposer d’un cluster HyperPod EKS avec un RIG. Si vous ne disposez pas encore d’un compte, suivez ces instructions pour en créer un.
-
Pour vous connecter à votre cluster HyperPod EKS, exécutez :
aws eks update-kubeconfig --name <eks_cluster_name> --region us-east-1 -
Pour vérifier la connexion à votre cluster HyperPod EKS, exécutez :
kubectl config current-context -
Pour obtenir des mises à jour pour les dépendances HyperPod standard, exécutez :
helm dependencies update helm_chart/HyperPodHelmChart -
Pour installer les dépendances HyperPod standard, exécutez :
helm install dependencies helm_chart/HyperPodHelmChart --namespace kube-system -
Pour accéder au répertoire des Charts de Helm, exécutez :
cd helm_chart -
Pour installer les dépendances HyperPod spécifiques au RIG, exécutez la commande suivante.
Note
Avant d’installer les dépendances, tenez compte des éléments suivants :
-
Vous ne devez exécuter cette commande qu’une seule fois par cluster après sa création.
-
Vous devez vous assurer qu’au moins la version 4 (v4) de l’utilitaire yq est installée. Une vérification intégrée permettant de confirmer que yq >=4 est disponible dans le script d’installation.
-
Vous devez confirmer l’installation en entrant
ylorsque vous y êtes invité. Facultatif : avant de confirmer, consultez ici l’installation prévue :./rig-dependencies.yaml.
chmod 700 ./install_rig_dependencies.sh && ./install_rig_dependencies.sh -
-
Pour revenir à la racine du référentiel
codesagemaker-hyperpod-cli, exécutez :cd ..
-
-
Pour procéder à l’installation de la CLI HyperPod dans
sagemaker-hyperpod-cli, procédez comme suit.-
Désinstallez la CLI à l’aide de pip :
pip install -e . Vérifier l'installation :
hyperpod --help
-
Envoi d’une tâche
Vous pouvez utiliser la CLI HyperPod pour soumettre une tâche d’entraînement.
Pour soumettre une tâche à l’aide d’une formule, exécutez la commande suivante.
hyperpod start-job [--namespace <namespace>] --recipe {{fine-tuning | evaluation | training}}/nova/<Your_Recipe_Name> --override-parameters \ '{ "instance_type":"p5d.48xlarge", "container": <Docker Image>, "recipes.run.name": <custom-run-name>, "recipes.run.output_s3_path": "<customer-s3-path>" }'
-
--recipe: le type de tâche que vous exécutez à l’aide de la formule. Les valeurs valides sont:fine-tuning|evaluation|training.Type de tâche Valeur Tâches SFT/PEFT/PPO/DPO fine-tuningTâches d’évaluation evaluationTâches CPT training -
Nom de la formule : vous pouvez trouver ce nom dans le répertoire
/src/hyperpod_cli/sagemaker_hyperpod_recipes/recipe_collection/recipes/du référentiel. -
Exemple de formule :
--recipe evaluation/nova/nova_lite_g5_12xl_bring_your_own_dataset_eval. -
Conteneur : ce champ est obligatoire. Pour rechercher les images correspondant aux types de tâche, consultez le tableau suivant.
Technique Conteneur DPO 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-DPO-latest Tâches d’évaluation 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest CPT 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:HP-CPT-latest PPO 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SMHP-PPO-TRAIN-latest SFT/PEFT 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-latest -
Nom d’exécution personnalisé : il existe des contraintes de définition sur l’entrée
custom-run-time. Par exemple, pas de majuscules, pas d’espaces, pas de traits de soulignement. Pour plus d’informations, consultez Noms et ID d’objet.
[Facultatif] Si vous disposez déjà d’une tâche d’entraînement et que vous souhaitez cibler un nœud spécifique pour votre prochaine tâche, procédez comme suit.
-
Pour obtenir tous les nœuds libres, exécutez la commande suivante.
kubectl get nodes —no-headers | awk '$2 != "NotReady" && $3 != "SchedulingDisabled" {print $1}' -
Ajoutez ce qui suit au fichier
src\hyperpod_cli\sagemaker_hyperpod_recipes\recipes_collection\cluster\k8s.yamlpour le sélecteur d’étiquettes.label_selector: required: kubernetes.io/hostname: - <node_name> -
Dans le répertoire racine, exécutez la commande suivante. Cela garantit que SageMaker HyperPod est installé sur le système de l’utilisateur, ce qui lui permet d’utiliser le mot clé « hyperpod » pour la soumission de tâches et d’autres fonctions. Vous devez exécuter cette commande depuis le dossier racine, où se trouve le code de la CLI HyperPod.
pip install .
Affichage des tâches
Pour répertorier les tâches, exécutez la commande suivante.
hyperpod list-jobs [--namespace <namespace>] [--all-namespaces]
La commande répertorie toutes les tâches dans l’espace de noms spécifié ou dans tous les espaces de noms.
Obtention des informations d’une tâche
Pour obtenir les informations d’une tâche, exécutez la commande suivante.
hyperpod get-job --job-name <job-name> [--namespace <namespace>] [--verbose]
La commande extrait les informations détaillées d’une tâche spécifique.
Affichage des pods
Pour répertorier les pods, exécutez la commande suivante.
hyperpod list-pods --job-name <job-name> [--namespace <namespace>]
La commande répertorie tous les pods associés à une tâche spécifique dans l’espace de noms spécifié.
Annulation de tâches
Pour supprimer une tâche, exécutez la commande suivante.
hyperpod cancel-job --job-name <job-name> [--namespace <namespace>]
Cette commande annule et supprime une tâche d’entraînement en cours dans l’espace de noms spécifié.