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)
Tópicos
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 deactivatepara ambientes conda/anaconda/miniconda -
deactivatepara 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 virtualpip 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 && SageMaker 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 PPO/RFT, certifique-se de adicionar as configurações do seletor de rótulos a 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 |
|---|---|
|
O pod foi aceito, mas ainda não foi programado para um nó, ou está aguardando a extração das imagens do contêiner |
|
Pod vinculado a um nó com pelo menos um contêiner em execução ou iniciando |
|
Todos os contêineres foram concluídos com sucesso e não serão reiniciados |
|
Todos os contêineres foram encerrados, com pelo menos um apresentando falha |
|
O estado do pod não pode ser determinado (geralmente devido a problemas de comunicação dos nós) |
|
O contêiner falha repetidamente; o Kubernetes está suspendendo novas tentativas de reinicialização |
|
Não é possível extrair a imagem do contêiner do registro |
|
Contêiner encerrado por exceder os limites de memória |
|
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-00b3d8a1bf25714e4aqui 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 comandokubectl 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-00b3d8a1bf25714e4e, portanto, usaremos essa string para selecionar o grupo de logs a ser visualizado. Selecione a que dizSagemakerHyperPodTrainingJob/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 AWSAWS CLI
Você pode optar por monitorar seus logs usando a AWS CLI. Antes de fazer isso, verifique sua versão da AWS CLI 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.jsonda 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 demanifest.jsonou 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 adicionarnemo_launcherao seu caminho Python com base em ondehyperpod_cliestá 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