View a markdown version of this page

Guide des commandes Amazon SageMaker HyperPod Essential - Amazon Nova

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)

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 avant de l'exécuterpip 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

Pending

Pod accepté mais pas encore programmé sur un nœud, ou en attente d'extraction des images du conteneur

Running

Pod lié à un nœud avec au moins un conteneur en cours d'exécution ou en démarrage

Succeeded

Tous les conteneurs se sont terminés avec succès et ne redémarreront pas

Failed

Tous les conteneurs se sont terminés et au moins un d'entre eux s'est soldé par une défaillance

Unknown

L'état du pod ne peut pas être déterminé (généralement en raison de problèmes de communication entre les nœuds)

CrashLoopBackOff

Le conteneur échoue à plusieurs reprises ; Kubernetes recule après les tentatives de redémarrage

ImagePullBackOff / ErrImagePull

Impossible d'extraire l'image du conteneur à partir du registre

OOMKilled

Conteneur arrêté pour dépassement des limites de mémoire

Completed

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 la kubectl 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-00b3d8a1bf25714e4 Nous utiliserons donc cette chaîne pour sélectionner le groupe de journaux à afficher. Sélectionnez celui qui dit SagemakerHyperPodTrainingJob/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.json fichier 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 depuis manifest.json ou 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 exemplenova-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'ajouter nemo_launcher à votre chemin python en fonction de l'endroit où hyperpod_cli il 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