Guía de comandos esenciales de Amazon SageMaker HyperPod - Amazon Nova

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)

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 deactivate para entornos conda, anaconda o miniconda

  • deactivate para 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 virtual antes de poner en marcha pip 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

Pending

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

Running

El pod está enlazado a un nodo con al menos un contenedor en marcha o iniciándose.

Succeeded

Todos los contenedores se completaron correctamente y no se reiniciarán.

Failed

Todos los contenedores terminaron con al menos uno de ellos devolviendo un error.

Unknown

No se puede determinar el estado del pod (normalmente debido a problemas de comunicación entre los nodos).

CrashLoopBackOff

El contenedor falla repetidamente; Kubernetes se retrasa ante los intentos de reinicio.

ImagePullBackOff / ErrImagePull

No se pudo extraer la imagen del contenedor del registro.

OOMKilled

El contenedor se canceló por superar los límites de memoria.

Completed

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-00b3d8a1bf25714e4 aquí 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 comando kubectl 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-00b3d8a1bf25714e4 y, por lo tanto, utilizaremos esa cadena para seleccionar el grupo de registro que queremos ver. Seleccione el que dice SagemakerHyperPodTrainingJob/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.json de 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 de manifest.json o 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 agregar nemo_launcher a su ruta de Python en función del lugar donde se haya instalado hyperpod_cli. Comando de ejemplo

    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' 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