

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

# Instalar do operador de treinamento
<a name="sagemaker-eks-operator-install"></a>

Consulte as seções a seguir para saber como instalar o operador de treinamento.

## Pré-requisitos
<a name="sagemaker-eks-operator-prerequisites"></a>

 Antes de usar o operador HyperPod de treinamento, você deve ter preenchido os seguintes pré-requisitos: 
+  [Criou um HyperPod cluster com a orquestração do Amazon EKS](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-operate-console-ui-create-cluster.html). 
+ Instalou a AMI mais recente em seu HyperPod cluster. Para obter mais informações, consulte [SageMaker HyperPod Lançamentos da AMI para o Amazon EKS](sagemaker-hyperpod-release-ami-eks.md).
+ [Instalar o Certificate Manager](https://cert-manager.io/docs/installation/).
+  [Configurar o Agente de Identidade de Pods do EKS usando o console](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-agent-setup.html). Se você quiser usar o AWS CLI, use o seguinte comando: 

  ```
  aws eks create-addon \ 
   --cluster-name {{my-eks-cluster}} \
   --addon-name eks-pod-identity-agent \
   --region {{Região da AWS}}
  ```
+ (Opcional) Se você executar seus nós de HyperPod cluster em uma VPC privada, deverá configurar endpoints de PrivateLinks VPC para a Amazon AI API (`com.amazonaws.{{aws-region}}.sagemaker.api`) e os serviços SageMaker Amazon EKS Auth (com.amazonaws). {{aws-region}}.eks-auth). Você também deve garantir que os nós do cluster estejam sendo executados com sub-redes que estão em um grupo de segurança que permite que o tráfego seja roteado pelos endpoints da VPC para se comunicar com a IA SageMaker e o Amazon EKS. Se eles não estiverem configurados corretamente, a instalação do complemento poderá falhar. Para saber mais sobre como configurar VPC endpoints, consulte Criar [um VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) endpoint.

## Instalar do operador de treinamento
<a name="sagemaker-eks-operator-install-operator"></a>

 Agora você pode instalar o operador de HyperPod treinamento por meio do console de SageMaker IA, do console do Amazon EKS ou com os métodos AWS CLI do console que oferecem experiências simplificadas que ajudam você a instalar o operador. O AWS CLI oferece uma abordagem programática que permite que você personalize mais de sua instalação.

Entre as duas experiências de console, a SageMaker IA fornece uma instalação com um clique, cria a função de execução do IAM, cria a associação de identidade do pod e instala o operador. A instalação do console do Amazon EKS é semelhante, mas esse método não cria automaticamente um perfil de execução do IAM. Durante esse processo, opte por criar um perfil de execução do IAM com informações que o console preenche previamente. Por padrão, esses perfis criados só têm acesso ao cluster atual no qual você está instalando o operador. A menos que você edite as permissões do perfil para incluir outros clusters, se você remover e reinstalar o operador, deverá criar outro perfil. 

------
#### [ SageMaker AI console (recommended) ]

