View a markdown version of this page

Guia de comandos essenciais do Amazon SageMaker HyperPod - Amazon Nova

Guia de comandos essenciais do Amazon SageMaker HyperPod

O Amazon SageMaker HyperPod fornece uma ampla funcionalidade de linha de comando para gerenciar fluxos de trabalho de treinamento. Este guia aborda os comandos essenciais para operações comuns, desde a conexão com seu cluster até o monitoramento do progresso da tarefa.

Pré-requisitos

Antes de usar esses comandos, conclua a seguinte configuração:

  • Cluster do SageMaker HyperPod com o RIG criado (normalmente em us-east-1)

  • Saída do bucket do Amazon S3 criado para artefatos de treinamento

  • Perfis do IAM configurados com as permissões apropriadas

  • Dados de treinamento enviados no formato JSONL correto

  • Sincronização do FSx para Lustre concluída (verifique nos logs do cluster no primeiro trabalho)

Instalação da CLI para fórmulas

Navegue até a raiz do repositório de fórmulas antes de executar o comando de instalação.

Use o repositório Hyperpodrecipes se estiver usando técnicas de personalização que não sejam do Forge. Para personalização baseada no Forge, consulte o repositório de fórmulas específico do Forge.

Execute os seguintes comandos para instalar a CLI do SageMaker HyperPod:

nota

Verifique se você não está em um ambiente conda/anaconda/miniconda ativo ou em outro ambiente virtual

Se estiver, saia do ambiente usando:

  • conda deactivate para ambientes conda/anaconda/miniconda

  • deactivate para ambientes virtuais Python

Se você estiver usando uma técnica de personalização que não seja do Forge, faça o download de sagemaker-hyperpod-recipes, conforme mostrado abaixo:

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

Se você é assinante do Forge, deve fazer o download das fórmulas usando o processo mencionado abaixo.

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
dica

Para usar um novo ambiente virtual antes de executar pip install -e ., execute:

  • python -m venv nova_forge

  • source nova_forge/bin/activate

  • Sua linha de comando agora será exibida (nova_forge) no início do seu prompt

  • Isso garante que não haja dependências concorrentes ao usar a CLI

Objetivo: por que executamos pip install -e .?

Esse comando instala a CLI do SageMaker HyperPod no modo editável, permitindo que você use fórmulas atualizadas sem precisar reinstalá-las todas as vezes. Ele também permite que você adicione novas fórmulas que a CLI pode coletar automaticamente.

Conectar-se a um cluster

Conecte a CLI do SageMaker HyperPod ao seu cluster antes de executar qualquer tarefa:

export AWS_REGION=us-east-1 && hyperpod connect-cluster --cluster-name <your-cluster-name> --region us-east-1
Importante

Esse comando cria um arquivo de contexto (/tmp/hyperpod_context.json) que os comandos subsequentes exigem. Se você vir um erro informando que esse arquivo não foi encontrado, execute novamente o comando connect.

Dica profissional: você pode configurar ainda mais seu cluster para sempre usar o namespace kubeflow adicionando o argumento --namespace kubeflow ao seu comando da seguinte forma:

export AWS_REGION=us-east-1 && \ hyperpod connect-cluster \ --cluster-name <your-cluster-name> \ --region us-east-1 \ --namespace kubeflow

Isso elimina a necessidade de adicionar o -n kubeflow em cada comando ao interagir com suas tarefas.

Início de uma tarefa de treinamento

nota

Se estiver executando tarefas de RFT, inclua as configurações do seletor de rótulos em src/hyperpod_cli/sagemaker_hyperpod_recipes/recipes_collection/cluster/k8s.yaml para que todos os pods sejam programados no mesmo nó.

label_selector: required: sagemaker.amazonaws.com/instance-group-name: - <rig_group>

Inicie uma tarefa de treinamento usando uma fórmula com substituições de parâmetros opcionais:

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

Saída esperada:

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>" }

Monitoramento do status da tarefa

Monitore suas tarefas em execução usando o kubectl:

kubectl get pods -o wide -w -n kubeflow | (head -n1 ; grep <your-job-name>)
Noções básicas sobre os status de pods

A tabela abaixo explica os status comuns de pods:

Status

Descrição

Pending

O pod foi aceito, mas ainda não foi programado para um nó, ou está aguardando a extração das imagens do contêiner

Running

Pod vinculado a um nó com pelo menos um contêiner em execução ou iniciando

Succeeded

Todos os contêineres foram concluídos com sucesso e não serão reiniciados

Failed

Todos os contêineres foram encerrados, com pelo menos um apresentando falha

Unknown

O estado do pod não pode ser determinado (geralmente devido a problemas de comunicação dos nós)

CrashLoopBackOff

O contêiner falha repetidamente; o Kubernetes está suspendendo novas tentativas de reinicialização

ImagePullBackOff / ErrImagePull

Não é possível extrair a imagem do contêiner do registro

OOMKilled

Contêiner encerrado por exceder os limites de memória

Completed

Tarefa ou pod concluído com êxito (conclusão das tarefas em lote)

dica

Use o sinalizador -w para acompanhar as atualizações de status dos pods em tempo real. Pressione Ctrl+C para parar de acompanhar.

Monitoramento dos logs de tarefas

