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.
Guide des commandes Amazon SageMaker HyperPod Essential
Amazon SageMaker HyperPod fournit de nombreuses fonctionnalités de ligne de commande pour gérer les flux de formation. Ce guide couvre les commandes essentielles pour les opérations courantes, de la connexion à votre cluster au suivi de l'avancement des tâches.
Conditions préalables
Avant d'utiliser ces commandes, assurez-vous d'avoir effectué la configuration suivante :
-
SageMaker HyperPod cluster avec RIG créé (généralement dans us-east-1)
-
Compartiment Amazon S3 de sortie créé pour les artefacts de formation
-
Rôles IAM configurés avec les autorisations appropriées
-
Données d'entraînement téléchargées au format JSONL correct
-
Synchronisation FSx pour Lustre terminée (vérification dans les journaux du cluster lors de la première tâche)
Rubriques
Installation de la CLI de recette
Accédez à la racine de votre référentiel de recettes avant d'exécuter la commande d'installation.
Utilisez le référentiel Hyperpodrerecipes si vous utilisez des techniques de personnalisation non Forge. Pour la personnalisation basée sur Forge, reportez-vous au référentiel de recettes spécifique à la forge.
Exécutez les commandes suivantes pour installer la SageMaker HyperPod CLI :
Note
Assurez-vous que vous n'êtes pas dans un environnement conda/anaconda/miniconda actif ou dans un autre environnement virtuel
Si c'est le cas, veuillez quitter l'environnement en utilisant :
-
conda deactivatepour les environnements conda/anaconda/miniconda -
deactivatepour les environnements virtuels Python
Si vous utilisez une technique de personnalisation non Forge, téléchargez les recettes Sagemaker-Hyperpod-Recipes comme indiqué ci-dessous :
git clone -b release_v2 https://github.com/aws/sagemaker-hyperpod-cli.git cd sagemaker-hyperpod-cli pip install -e . cd .. root_dir=$(pwd) export PYTHONPATH=${root_dir}/sagemaker-hyperpod-cli/src/hyperpod_cli/sagemaker_hyperpod_recipes/launcher/nemo/nemo_framework_launcher/launcher_scripts:$PYTHONPATH curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh rm -f ./get_helm.sh
Si vous êtes abonné à Forge, vous devriez télécharger les recettes en suivant le processus indiqué ci-dessous.
mkdir NovaForgeHyperpodCLI cd NovaForgeHyperpodCLI aws s3 cp s3://nova-forge-c7363-206080352451-us-east-1/v1/ ./ --recursive pip install -e . curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh rm -f ./get_helm.sh
Astuce
Pour utiliser un nouvel environnement virtuel pip install -e ., exécutez :
-
python -m venv nova_forge -
source nova_forge/bin/activate -
Votre ligne de commande s'affiche désormais (nova_forge) au début de votre invite
-
Cela garantit qu'il n'y a pas de dépendances concurrentes lors de l'utilisation de la CLI
Objectif : Pourquoi le faisons-nous pip install -e . ?
Cette commande installe la SageMaker HyperPod CLI en mode modifiable, ce qui vous permet d'utiliser des recettes mises à jour sans avoir à les réinstaller à chaque fois. Il vous permet également d'ajouter de nouvelles recettes que la CLI peut automatiquement récupérer.
Connexion à votre cluster
Connectez la SageMaker HyperPod CLI à votre cluster avant d'exécuter des tâches :
export AWS_REGION=us-east-1 && SageMaker HyperPod connect-cluster --cluster-name <your-cluster-name> --region us-east-1
Important
Cette commande crée un fichier de contexte (/tmp/hyperpod_context.json) dont les commandes suivantes ont besoin. Si vous voyez un message d'erreur concernant ce fichier introuvable, relancez la commande connect.
Conseil de pro : vous pouvez configurer davantage votre cluster pour qu'il utilise toujours l'kubeflowespace de noms en ajoutant l'--namespace
kubeflowargument à votre commande comme suit :
export AWS_REGION=us-east-1 && \ hyperpod connect-cluster \ --cluster-name <your-cluster-name> \ --region us-east-1 \ --namespace kubeflow
Cela vous évite d'avoir à ajouter cette commande -n kubeflow à chaque fois que vous interagissez avec vos jobs.
Commencer un travail de formation
Note
Si vous exécutez PPO/RFT des tâches, assurez-vous d'ajouter des paramètres de sélection d'étiquettes src/hyperpod_cli/sagemaker_hyperpod_recipes/recipes_collection/cluster/k8s.yaml afin que tous les pods soient planifiés sur le même nœud.
label_selector: required: sagemaker.amazonaws.com/instance-group-name: - <rig_group>
Lancez une tâche d'entraînement à l'aide d'une recette avec des remplacements de paramètres facultatifs :
hyperpod start-job -n kubeflow \ --recipe fine-tuning/nova/nova_1_0/nova_micro/SFT/nova_micro_1_0_p5_p4d_gpu_lora_sft \ --override-parameters '{ "instance_type": "ml.p5.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-latest" }'
Résultat attendu :
Final command: python3 <path_to_your_installation>/NovaForgeHyperpodCLI/src/hyperpod_cli/sagemaker_hyperpod_recipes/main.py recipes=fine-tuning/nova/nova_micro_p5_gpu_sft cluster_type=k8s cluster=k8s base_results_dir=/local/home/<username>/results cluster.pullPolicy="IfNotPresent" cluster.restartPolicy="OnFailure" cluster.namespace="kubeflow" container="708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:HP-SFT-DATAMIX-latest" Prepared output directory at /local/home/<username>/results/<job-name>/k8s_templates Found credentials in shared credentials file: ~/.aws/credentials Helm script created at /local/home/<username>/results/<job-name>/<job-name>_launch.sh Running Helm script: /local/home/<username>/results/<job-name>/<job-name>_launch.sh NAME: <job-name> LAST DEPLOYED: Mon Sep 15 20:56:50 2025 NAMESPACE: kubeflow STATUS: deployed REVISION: 1 TEST SUITE: None Launcher successfully generated: <path_to_your_installation>/NovaForgeHyperpodCLI/src/hyperpod_cli/sagemaker_hyperpod_recipes/launcher/nova/k8s_templates/SFT { "Console URL": "https://us-east-1.console.aws.amazon.com/sagemaker/home?region=us-east-1#/cluster-management/<your-cluster-name>" }
Vérifier l'état de la tâche
Surveillez vos tâches en cours à l'aide de kubectl :
kubectl get pods -o wide -w -n kubeflow | (head -n1 ; grep <your-job-name>)
Comprendre l'état des pods
Le tableau suivant explique les états courants des pods :
Statut |
Description |
|---|---|
|
Pod accepté mais pas encore programmé sur un nœud, ou en attente d'extraction des images du conteneur |
|
Pod lié à un nœud avec au moins un conteneur en cours d'exécution ou en démarrage |
|
Tous les conteneurs se sont terminés avec succès et ne redémarreront pas |
|
Tous les conteneurs se sont terminés et au moins un d'entre eux s'est soldé par une défaillance |
|
L'état du pod ne peut pas être déterminé (généralement en raison de problèmes de communication entre les nœuds) |
|
Le conteneur échoue à plusieurs reprises ; Kubernetes recule après les tentatives de redémarrage |
|
Impossible d'extraire l'image du conteneur à partir du registre |
|
Conteneur arrêté pour dépassement des limites de mémoire |
|
Tâche ou module terminé avec succès (exécution de la tâche par lots) |
Astuce
Utilisez le -w drapeau pour suivre les mises à jour de l'état des pods en temps réel. Appuyez Ctrl+C pour arrêter de regarder.
Surveillance des journaux des tâches
Vous pouvez consulter vos journaux de trois manières différentes :
En utilisant CloudWatch
Vos journaux sont disponibles dans votre AWS compte qui contient le cluster Hyperpod ci-dessous. CloudWatch Pour les consulter dans votre navigateur, rendez-vous sur la CloudWatch page d'accueil de votre compte et recherchez le nom de votre cluster. Par exemple, si votre cluster était appelé, my-hyperpod-rig le groupe de journaux aurait le préfixe :
-
Groupe de journaux :
/aws/sagemaker/Clusters/my-hyperpod-rig/{UUID} -
Une fois que vous êtes dans le groupe de journaux, vous pouvez trouver votre journal spécifique à l'aide de l'ID d'instance de nœud tel que -
hyperpod-i-00b3d8a1bf25714e4.-
i-00b3d8a1bf25714e4représente le nom de la machine compatible avec Hyperpod sur laquelle s'exécute votre tâche d'entraînement. Rappelez-vous comment, dans lakubectl get pods -o wide -w -n kubeflow | (head -n1 ; grep my-cpt-run)sortie de commande précédente, nous avons capturé une colonne appelée NODE. -
Le nœud « master » exécuté s'exécutait dans ce cas sur un hyperpod.
i-00b3d8a1bf25714e4Nous utiliserons donc cette chaîne pour sélectionner le groupe de journaux à afficher. Sélectionnez celui qui ditSagemakerHyperPodTrainingJob/rig-group/[NODE]
-
Utilisation d' CloudWatch Insights
Si vous avez le nom de votre poste à portée de main et que vous ne souhaitez pas suivre toutes les étapes ci-dessus, vous pouvez simplement interroger tous les journaux /aws/sagemaker/Clusters/my-hyperpod-rig/{UUID} ci-dessous pour trouver le journal individuel.
CPT :
fields @timestamp, @message, @logStream, @log | filter @message like /(?i)Starting CPT Job/ | sort @timestamp desc | limit 100
Pour terminer le travail, remplacer Starting CPT Job par CPT Job
completed
Ensuite, vous pouvez cliquer sur les résultats et choisir celui qui indique « Epoch 0 » car ce sera votre nœud maître.
Utilisation de AWS CLI
Vous pouvez choisir de suivre vos journaux à l'aide du AWS CLI. Avant de le faire, veuillez vérifier votre AWS CLI version à l'aide deaws --version. Il est également recommandé d'utiliser ce script utilitaire qui facilite le suivi des journaux en direct sur votre terminal.
pour V1 :
aws logs get-log-events \ --log-group-name /aws/sagemaker/YourLogGroupName \ --log-stream-name YourLogStream \ --start-from-head | jq -r '.events[].message'
pour la V2 :
aws logs tail /aws/sagemaker/YourLogGroupName \ --log-stream-name YourLogStream \ --since 10m \ --follow
Répertorier les emplois actifs
Afficher toutes les tâches en cours d'exécution dans votre cluster :
hyperpod list-jobs -n kubeflow
Exemple de sortie :
{ "jobs": [ { "Name": "test-run-nhgza", "Namespace": "kubeflow", "CreationTime": "2025-10-29T16:50:57Z", "State": "Running" } ] }
Annulation d'une tâche
Arrêtez une tâche en cours à tout moment :
hyperpod cancel-job --job-name <job-name> -n kubeflow
Trouver le nom de votre poste
Option 1 : À partir de votre recette
Le nom du job est indiqué dans le run bloc de votre recette :
run: name: "my-test-run" # This is your job name model_type: "amazon.nova-micro-v1:0:128k" ...
Option 2 : à partir de la commande list-jobs
Utilisez hyperpod list-jobs -n kubeflow et copiez le Name champ de la sortie.
Exécution d'un travail d'évaluation
Évaluez un modèle entraîné ou un modèle de base à l'aide d'une recette d'évaluation.
Conditions préalables
Avant d'exécuter des tâches d'évaluation, assurez-vous de disposer des éléments suivants :
-
Vérifiez l'URI Amazon S3 depuis le
manifest.jsonfichier de votre tâche de formation (pour les modèles entraînés) -
Ensemble de données d'évaluation chargé sur Amazon S3 dans le format correct
-
Afficher le chemin Amazon S3 pour les résultats de l'évaluation
Commande
Exécutez la commande suivante pour démarrer une tâche d'évaluation :
hyperpod start-job -n kubeflow \ --recipe evaluation/nova/nova_2_0/nova_lite/nova_lite_2_0_p5_48xl_gpu_bring_your_own_dataset_eval \ --override-parameters '{ "instance_type": "p5.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest", "recipes.run.name": "<your-eval-job-name>", "recipes.run.model_name_or_path": "<checkpoint-s3-uri>", "recipes.run.output_s3_path": "s3://<your-bucket>/eval-results/", "recipes.run.data_s3_path": "s3://<your-bucket>/eval-data.jsonl" }'
Descriptions des paramètres :
-
recipes.run.name: nom unique pour votre mission d'évaluation -
recipes.run.model_name_or_path: URI Amazon S3 depuismanifest.jsonou chemin du modèle de base (par exemple,nova-micro/prod) -
recipes.run.output_s3_path: emplacement Amazon S3 pour les résultats de l'évaluation -
recipes.run.data_s3_path: emplacement Amazon S3 de votre jeu de données d'évaluation
Astuces :
-
Model-specific recettes : chaque taille de modèle (micro, lite, pro) possède sa propre recette d'évaluation
-
Évaluation du modèle de base : utilisez les chemins du modèle de base (par exemple
nova-micro/prod) au lieu des URI des points de contrôle pour évaluer les modèles de base
Format des données d'évaluation
Format d'entrée (JSONL) :
{ "metadata": "{key:4, category:'apple'}", "system": "arithmetic-patterns, please answer the following with no other words: ", "query": "What is the next number in this series? 1, 2, 4, 8, 16, ?", "response": "32" }
Format de sortie :
{ "prompt": "[{'role': 'system', 'content': 'arithmetic-patterns, please answer the following with no other words: '}, {'role': 'user', 'content': 'What is the next number in this series? 1, 2, 4, 8, 16, ?'}]", "inference": "['32']", "gold": "32", "metadata": "{key:4, category:'apple'}" }
Descriptions des champs :
-
prompt: entrée formatée envoyée au modèle -
inference: réponse générée par le modèle -
gold: réponse correcte attendue de la part du jeu de données d'entrée -
metadata: métadonnées facultatives transmises depuis l'entrée
Problèmes courants
-
ModuleNotFoundError: No module named 'nemo_launcher', vous devrez peut-être l'ajouternemo_launcherà votre chemin python en fonction de l'endroit oùhyperpod_cliil est installé. Exemple de commande :export PYTHONPATH=<path_to_hyperpod_cli>/sagemaker-hyperpod-cli/src/hyperpod_cli/sagemaker_hyperpod_recipes/launcher/nemo/nemo_framework_launcher/launcher_scripts:$PYTHONPATH -
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/hyperpod_current_context.json'indique que vous avez oublié d'exécuter la commande hyperpod connect cluster. -
Si vous ne voyez pas votre tâche planifiée, vérifiez si la sortie de votre SageMaker HyperPod CLI contient cette section avec les noms des tâches et d'autres métadonnées. Sinon, réinstallez Helm Chart en exécutant :
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh rm -f ./get_helm.sh