1. Abra o console do Amazon SageMaker AI em [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Acesse a página de detalhes do seu cluster.

1. Na guia **Painel**, localize o complemento chamado **operador de SageMaker HyperPod treinamento da Amazon** e escolha **instalar**. Durante o processo de instalação, a SageMaker IA cria uma função de execução do IAM com permissões semelhantes às da política [ AmazonSageMakerHyperPodTrainingOperatorAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerHyperPodTrainingOperatorAccess.html)gerenciada e cria uma associação de identidade de pod entre seu cluster Amazon EKS e sua nova função de execução.

------
#### [ Amazon EKS console ]

**nota**  
Se você instalar o complemento por meio do cluster Amazon EKS, primeiro certifique-se de ter marcado seu HyperPod cluster com o par de valores-chave. `SageMaker:true` Do contrário, a instalação falhará.

1. Abra o console do Amazon EKS em [https://console.aws.amazon.com/eks/home\#/clusters](https://console.aws.amazon.com/eks/home#/clusters).

1. Acesse seu cluster do EKS, escolha **Complementos** e selecione **Obter mais complementos**.

1. Escolha o operador SageMaker HyperPod de treinamento da Amazon e, em seguida, escolha **Avançar**.

1. Em **Versão**, o console usa como padrão a versão mais recente, que recomendamos que você use.

1. Em **Acesso a complementos**, escolha um perfil do IAM de Identidade de Pods para usar com o complemento do operador de treinamento. Se você ainda não tiver um perfil, escolha **Criar perfil recomendado** para criar um.

1. Durante esse processo de criação da função, o console do IAM preenche previamente todas as informações necessárias, como o caso de uso, a política [ AmazonSageMakerHyperPodTrainingOperatorAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerHyperPodTrainingOperatorAccess.html)gerenciada e outras permissões necessárias, o nome da função e a descrição. Ao seguir as etapas, analise as informações e escolha **Criar perfil**.

1. No console EKS, analise as configurações do complemento e escolha **Criar**.

------
#### [ CLI ]

1. Certifique-se de que a função de execução do IAM para seu HyperPod cluster tenha uma relação de confiança que permita ao EKS Pod Identity assumir a função ou [criar uma nova função do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html) com a seguinte política de confiança. Ou você pode usar o console do Amazon EKS para instalar o complemento, o qual cria um perfil recomendado.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowEksAuthToAssumeRoleForPodIdentity",
         "Effect": "Allow",
         "Principal": {
           "Service": "pods.eks.amazonaws.com"
         },
         "Action": [
           "sts:AssumeRole",
           "sts:TagSession",
           "eks-auth:AssumeRoleForPodIdentity"
         ]
       }
     ]
   }
   ```

------

1.  Anexe a [política AmazonSageMakerHyperPodTrainingOperatorAccess gerenciada](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerHyperPodTrainingOperatorAccess.html) à sua função criada. 

1.  [Em seguida, crie uma associação de Identidade de Pods entre o cluster do EKS, o perfil do IAM e o novo perfil do IAM](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html).

   ```
   aws eks create-pod-identity-association \
   --cluster-name {{my-eks-cluster}} \
   --role-arn {{ARN of your execution role}} \
   --namespace aws-hyperpod \
   --service-account hp-training-operator-controller-manager \
   --region {{Região da AWS}}
   ```

1.  Depois de concluir o processo, você pode usar a ListPodIdentityAssociations operação para ver a associação que você criou. A resposta de exemplo a seguir pode dar uma ideia dessa associação. 

   ```
   aws eks list-pod-identity-associations --cluster-name my-eks-cluster
   {
       "associations": [{
           "clusterName": "{{my-eks-cluster}}",
           "namespace": "aws-hyperpod",
           "serviceAccount": "hp-training-operator-controller-manager",
           "associationArn": "arn:aws:eks:us-east-2:123456789012:podidentityassociation/my-hyperpod-cluster/a-1a2b3c4d5e6f7g8h9",
           "associationId": "{{a-1a2b3c4d5e6f7g8h9}}"
       }]
   }
   ```

1. Para instalar o operador de treinamento, use a operação `create-addon`. O parâmetro `--addon-version` é opcional. Se você não fornecer uma, o padrão é a versão mais recente. Para obter as versões possíveis, use a [ DescribeAddonVersions](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html)operação.

   ```
   aws eks create-addon \
     --cluster-name my-eks-cluster \
     --addon-name amazon-sagemaker-hyperpod-training-operator \
     --resolve-conflicts OVERWRITE
   ```

------

Se você já tem o operador de treinamento instalado em seu HyperPod cluster, você pode atualizar o complemento EKS para a versão desejada. Se você quiser usar [treinamento sem pontos de verificação ou treinamento](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless.html) [elástico](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-elastic-training.html), considere o seguinte:
+ Tanto o treinamento sem ponto de verificação quanto o treinamento elástico exigem que o complemento EKS esteja na versão 1.2.0 ou superior.
+ O operador de SageMaker HyperPod treinamento da Amazon mantém a compatibilidade com versões anteriores de qualquer versão complementar do EKS, para que você possa fazer o upgrade de qualquer versão complementar para a 1.2.0 ou superior.
+ Se você fizer o downgrade das versões 1.2.0 ou superior para uma versão inferior, deverá primeiro excluir os trabalhos existentes antes do downgrade e reenviar os trabalhos após a conclusão do downgrade.

------
#### [ Amazon EKS Console ]

1. Abra o console do Amazon EKS em [https://console.aws.amazon.com/eks/home\#/clusters](https://console.aws.amazon.com/eks/home#/clusters).

1. Acesse seu cluster EKS e escolha **Add-ons.** Em seguida, escolha o complemento do operador SageMaker HyperPod de treinamento da Amazon e escolha **Editar**.

1. No menu **Versão**, escolha a versão do complemento que você deseja e escolha **Salvar alterações**.

------
#### [ CLI ]

1. Primeiro, obtenha a lista das versões compatíveis do complemento para seu cluster.

   ```
   aws eks describe-addon-versions \
     --kubernetes-version $(aws eks describe-cluster --name {{my-eks-cluster}} --query 'cluster.version' --output text) \
     --addon-name amazon-sagemaker-hyperpod-training-operator \
     --query 'addons[0].addonVersions[].addonVersion' \
     --output table
   ```

1. Em seguida, atualize o complemento para a versão desejada.

   ```
   aws eks update-addon \
     --cluster-name my-eks-cluster \
     --addon-name amazon-sagemaker-hyperpod-training-operator \
     --addon-version target-version
     --resolve-conflicts OVERWRITE
   ```

------

 O operador de treinamento vem com várias opções com valores padrão que podem se adequar ao seu caso de uso. Recomendamos que você teste o operador de treinamento com valores padrão antes de alterá-los. A tabela abaixo descreve todos os parâmetros e exemplos de quando é possível configurar cada parâmetro.


| Parâmetro | Description | Padrão | 
| --- | --- | --- | 
| hpTrainingControllermanager.manager.resources.requests.CPU | Quantos processadores alocar ao controlador. | 1 | 
| hpTrainingControllermanager.manager.resources.requests.Memory | Quantidade de memória a alocar ao controlador. | 2 Gi | 
| hpTrainingControllermanager.manager.resources.limits.CPU | O limite de CPU para o controlador. | 2 | 
| hpTrainingControllermanager.manager.resources.limits.Memória | O limite de memória para o controlador. | 4Gi | 
| hpTrainingControllerManager.nodeSelector | Seletor de nós para os pods do controlador. | O comportamento padrão é selecionar nós com o rótulo sagemaker.amazonaws.com/compute-type: "HyperPod". | 

## HyperPod agente elástico
<a name="sagemaker-eks-operator-elastic-agent"></a>

O agente HyperPod elástico é uma extensão de [PyTorch's ElasticAgent](https://docs.pytorch.org/docs/stable/elastic/agent.html). Ele orquestra os ciclos de vida dos trabalhadores de treinamento em cada contêiner e se comunica com o operador de treinamento. HyperPod Para usar o operador de HyperPod treinamento, você deve primeiro instalar o agente HyperPod elástico em sua imagem de treinamento antes de poder enviar e executar trabalhos usando o operador. A seguir é apresentado um arquivo do Docker que instala o agente elástico e o usa `hyperpodrun` para criar o inicializador de tarefas.

**nota**  
Tanto o [treinamento sem ponto de verificação](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless.html) quanto o [treinamento elástico](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-elastic-training.html) exigem que você use o agente HyperPod elástico versão 1.1.0 ou superior.

```
RUN pip install hyperpod-elastic-agent