Você pode visualizar seus logs de três maneiras:

Usar o CloudWatch

Seus logs estão disponíveis em sua conta da AWS que contém o Hyperpodcluster no CloudWatch. Para visualizá-los em seu navegador, navegue até a página inicial do CloudWatch em sua conta e pesquise o nome do seu cluster. Por exemplo, se seu cluster se chamasse my-hyperpod-rig, o grupo de logs teria o prefixo:

  • Grupo de logs: /aws/sagemaker/Clusters/my-hyperpod-rig/{UUID}

  • Quando estiver no grupo de logs, você poderá encontrar seu log específico usando o ID da instância do nó, como hyperpod-i-00b3d8a1bf25714e4.

    • i-00b3d8a1bf25714e4 aqui representa o nome da máquina compatível com Hyperpod em que sua tarefa de treinamento está sendo executada. Lembre-se de como, na saída anterior do comando kubectl get pods -o wide -w -n kubeflow | (head -n1 ; grep my-cpt-run), capturamos uma coluna chamada NODE.

    • Nesse caso, a execução do nó “principal” estava sendo realizada em hyperpod-i-00b3d8a1bf25714e4 e, portanto, usaremos essa string para selecionar o grupo de logs a ser visualizado. Selecione a que diz SagemakerHyperPodTrainingJob/rig-group/[NODE]

Uso do CloudWatch Insights

Se você souber o nome da sua tarefa e não quiser seguir todas as etapas acima, basta consultar todos os logs em /aws/sagemaker/Clusters/my-hyperpod-rig/{UUID} para encontrar o log individual.

CPT:

fields @timestamp, @message, @logStream, @log | filter @message like /(?i)Starting CPT Job/ | sort @timestamp desc | limit 100

Para concluir a tarefa, substitua Starting CPT Job por CPT Job completed

Em seguida, você pode clicar nos resultados e escolher aquele que diz “Epoch 0”, pois este será seu nó principal.

Como usar o AWS CLI

Você pode optar por rastrear seus logs usando a CLI AWS CLI. Antes de fazer isso, verifique sua AWS CLI versão usando aws --version. Também é recomendável usar esse script utilitário que ajuda no rastreamento de logs em tempo real em seu 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

Listagem das tarefas ativas

Veja todas as tarefas em execução no seu cluster:

hyperpod list-jobs -n kubeflow

Resultado do exemplo:

{ "jobs": [ { "Name": "test-run-nhgza", "Namespace": "kubeflow", "CreationTime": "2025-10-29T16:50:57Z", "State": "Running" } ] }

Cancelar uma tarefa

Interrompa uma tarefa em execução a qualquer momento:

hyperpod cancel-job --job-name <job-name> -n kubeflow
Localização do nome da sua tarefa

Opção 1: da sua fórmula

O nome da tarefa é especificado no bloco run da sua fórmula:

run: name: "my-test-run" # This is your job name model_type: "amazon.nova-micro-v1:0:128k" ...

Opção 2: do comando list-jobs

Use hyperpod list-jobs -n kubeflow e copie o campo Name da saída.

Execução de uma tarefa de avaliação

Avalie um modelo treinado ou modelo de base usando uma fórmula de avaliação.

Pré-requisitos

Antes de executar tarefas de avaliação, verifique se você tem:

  • O URI do ponto de verificação do Amazon S3 do arquivo manifest.json da tarefa de treinamento (para modelos treinados)

  • O conjunto de dados de avaliação carregado para o Amazon S3 no formato correto

  • O caminho da saída do Amazon S3 para obter os resultados da avaliação

Command

Execute o seguinte comando para iniciar uma tarefa de avaliação:

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

Descrições dos parâmetros:

  • recipes.run.name: o nome exclusivo para sua tarefa de avaliação

  • recipes.run.model_name_or_path: o URI do Amazon S3 de manifest.json ou o caminho do modelo base (p. ex., nova-micro/prod)

  • recipes.run.output_s3_path: o local do Amazon S3 para obter os resultados da avaliação

  • recipes.run.data_s3_path: o local do seu conjunto de dados de avaliação no Amazon S3

Dicas:

  • Fórmulas específicas de modelos: cada tamanho de modelo (micro, lite, pro) tem sua própria fórmula de avaliação

  • Avaliação de modelos de base: use caminhos de modelos de base (p. ex., nova-micro/prod) em vez de URIs de ponto de verificação para avaliar modelos de base

Formato dos dados de avaliação

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 saída:

{ "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'}" }

Descrições dos campos:

  • prompt: entrada formatada enviada ao modelo

  • inference: resposta gerada do modelo

  • gold: resposta correta esperada do conjunto de dados de entrada

  • metadata: metadados opcionais transmitidos da entrada

Problemas comuns

  • ModuleNotFoundError: No module named 'nemo_launcher', talvez seja necessário adicionar nemo_launcher ao seu caminho Python com base em onde hyperpod_cli está instalado. Exemplo de comando:

    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 você não executou o comando hyperpod connect cluster.

  • Caso sua tarefa não apareça como agendada, verifique se a saída da CLI do SageMaker HyperPod tem essa seção com os nomes de tarefas e outros metadados. Caso contrário, reinstale o chart do Helm executando:

    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