Guía de comandos esenciales de Amazon SageMaker HyperPod
Amazon SageMaker HyperPod dispone de muchas herramientas de línea de comandos para administrar los flujos de trabajo de entrenamiento. En esta guía se describen los comandos esenciales para las operaciones habituales, desde la conexión al clúster hasta la supervisión del progreso del trabajo.
Requisitos previos
Antes de usar estos comandos, asegúrese de haber realizado la siguiente configuración:
-
Clúster de SageMaker HyperPod creado con RIG (normalmente en us-east-1)
-
Bucket de Amazon S3 de salida creado para artefactos de entrenamiento
-
Roles de IAM con los permisos adecuados
-
Datos de entrenamiento cargados en el formato JSONL correcto
-
Sincronización con FSx para Lustre completada (compruébelo en los registros del clúster en el primer trabajo)
Temas
Instalación de la CLI de la fórmula
Desplácese hasta la raíz del repositorio de fórmulas antes de usar el comando de instalación.
Utilice el repositorio de fórmulas de HyperPod si utiliza técnicas de personalización que no sean de Forge. Para la personalización basada en Forge, consulte el repositorio de fórmulas específico de Forge.
Use los siguientes comandos para instalar la CLI de SageMaker HyperPod:
nota
Asegúrese de no estar en un entorno conda, anaconda o miniconda activo o en algún otro entorno virtual
Si es así, salga del entorno mediante:
-
conda deactivatepara entornos conda, anaconda o miniconda -
deactivatepara entornos virtuales de Python
Si está utilizando una técnica de personalización que no sea de Forge, descargue las fórmulas de sagemaker-hyperpod como se muestra a continuación:
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 cuenta con una suscripción a Forge, debería poder descargar las fórmulas mediante el proceso mencionado a continuación.
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
sugerencia
Para usar un nuevo entorno virtualpip install -e ., use:
-
python -m venv nova_forge -
source nova_forge/bin/activate -
La línea de comandos ahora mostrará (nova_forge) al principio de la petición.
-
Esto garantiza que las dependencias no compitan cuando se use la CLI.
Propósito: ¿por qué usamos pip install -e .?
Este comando instala la CLI de SageMaker HyperPod en modo editable, lo que le permite utilizar fórmulas actualizadas sin tener que volver a instalarlas cada vez que quiera usarlas. También le permite agregar nuevas fórmulas que la CLI puede usar automáticamente.
Conexión al clúster
Conecte la CLI de SageMaker HyperPod a su clúster antes de llevar a cabo cualquier trabajo:
export AWS_REGION=us-east-1 && SageMaker HyperPod connect-cluster --cluster-name <your-cluster-name> --region us-east-1
importante
Este comando crea un archivo de contexto (/tmp/hyperpod_context.json) necesario para los comandos que se usarán a continuación. Si ve un error indicando que no se puede encontrar el archivo, vuelva a usar el comando connect.
Consejo profesional: si quiere configurar el clúster para que utilice siempre el espacio de nombres kubeflow, agregue el argumento --namespace
kubeflow al comando de la siguiente manera:
export AWS_REGION=us-east-1 && \ hyperpod connect-cluster \ --cluster-name <your-cluster-name> \ --region us-east-1 \ --namespace kubeflow
De esta forma no tendrá que agregar -n kubeflow en todos los comandos al interactuar con sus tareas.
Inicio de un trabajo de entrenamiento
nota
Si lleva a cabo trabajos de PPO o RFT, asegúrese de agregar los ajustes del selector de etiquetas para src/hyperpod_cli/sagemaker_hyperpod_recipes/recipes_collection/cluster/k8s.yaml de forma que todos los pods estén programados en el mismo nodo.
label_selector: required: sagemaker.amazonaws.com/instance-group-name: - <rig_group>
Lanzamiento de un trabajo de entrenamiento mediante una fórmula con modificaciones de parámetros opcionales:
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" }'
Resultado previsto:
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>" }
Seguimiento del estado del trabajo
Supervise los trabajos en marcha con kubectl:
kubectl get pods -o wide -w -n kubeflow | (head -n1 ; grep <your-job-name>)
Explicación de los estados de los pods
En la siguiente tabla se explican los estados comunes de los pods:
Estado |
Descripción |
|---|---|
|
Se acepta el pod, pero aún no se ha programado en un nodo o se está esperando a que se extraigan las imágenes del contenedor |
|
El pod está enlazado a un nodo con al menos un contenedor en marcha o iniciándose. |
|
Todos los contenedores se completaron correctamente y no se reiniciarán. |
|
Todos los contenedores terminaron con al menos uno de ellos devolviendo un error. |
|
No se puede determinar el estado del pod (normalmente debido a problemas de comunicación entre los nodos). |
|
El contenedor falla repetidamente; Kubernetes se retrasa ante los intentos de reinicio. |
|
No se pudo extraer la imagen del contenedor del registro. |
|
El contenedor se canceló por superar los límites de memoria. |
|
El trabajo o el pod finalizaron correctamente (finalización del trabajo por lotes). |
sugerencia
Use el indicador -w para ver las actualizaciones del estado del pod en tiempo real. Pulse Ctrl+C para dejar de ver.
Supervisión de los registros de trabajo
Puede ver los registros de tres maneras:
Uso de CloudWatch
Los registros están disponibles en la cuenta de AWS que contiene el clúster de HyperPod en CloudWatch. Para verlos en su navegador, vaya a la página de inicio de CloudWatch en su cuenta y busque el nombre del clúster. Por ejemplo, si su clúster se llamara my-hyperpod-rig, el grupo de registro tendría el prefijo:
-
Grupo de registro:
/aws/sagemaker/Clusters/my-hyperpod-rig/{UUID} -
Una vez en el grupo de registro, podrá encontrar el registro específico mediante el ID de la instancia del nodo, como -
hyperpod-i-00b3d8a1bf25714e4.-
i-00b3d8a1bf25714e4aquí representa el nombre de la máquina compatible con HyperPod en la que se está poniendo en marcha el trabajo de entrenamiento. Recuerde que en el resultado del comandokubectl get pods -o wide -w -n kubeflow | (head -n1 ; grep my-cpt-run)anterior capturamos una columna llamada NODE. -
En este caso, el nodo maestro se ponía en marcha en hyperpod-
i-00b3d8a1bf25714e4y, por lo tanto, utilizaremos esa cadena para seleccionar el grupo de registro que queremos ver. Seleccione el que diceSagemakerHyperPodTrainingJob/rig-group/[NODE].
-
Uso de Información de CloudWatch
Si tiene a mano el nombre de su trabajo y no desea seguir todos los pasos anteriores, simplemente consulte todos los registros en /aws/sagemaker/Clusters/my-hyperpod-rig/{UUID} para encontrar el registro individual.
CPT:
fields @timestamp, @message, @logStream, @log | filter @message like /(?i)Starting CPT Job/ | sort @timestamp desc | limit 100
Para completar el trabajo, sustituya Starting CPT Job por CPT Job
completed.
Luego, puede hacer clic en los resultados y elegir el que diga “Epoch 0”, ya que ese será el nodo maestro.
Uso de la AWSAWS CLI
Puede optar por rastrear los registros mediante AWS CLI. Antes de hacerlo, compruebe su versión de AWS CLI utilizando aws --version. También se recomienda usar este script de utilidad que ayuda a rastrear los registros en tiempo real en su terminal.
Para V1:
aws logs get-log-events \ --log-group-name /aws/sagemaker/YourLogGroupName \ --log-stream-name YourLogStream \ --start-from-head | jq -r '.events[].message'
Para V2:
aws logs tail /aws/sagemaker/YourLogGroupName \ --log-stream-name YourLogStream \ --since 10m \ --follow
Listado de los trabajos activos
Vea todos los trabajos que están en marcha en el clúster:
hyperpod list-jobs -n kubeflow
Ejemplo de código de salida:
{ "jobs": [ { "Name": "test-run-nhgza", "Namespace": "kubeflow", "CreationTime": "2025-10-29T16:50:57Z", "State": "Running" } ] }
Cancelar una tarea
Detenga el trabajo en marcha en cualquier momento:
hyperpod cancel-job --job-name <job-name> -n kubeflow
Búsqueda del nombre del trabajo
Opción 1: a partir de una fórmula
El nombre del trabajo se especifica en el bloque run de la fórmula:
run: name: "my-test-run" # This is your job name model_type: "amazon.nova-micro-v1:0:128k" ...
Opción 2: a partir del comando list-jobs
Use hyperpod list-jobs -n kubeflow y copie el campo Name de la salida.
Puesta en marcha de un trabajo de evaluación
Evalúe un modelo entrenado o un modelo base mediante una fórmula de evaluación.
Requisitos previos
Antes de poner en marcha trabajos de evaluación, asegúrese de que dispone de lo siguiente:
-
URI del punto de control de Amazon S3 del archivo
manifest.jsonde su trabajo de entrenamiento (para modelos entrenados) -
Conjunto de datos de evaluación cargado en Amazon S3 en el formato correcto
-
Ruta de Amazon S3 para ver los resultados de la evaluación
Comando
Use el siguiente comando para iniciar un trabajo de evaluación:
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" }'
Descripciones de los parámetros:
-
recipes.run.name: nombre único del trabajo de evaluación -
recipes.run.model_name_or_path: URI de Amazon S3 demanifest.jsono de la ruta del modelo base (p. ej.,nova-micro/prod) -
recipes.run.output_s3_path: ubicación de Amazon S3 para los resultados de la evaluación -
recipes.run.data_s3_path: ubicación en Amazon S3 del conjunto de datos de evaluación
Consejos:
-
Fórmulas específicas para cada modelo: cada tamaño de modelo (micro, lite, pro) tiene su propia fórmula de evaluación.
-
Evaluación del modelo base: utilice las rutas del modelo base (por ejemplo,
nova-micro/prod) en lugar de los URI de puntos de control para evaluar los modelos base.
Formato de los datos de evaluación
Formato de entrada (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" }
Formato de salida:
{ "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'}" }
Descripción de campos:
-
prompt: entrada formateada enviada al modelo -
inference: respuesta generada por el modelo -
gold: respuesta correcta esperada del conjunto de datos de entrada -
metadata: metadatos opcionales transferidos desde la entrada
Problemas comunes
-
ModuleNotFoundError: No module named 'nemo_launcher', puede que tenga que agregarnemo_launchera su ruta de Python en función del lugar donde se haya instaladohyperpod_cli. Comando de ejemploexport 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'indica que no puso en marcha el comando hyperpod connect cluster. -
Si no ve el trabajo programado, compruebe si la salida de la CLI de SageMaker HyperPod incluye esta sección con los nombres de los trabajos y otros metadatos. Si no es así, vuelva a instalar el gráfico de Helm usando:
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