

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Execução de trabalhos em SageMaker HyperPod clusters orquestrados pelo Amazon EKS
<a name="sagemaker-hyperpod-eks-run-jobs"></a>

Os tópicos a seguir fornecem procedimentos e exemplos de acesso a nós de computação e execução de cargas de trabalho de ML em clusters provisionados SageMaker HyperPod orquestrados com o Amazon EKS. Dependendo de como você configurou o ambiente em seu HyperPod cluster, há muitas maneiras de executar cargas de trabalho de ML em HyperPod clusters.

**nota**  
Ao executar trabalhos por meio da SageMaker HyperPod CLI ou do kubectl, HyperPod pode rastrear a utilização da computação (horas de GPU/CPU) em namespaces (equipes). Essas métricas aumentam a eficácia dos relatórios de uso, que fornecem:  
Visibilidade sobre o consumo de recursos alocados e tomados emprestados.
Informações sobre a utilização de recursos pelas equipes para auditoria (até 180 dias).
Atribuição de custos alinhada a políticas de governança de tarefas.
Para utilizar os relatórios de uso, você deve instalar a infraestrutura de relatórios de uso. É altamente recomendável configurar a [governança de tarefas](sagemaker-hyperpod-eks-operate-console-ui-governance.md) para impor cotas de computação e permitir a atribuição granular de custos.  
Para obter mais informações sobre como configurar e gerar relatórios de uso, consulte [Relatar o uso de computação em HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-usage-reporting.html).

