Iniciar uma tarefa de treinamento usando a CLI do HyperPod - Amazon SageMaker AI

Iniciar uma tarefa de treinamento usando a CLI do HyperPod

A CLI do SageMaker HyperPod é uma ferramenta de interface de linha de comandos para gerenciar clusters do Amazon SageMaker HyperPod. Você pode usar a CLI do HyperPod para criar, configurar e monitorar clusters do HyperPod para workloads de machine learning. Para ter mais informações, consulte o repositório sagemaker-hyperpod-cli do GitHub.

Pré-requisitos

  • Instale a CLI do HyperPod. Para personalizar o Amazon Nova no Amazon SageMaker HyperPod, você deve conferir a ramificação release_v2 para usar a CLI do SageMaker HyperPod.

  • Antes de enviar trabalhos, verifique se o bucket de saída do Nova existe. Para verificar, execute aws s3 ls s3://nova-111122223333/.

    O nome do bucket é o valor que você especificou para recipes.run.output_s3_path na fórmula. Esse bucket de saída armazenará um arquivo de manifesto gerado após o treinamento, que conterá caminhos do S3 para os artefatos de saída armazenados no bucket do Amazon S3 gerenciado pelo serviço. Além disso, ele pode armazenar opcionalmente os arquivos do TensorBoard ou os resultados da avaliação.

  • Noções básicas sobre os requisitos de sincronização de dados do Amazon FSx. Para que os trabalhos possam ser executados, primeiro o Amazon FSx precisa de tempo para sincronizar os dados de treinamento do Amazon S3.

Configurar a CLI do HyperPod para personalização do Amazon Nova

Para configurar a CLI do HyperPod para personalização do Amazon Nova, siga as etapas abaixo.
  1. Clone o repositório sagemaker-hyperpod-cli do GitHub com a ramificação release_v2.

    git clone --recurse-submodules https://github.com/aws/sagemaker-hyperpod-cli.git --branch release_v2
  2. Navegue para a pasta sagemaker-hyperpod-cli.

    cd sagemaker-hyperpod-cli
  3. Verifique se você tem todos os pré-requisitos em Pré-requisitos.

  4. Para configurar o Helm, siga estas etapas:

    1. Para baixar o script de instalação do Helm, execute:

      curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
    2. Para tornar o script executável, execute:

      chmod 700 get_helm.sh

      Esse comando altera as permissões para tornar o script executável.

    3. Para executar o script de instalação do Helm, execute:

      ./get_helm.sh
    4. Para remover o script de instalação, execute:

      rm -f ./get_helm.sh
  5. Para instalar dependências do HyperPod que permitam grupos de instâncias restritas (RIG), siga as etapas abaixo.

    nota

    Antes de instalar as dependências, você deve ter um cluster do HyperPod orquestrado pelo EKS com um RIG. Se você não tiver um par de chaves, siga estas instruções para criar um:

    1. Para se conectar ao cluster do HyperPod orquestrado pelo EKS, execute:

      aws eks update-kubeconfig --name <eks_cluster_name> --region us-east-1
    2. Para verificar a conexão com o cluster do HyperPod orquestrado pelo EKS, execute:

      kubectl config current-context
    3. Para obter atualizações para dependências padrão do HyperPod, execute:

      helm dependencies update helm_chart/HyperPodHelmChart
    4. Para instalar dependências padrão do HyperPod, execute:

      helm install dependencies helm_chart/HyperPodHelmChart --namespace kube-system
    5. Para navegar até o diretório do chart do Helm, execute:

      cd helm_chart
    6. Para instalar dependências do HyperPod específicas do RIG, execute o comando a seguir.

      nota

      Antes de instalar as dependências, considere o seguinte:

      • Você só deve executar esse comando uma vez por cluster após a criação.

      • Você deve garantir que o utilitário yq esteja instalado pelo menos com a versão 4 (como v4). Há uma verificação integrada para confirmar se yq >=4 está disponível no script de instalação.

      • Você precisará confirmar a instalação inserindo y quando for solicitado. Opcionalmente, antes da confirmação, veja a instalação pretendida em ./rig-dependencies.yaml.

      chmod 700 ./install_rig_dependencies.sh && ./install_rig_dependencies.sh
    7. Para voltar à raiz do repositório codesagemaker-hyperpod-cli, execute:

      cd ..
  6. Para continuar com a instalação da CLI do HyperPod em sagemaker-hyperpod-cli, siga estas etapas.

    1. Instale o a CLI usando o pip:

      pip install -e .
    2. Verifique a instalação:

      hyperpod --help

