

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

# 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
```