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 && 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 |
|---|---|
|
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 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.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