Enviar um trabalho

Você pode usar a CLI do HyperPod para enviar uma tarefa de treinamento.

Para enviar uma tarefa usando uma fórmula, execute o comando a seguir.

hyperpod start-job [--namespace <namespace>] --recipe {{fine-tuning | evaluation | training}}/nova/<Your_Recipe_Name> --override-parameters \ '{ "instance_type":"p5d.48xlarge", "container": <Docker Image>, "recipes.run.name": <custom-run-name>, "recipes.run.output_s3_path": "<customer-s3-path>" }'
  • --recipe: o tipo de tarefa que você está executando por meio da fórmula. Os valores válidos são: fine-tuning | evaluation | training.

    Tipo de trabalho Valor
    Tarefas de SFT/PEFT/PPO/DPO fine-tuning
    Trabalhos de avaliação evaluation
    Tarefas de CPT training
  • Nome da fórmula: você pode encontrar o nome no repositório, no diretório /src/hyperpod_cli/sagemaker_hyperpod_recipes/recipe_collection/recipes/.

  • Fórmula de exemplo: --recipe evaluation/nova/nova_lite_g5_12xl_bring_your_own_dataset_eval.

  • Contêiner: este campo é obrigatório. Para encontrar suas imagens referentes aos tipos de trabalho, consulte a tabela a seguir.

    Técnica Contêiner
    DPO 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-DPO-latest
    Trabalhos de avaliação 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest
    CPT 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:HP-CPT-latest
    PPO 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SMHP-PPO-TRAIN-latest
    SFT/PEFT 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-latest
  • Nome de execução personalizado: há restrições de definição na entrada custom-run-time; por exemplo, sem maiúsculas, sem espaços, sem sublinhados. Para ter mais informações, consulte Object Names and IDs.

[Opcional] Se você já tem uma tarefa de treinamento e deseja direcionar um nó específico para sua próxima tarefa, siga estas etapas.

  1. Para obter todos os nós livres, execute o comando a seguir.

    kubectl get nodes —no-headers | awk '$2 != "NotReady" && $3 != "SchedulingDisabled" {print $1}'
  2. Adicione o seguinte ao arquivo src\hyperpod_cli\sagemaker_hyperpod_recipes\recipes_collection\cluster\k8s.yaml para seletor de rótulos:

    label_selector: required: kubernetes.io/hostname: - <node_name>
  3. No diretório raiz, execute o comando a seguir. Isso garante que o SageMaker HyperPod seja instalado no sistema do usuário, permitindo que ele use a palavra-chave “hyperpod” para envio de tarefas e outras funções. Você deve executar esse comando na pasta raiz onde está o código da CLI do HyperPod.

    pip install .

Listar tarefas

Para listar todas as tarefas, execute o comando a seguir.

hyperpod list-jobs [--namespace <namespace>] [--all-namespaces]

O comando lista todas as tarefas no namespace especificado ou em todos os namespaces.

Obter detalhes da tarefa

Para obter detalhes sobre uma tarefa, execute o comando a seguir.

hyperpod get-job --job-name <job-name> [--namespace <namespace>] [--verbose]

O comando recupera informações detalhadas sobre uma tarefa específica.

Listar pods

Para listar pods, execute o comando a seguir.

hyperpod list-pods --job-name <job-name> [--namespace <namespace>]

O comando lista todos os pods associados a uma tarefa específica no namespace especificado.

Cancelar tarefas

Para cancelar uma tarefa, execute o comando a seguir.

hyperpod cancel-job --job-name <job-name> [--namespace <namespace>]

Esse comando cancela e exclui uma tarefa de treinamento em execução no namespace especificado.