ENTRYPOINT ["entrypoint.sh"]
# entrypoint.sh
...
hyperpodrun --nnodes={{node_count}} --nproc-per-node={{proc_count}} \
            --rdzv-backend hyperpod \ # Optional
            --inprocess-restart \ # Optional (in-process fault recovery with checkpointless training)
            ... # Other torchrun args
            # pre-traing arg_group
            --pre-train-script pre.sh --pre-train-args "pre_1 pre_2 pre_3" \
            # post-train arg_group
            --post-train-script post.sh --post-train-args "post_1 post_2 post_3" \
            {{training.py}} --script-args
```

Agora você pode enviar tarefas com o `kubectl`.

### HyperPod argumentos do agente elástico
<a name="sagemaker-eks-operator-elastic-agent-args"></a>

 O agente HyperPod elástico suporta todos os argumentos originais e adiciona alguns argumentos adicionais. A seguir estão todos os argumentos disponíveis no agente HyperPod elástico. Para obter mais informações sobre PyTorch o Elastic Agent, consulte a [documentação oficial](https://docs.pytorch.org/docs/stable/elastic/agent.html). 


| Argumento | Description | Valor padrão | 
| --- | --- | --- | 
| --shutdown-signal | Sinal a ser enviado aos operadores para desligamento (SIGTERM ou SIGKILL) | “SIGKILL” | 
| --shutdown-timeout | Tempo limite em segundos entre o sinal de desligamento e os sinais SIGKILL | 15 | 
| --server-host | Endereço do servidor do agente | “0.0.0.0” | 
| --server-port | Porta do servidor do agente | 8080 | 
| --server-log-level | Nível de log do servidor do agente | “info” | 
| --server-shutdown-timeout | Tempo limite de desligamento do servidor em segundos | 300 | 
| --pre-train-script | Caminho para o script de pré-treinamento | Nenhum | 
| --pre-train-args | Argumentos para o script de pré-treinamento | Nenhum | 
| --post-train-script | Caminho para o script de pós-treinamento | Nenhum | 
| --post-train-args | Argumentos para o script de pós-treinamento | Nenhum | 
| --inprocess-restart | Sinalizador especificando se o recurso inprocess\_restart deve ser usado | FALSE | 
| --em processamento - tempo limite | Tempo em segundos em que o agente espera que os trabalhadores atinjam uma barreira de sincronização antes de acionar uma reinicialização no nível do processo. | Nenhum | 

## Governança de tarefas (opcional)
<a name="sagemaker-eks-operator-task-governance"></a>

O operador de treinamento é integrado à [governança de HyperPod tarefas](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-operate-console-ui-governance), um sistema de gerenciamento robusto projetado para simplificar a alocação de recursos e garantir a utilização eficiente dos recursos computacionais entre equipes e projetos para seus clusters do Amazon EKS. Para configurar a governança de HyperPod tarefas, consulte[Configuração para governança de SageMaker HyperPod tarefas](sagemaker-hyperpod-eks-operate-console-ui-governance-setup.md). 

**nota**  
Ao instalar o complemento de governança de HyperPod tarefas, você deve usar a versão v1.3.0-eksbuild.1 ou superior.

Ao enviar um trabalho, inclua o nome da fila e os rótulos `hyperpod-ns-{{team-name}}-localqueue` e `{{priority-class}}-name-priority` da classe prioritária. Por exemplo, se você estiver usando o Kueue, os rótulos serão os seguintes:
+ kueue.x-k8s.io/nome da fila: hyperpod-ns- -localqueue {{team-name}}
+ kueue.x-k8s.io/priority-class: -name-priority {{priority-class}}

Confira o seguinte exemplo para ver como o arquivo de configuração se apresenta:

```
apiVersion: sagemaker.amazonaws.com/v1
kind: HyperPodPytorchJob
metadata:
  name: hp-task-governance-sample
  namespace: hyperpod-ns-{{team-name}}
  labels:
    kueue.x-k8s.io/queue-name: hyperpod-ns-{{team-name}}-localqueue
    kueue.x-k8s.io/priority-class: {{priority-class}}-priority