**dica**  
Para uma experiência prática e orientação sobre como configurar e usar um SageMaker HyperPod cluster orquestrado com o Amazon EKS, recomendamos fazer este workshop de [suporte do Amazon EKS](https://catalog.us-east-1.prod.workshops.aws/workshops/2433d39e-ccfe-4c00-9d3d-9917b729258e). SageMaker HyperPod

Os usuários de cientistas de dados podem treinar modelos básicos usando o conjunto de clusters EKS como orquestrador do cluster. SageMaker HyperPod Os cientistas utilizam a [SageMaker HyperPod CLI](https://github.com/aws/sagemaker-hyperpod-cli) e os `kubectl` comandos nativos para encontrar SageMaker HyperPod clusters disponíveis, enviar trabalhos de treinamento (Pods) e gerenciar suas cargas de trabalho. A SageMaker HyperPod CLI permite o envio de trabalhos usando um arquivo de esquema de trabalho de treinamento e fornece recursos para listagem, descrição, cancelamento e execução de trabalhos. Os cientistas podem usar o [Kubeflow Training Operator](https://www.kubeflow.org/docs/components/training/overview/) de acordo com as cotas de computação gerenciadas e gerenciadas pela HyperPod [SageMaker IA MLflow para gerenciar experimentos de ML e execuções](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html) de treinamento. 

**Topics**
+ [Instalando a SageMaker HyperPod CLI](sagemaker-hyperpod-eks-run-jobs-access-nodes.md)
+ [SageMaker HyperPod Comandos CLI](sagemaker-hyperpod-eks-hyperpod-cli-reference.md)
+ [Executando trabalhos usando a SageMaker HyperPod CLI](sagemaker-hyperpod-eks-run-jobs-hyperpod-cli.md)
+ [Executar trabalhos usando o `kubectl`](sagemaker-hyperpod-eks-run-jobs-kubectl.md)

# Instalando a SageMaker HyperPod CLI
<a name="sagemaker-hyperpod-eks-run-jobs-access-nodes"></a>

SageMaker HyperPod fornece o pacote de [interface de linha de SageMaker HyperPod comando](https://github.com/aws/sagemaker-hyperpod-cli) (CLI). 

1. Verifique se a versão do Python em sua máquina local está entre 3.8 e 3.11.

1. [Verifique os pré-requisitos no arquivo `README` markdown no pacote CLI. SageMaker HyperPod ](https://github.com/aws/sagemaker-hyperpod-cli)

1. Clone o pacote SageMaker HyperPod CLI de. GitHub

   ```
   git clone https://github.com/aws/sagemaker-hyperpod-cli.git
   ```

1. Instale a SageMaker HyperPod CLI.

   ```
   cd sagemaker-hyperpod-cli && pip install .
   ```

1. Teste se a SageMaker HyperPod CLI foi instalada com êxito executando o comando a seguir. 

   ```
   hyperpod --help
   ```

**nota**  
Se você for um cientista de dados e quiser usar a SageMaker HyperPod CLI, certifique-se de que sua função do IAM esteja configurada corretamente pelos administradores do cluster seguindo as instruções em e. [Usuários do IAM para cientistas](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-cluster-user) [Como configurar controle de acesso ao Kubernetes baseado em perfil](sagemaker-hyperpod-eks-setup-rbac.md)

# SageMaker HyperPod Comandos CLI
<a name="sagemaker-hyperpod-eks-hyperpod-cli-reference"></a>

A tabela a seguir resume os comandos da SageMaker HyperPod CLI.

**nota**  
[Para obter uma referência completa da CLI, consulte [README](https://github.com/aws/sagemaker-hyperpod-cli?tab=readme-ov-file#sagemaker-hyperpod-command-line-interface) no repositório da SageMaker HyperPod CLI. GitHub](https://github.com/aws/sagemaker-hyperpod-cli)


| SageMaker HyperPod Comando CLI | Entidade  | Description | 
| --- | --- | --- | 
| hyperpod get-clusters | cluster/acesso | Lista todos os clusters para os quais o usuário foi habilitado com permissões do IAM para enviar cargas de trabalho de treinamento. Fornece o instantâneo atual de todas as instâncias disponíveis que não estão executando nenhuma carga de trabalho ou trabalho junto com a capacidade máxima, agrupando por status de verificação de integridade (ex:) BurnInPassed | 
| hyperpod connect-cluster | cluster/acesso | Configura kubectl para operar no HyperPod cluster e namespace especificados | 
| hyperpod start-job  | trabalho | Envia o trabalho para o cluster de destino - o nome do trabalho será exclusivo no nível do namespace - Os usuários poderão substituir a especificação yaml passando-a como argumentos da CLI | 
| hyperpod get-job | trabalho | Exibir metadados do trabalho enviado | 
| hyperpod list-jobs | trabalho | Lista todos os trabalhos conectados cluster/namespace aos quais o usuário foi adicionado com permissões do IAM para enviar cargas de trabalho de treinamento | 
| hyperpod cancel-job | trabalho | Interrompe e exclui o trabalho e cede os recursos computacionais subjacentes. Este trabalho não pode ser retomado novamente. Um novo trabalho precisa ser iniciado, se necessário. | 
| hyperpod list-pods | pod | Lista todos os pods em um determinado trabalho em um namespace. | 
| hyperpod get-log | pod | Recupera os logs de um pod específico em um trabalho especificado. | 
| hyperpod exec | pod | Executa o comando bash no shell dos pods especificados e publica a saída. | 
| hyperpod --help | utility | Lista todos os comandos compatíveis. | 

# Executando trabalhos usando a SageMaker HyperPod CLI
<a name="sagemaker-hyperpod-eks-run-jobs-hyperpod-cli"></a>

Para executar trabalhos, certifique-se de ter instalado o Kubeflow Training Operator nos clusters EKS. Para obter mais informações, consulte [Instalar pacotes no cluster do Amazon EKS usando o Helm](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md).

Execute o `hyperpod get-cluster` comando para obter a lista de HyperPod clusters disponíveis.

```
hyperpod get-clusters
```

Execute o `hyperpod connect-cluster` para configurar a SageMaker HyperPod CLI com o cluster EKS orquestrando o cluster. HyperPod 

```
hyperpod connect-cluster --cluster-name <hyperpod-cluster-name>
```

Use o comando `hyperpod start-job` para executar um trabalho. O comando a seguir mostra o comando com as opções necessárias. 

```
hyperpod start-job \
    --job-name <job-name>
    --image <docker-image-uri>
    --entry-script <entrypoint-script>
    --instance-type <ml.instance.type>
    --node-count <integer>
```

O comando `hyperpod start-job` também vem com várias opções, como retomada automática de tarefas e agendamento de tarefas.

## Ativando a retomada automática do trabalho
<a name="sagemaker-hyperpod-eks-run-jobs-hyperpod-cli-enable-auto-resume"></a>

O comando `hyperpod start-job` também tem as seguintes opções para especificar a retomada automática do trabalho: Para permitir que a retomada automática de tarefas funcione com os recursos de resiliência do SageMaker HyperPod nó, você deve definir o valor da `restart-policy` opção como. `OnFailure` O trabalho deve ser executado sob o namespace `kubeflow` ou com um namespace prefixado com `hyperpod`.
+ [--auto-resume <bool>] \$1Optional, habilita a retomada automática do trabalho após falhas; o padrão é false.
+ [--max-retry <int>] \$1Optional, se a retomada automática for verdadeira, o valor padrão de repetição máxima será 1 se não for especificado.
+ [--restart-policy<enum>] \$1Optional, política de reinicialização. PyTorchJob Os valores disponíveis são `Always`, `OnFailure`, `Never` ou `ExitCode`. O valor padrão é `OnFailure`. 

```
hyperpod start-job \
    ... // required options \
    --auto-resume true \
    --max-retry 3 \
    --restart-policy OnFailure
```

## Executar trabalhos com opções de agendamento
<a name="sagemaker-hyperpod-eks-run-jobs-hyperpod-cli-scheduling"></a>

O comando `hyperpod start-job` tem as seguintes opções para configurar o trabalho com mecanismos de enfileiramento: 

**nota**  
Você precisa do [Kueue](https://kueue.sigs.k8s.io/docs/overview/) instalado no cluster do EKS. Se não tiver instalado, siga as instruções em [Configuração para governança de SageMaker HyperPod tarefas](sagemaker-hyperpod-eks-operate-console-ui-governance-setup.md).
+ [--scheduler-type <enum>] \$1Optional, especifique o tipo de agendador. O padrão é `Kueue`.
+ [--queue-name <string>] \$1Optional, especifique o nome da [fila local](https://kueue.sigs.k8s.io/docs/concepts/local_queue/) ou [fila de cluster](https://kueue.sigs.k8s.io/docs/concepts/cluster_queue/) que você deseja enviar com o trabalho. A fila deve ser criada pelos administradores do cluster usando `CreateComputeQuota`.
+ [--priority <string>] \$1Optional, especifique o nome da [classe de prioridade do workload](https://kueue.sigs.k8s.io/docs/concepts/workload_priority_class/), que deve ser criada pelos administradores do cluster.

```
hyperpod start-job \
    ... // required options
    --scheduler-type Kueue \
    --queue-name high-priority-queue \
    --priority high
```

## Executar trabalhos por meio de um arquivo de configuração
<a name="sagemaker-hyperpod-eks-run-jobs-hyperpod-cli-from-config"></a>

Como alternativa, você pode criar um arquivo de configuração do trabalho contendo todos os parâmetros exigidos pelo trabalho e, em seguida, passar esse arquivo de configuração para o comando `hyperpod start-job` usando a opção --config-file. Neste caso:

1. Crie o arquivo de configuração do trabalho com os parâmetros necessários. Consulte o arquivo de configuração do trabalho no GitHub repositório SageMaker HyperPod CLI para obter um arquivo de configuração de [linha de base](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-run-jobs-hyperpod-cli.html#sagemaker-hyperpod-eks-hyperpod-cli-from-config).

1. Inicie o trabalho usando o arquivo de configuração da seguinte maneira:

   ```
   hyperpod start-job --config-file /path/to/test_job.yaml
   ```

**dica**  
Para obter uma lista completa dos parâmetros do `hyperpod start-job` comando, consulte a seção [Submitting a Job](https://github.com/aws/sagemaker-hyperpod-cli?tab=readme-ov-file#submitting-a-job) no `README.md` repositório SageMaker HyperPod GitHub CLI.

# Executar trabalhos usando o `kubectl`
<a name="sagemaker-hyperpod-eks-run-jobs-kubectl"></a>

**nota**  
A retoma automática da tarefa de treinamento requer o Kubeflow Training Operator versão `1.7.0`, `1.8.0` ou `1.8.1`.

Observe que você deve instalar o Kubeflow Training Operator nos clusters usando um chart do Helm. Para obter mais informações, consulte [Instalar pacotes no cluster do Amazon EKS usando o Helm](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md). Verifique se o ambiente de gerenciamento do Kubeflow Training Operator está configurado corretamente executando o comando a seguir.

```
kubectl get pods -n kubeflow
```

Esse comando retorna uma saída semelhante à seguinte:

```
NAME                                             READY   STATUS    RESTARTS   AGE
training-operator-658c68d697-46zmn               1/1     Running   0          90s
```

**Para enviar um trabalho de treinamento**

Para executar um trabalho de treinamento, prepare o arquivo de configuração do trabalho e execute o comando [https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) da seguinte forma:

```
kubectl apply -f /path/to/training_job.yaml
```

**Como descrever um trabalho de treinamento**

Para recuperar os detalhes do trabalho enviado ao cluster do EKS, use o comando a seguir. Ele retorna informações do trabalho, como o tempo de envio do trabalho, o tempo de conclusão, o status do trabalho e os detalhes da configuração.

```
kubectl get -o yaml training-job -n kubeflow
```

**Para interromper um trabalho de treinamento e excluir recursos do EKS**

Para interromper um trabalho de treinamento, use kubectl delete. Veja a seguir um exemplo de como interromper o trabalho de treinamento criado a partir do arquivo de configuração `pytorch_job_simple.yaml`.

```
kubectl delete -f /path/to/training_job.yaml 
```

Essa saída deve retornar o seguinte resultado:

```
pytorchjob.kubeflow.org "training-job" deleted
```

**Para ativar a retomada automática do trabalho**

SageMaker HyperPod oferece suporte à funcionalidade de retomada automática de tarefas do Kubernetes, integrando-se ao plano de controle do Kubeflow Training Operator.

Certifique-se de que haja nós suficientes no cluster que tenham passado pela verificação de SageMaker HyperPod integridade. Os nós devem ter a taint `sagemaker.amazonaws.com/node-health-status` definida como `Schedulable`. É recomendável incluir um seletor de nós no arquivo YAML do trabalho para selecionar nós com a configuração apropriada da seguinte forma:

```
sagemaker.amazonaws.com/node-health-status: Schedulable
```

O trecho de código a seguir é um exemplo de como modificar a configuração YAML de uma tarefa do Kubeflow para ativar a funcionalidade de retomada automática da PyTorch tarefa. Você precisa adicionar duas anotações e definir `restartPolicy` da seguinte `OnFailure` forma:

```
apiVersion: "kubeflow.org/v1"
kind: PyTorchJob 
metadata:
    name: pytorch-simple
    namespace: kubeflow
    annotations: { // config for job auto resume
      sagemaker.amazonaws.com/enable-job-auto-resume: "true"
      sagemaker.amazonaws.com/job-max-retry-count: "2"
    }
spec:
  pytorchReplicaSpecs:
  ......
  Worker:
      replicas: 10
      restartPolicy: OnFailure
      template:
          spec:
              nodeSelector:
                  sagemaker.amazonaws.com/node-health-status: Schedulable
```

**Para verificar o status de retomada automática do trabalho**

Execute o comando a seguir para recuperar o status da automação.

```
kubectl describe pytorchjob -n kubeflow <job-name>
```

Dependendo dos padrões de falha, você pode ver dois padrões de reinicialização do trabalho de treinamento do Kubeflow da seguinte maneira:

**Padrão 1**:

```
Start Time:    2024-07-11T05:53:10Z
Events:
  Type     Reason                   Age                    From                   Message
  ----     ------                   ----                   ----                   -------
  Normal   SuccessfulCreateService  9m45s                  pytorchjob-controller  Created service: pt-job-1-worker-0
  Normal   SuccessfulCreateService  9m45s                  pytorchjob-controller  Created service: pt-job-1-worker-1
  Normal   SuccessfulCreateService  9m45s                  pytorchjob-controller  Created service: pt-job-1-master-0
  Warning  PyTorchJobRestarting     7m59s                  pytorchjob-controller  PyTorchJob pt-job-1 is restarting because 1 Master replica(s) failed.
  Normal   SuccessfulCreatePod      7m58s (x2 over 9m45s)  pytorchjob-controller  Created pod: pt-job-1-worker-0
  Normal   SuccessfulCreatePod      7m58s (x2 over 9m45s)  pytorchjob-controller  Created pod: pt-job-1-worker-1
  Normal   SuccessfulCreatePod      7m58s (x2 over 9m45s)  pytorchjob-controller  Created pod: pt-job-1-master-0
  Warning  PyTorchJobRestarting     7m58s                  pytorchjob-controller  PyTorchJob pt-job-1 is restarting because 1 Worker replica(s) failed.
```

**Padrão 2**: 

```
Events:
  Type    Reason                   Age    From                   Message
  ----    ------                   ----   ----                   -------
  Normal  SuccessfulCreatePod      19m    pytorchjob-controller  Created pod: pt-job-2-worker-0
  Normal  SuccessfulCreateService  19m    pytorchjob-controller  Created service: pt-job-2-worker-0
  Normal  SuccessfulCreatePod      19m    pytorchjob-controller  Created pod: pt-job-2-master-0
  Normal  SuccessfulCreateService  19m    pytorchjob-controller  Created service: pt-job-2-master-0
  Normal  SuccessfulCreatePod      4m48s  pytorchjob-controller  Created pod: pt-job-2-worker-0
  Normal  SuccessfulCreatePod      4m48s  pytorchjob-controller  Created pod: pt-job-2-master-0
```