spec:
  nprocPerNode: "1"
  runPolicy:
    cleanPodPolicy: "None"
  replicaSpecs: 
    - name: pods
      replicas: 4
      spares: 2
      template:
        spec:
          containers:
            - name: ptjob
              image: XXXX
              imagePullPolicy: Always
              ports:
                - containerPort: 8080
              resources:
                requests:
                  cpu: "2"
```

Em seguida, use o comando kubectl a seguir para aplicar o arquivo YAML.

```
kubectl apply -f task-governance-job.yaml
```

## Kueue (opcional)
<a name="sagemaker-eks-operator-kueue"></a>

Embora você possa executar tarefas diretamente, sua organização também pode integrar o operador de treinamento ao Kueue para alocar recursos e agendar tarefas. Siga as etapas abaixo para instalar o Kueue em seu HyperPod cluster.

1. Siga o guia de instalação na [documentação oficial do Kueue](https://kueue.sigs.k8s.io/docs/installation/#install-a-custom-configured-released-version). Ao chegar à etapa de configuração `controller_manager_config.yaml`, adicione a seguinte configuração:

   ```
   externalFrameworks:
   - "HyperPodPytorchJob.v1.sagemaker.amazonaws.com"
   ```

1. Siga o restante das etapas no guia de instalação oficial. Depois de concluir a instalação do Kueue, você pode criar algumas filas de amostra com o comando `kubectl apply -f sample-queues.yaml`. Use o arquivo YAML a seguir.

   ```
   apiVersion: kueue.x-k8s.io/v1beta1
   kind: ClusterQueue
   metadata:
     name: cluster-queue
   spec:
     namespaceSelector: {}
     preemption:
       withinClusterQueue: LowerPriority
     resourceGroups:
     - coveredResources:
       - cpu
       - nvidia.com/gpu
       - pods
       flavors:
       - name: default-flavor
         resources:
         - name: cpu
           nominalQuota: 16
         - name: nvidia.com/gpu
           nominalQuota: 16
         - name: pods
           nominalQuota: 16
   ---
   apiVersion: kueue.x-k8s.io/v1beta1
   kind: LocalQueue
   metadata:
     name: user-queue
     namespace: default
   spec:
     clusterQueue: cluster-queue
   ---
   apiVersion: kueue.x-k8s.io/v1beta1
   kind: ResourceFlavor
   metadata:
     name: default-flavor
   ---
   apiVersion: kueue.x-k8s.io/v1beta1
   description: High priority
   kind: WorkloadPriorityClass
   metadata:
     name: high-priority-class
   value: 1000
   ---
   apiVersion: kueue.x-k8s.io/v1beta1
   description: Low Priority
   kind: WorkloadPriorityClass
   metadata:
     name: low-priority-class
   value: 500
   ```