

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

# Gerenciando clusters SageMaker HyperPod EKS usando o AWS CLI
<a name="sagemaker-hyperpod-eks-operate-cli-command"></a>

Os tópicos a seguir fornecem orientação sobre como escrever arquivos de solicitação de SageMaker HyperPod API no formato JSON e executá-los usando os AWS CLI comandos.

**Topics**
+ [Criação de um SageMaker HyperPod cluster](sagemaker-hyperpod-eks-operate-cli-command-create-cluster.md)
+ [Recuperando detalhes SageMaker HyperPod do cluster](sagemaker-hyperpod-eks-operate-cli-command-cluster-details.md)
+ [Atualizando a configuração do SageMaker HyperPod cluster](sagemaker-hyperpod-eks-operate-cli-command-update-cluster.md)
+ [Atualizando o software SageMaker HyperPod da plataforma](sagemaker-hyperpod-eks-operate-cli-command-update-cluster-software.md)
+ [Acessando os nós SageMaker HyperPod do cluster](sagemaker-hyperpod-eks-operate-access-through-terminal.md)
+ [Reduzindo a escala de um cluster SageMaker HyperPod](smcluster-scale-down.md)
+ [Excluindo um cluster SageMaker HyperPod](sagemaker-hyperpod-eks-operate-cli-command-delete-cluster.md)

# Criação de um SageMaker HyperPod cluster
<a name="sagemaker-hyperpod-eks-operate-cli-command-create-cluster"></a>

Saiba como criar SageMaker HyperPod clusters orquestrados pelo Amazon EKS usando o. AWS CLI

1. Antes de criar um SageMaker HyperPod cluster:

   1. Certifique-se de ter um cluster existente do Amazon EKS instalado e em execução. Para obter instruções sobre como criar um novo cluster do Amazon EKS, consulte [Criar um cluster do Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) no *Guia do usuário do Amazon EKS*.

   1. Instale o chart do Helm conforme as instruções em [Instalar pacotes no cluster do Amazon EKS usando o Helm](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md). Se você criar um [ SageMaker HyperPod cluster Amazon Nova](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-hp-cluster.html), precisará de um gráfico Helm separado.

1. Prepare um script de configuração de ciclo de vida e faça upload em um bucket do Amazon S3, como `s3://amzn-s3-demo-bucket/Lifecycle-scripts/base-config/`.

   Para começar rapidamente, baixe o script [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/7.sagemaker-hyperpod-eks/LifecycleScripts/base-config/on_create.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/7.sagemaker-hyperpod-eks/LifecycleScripts/base-config/on_create.sh)de amostra do GitHub repositório de treinamento distribuído AWS ome e carregue-o no bucket do S3. Você também pode incluir instruções adicionais de configuração, uma série de scripts de configuração ou comandos a serem executados durante o estágio de provisionamento do HyperPod cluster.
**Importante**  
Se você criar um [Função do IAM para SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) anexando somente a [https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-cluster.html](https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-cluster.html) gerenciada, seu cluster terá acesso aos buckets do Amazon S3 com o prefixo específico `sagemaker-`.

   Se você criar um grupo de instâncias restrito, não será necessário fazer download e executar o script de ciclo de vida. Em vez disso, você precisará executar `install_rig_dependencies.sh`. 

   Os pré-requisitos para executar o script `install_rig_dependencies.sh` são:
   + AWS O Node (CNI) e o CoreDNS devem estar habilitados. Esses são complementos EKS padrão que não são gerenciados pelo SageMaker HyperPod Helm padrão, mas podem ser facilmente ativados no console EKS em Complementos.
   +  O gráfico padrão do SageMaker HyperPod Helm deve ser instalado antes da execução desse script.

   O script `install_rig_dependencies.sh` executa as ações a seguir. 
   + `aws-node` (CNI): foi criado um Daemonset `rig-aws-node`. O `aws-node` existente foi corrigido para evitar nós RIG.
   + `coredns`: Convertido em Daemonset RIGs para suportar o uso de várias plataformas e evitar sobrecargas.
   + training-operators: atualizado com tolerâncias a taint e nodeAffinity no nó de processamento RIG para favorecer instâncias que não são RIG.
   + Elastic Fabric Adapter (EFA): atualizado para tolerar taint no nó de processamento RIG e usar imagens de contêiner corretas para cada região.

1. Prepare um arquivo de solicitação de [CreateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html)API no formato JSON. Para `ExecutionRole`, forneça o ARN do perfil do IAM que você criou com o `AmazonSageMakerClusterInstanceRolePolicy` gerenciado da seção [Função do IAM para SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod).
**nota**  
Certifique-se de que seu SageMaker HyperPod cluster seja implantado na mesma Virtual Private Cloud (VPC) do seu cluster Amazon EKS. As sub-redes e os grupos de segurança especificados na configuração do SageMaker HyperPod cluster devem permitir conectividade de rede e comunicação com o endpoint do servidor de API do cluster Amazon EKS.

   ```
   // create_cluster.json
   {
       "ClusterName": "string",
       "InstanceGroups": [{
           "InstanceGroupName": "string",
           "InstanceType": "string",
           "InstanceCount": number,
           "LifeCycleConfig": {
               "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/",
               "OnCreate": "on_create.sh"
           },
           "ExecutionRole": "string",
           "ThreadsPerCore": number,
           "OnStartDeepHealthChecks": [
               "InstanceStress", "InstanceConnectivity"
           ]
       }],
       "RestrictedInstanceGroups": [ 
         { 
            "EnvironmentConfig": { 
               "FSxLustreConfig": { 
                  "PerUnitStorageThroughput": number,
                  "SizeInGiB": number
               }
            },
            "ExecutionRole": "string",
            "InstanceCount": number,
            "InstanceGroupName": "string",
            "InstanceStorageConfigs": [ 
               { ... }
            ],
            "InstanceType": "string",
            "OnStartDeepHealthChecks": [ "string" ],
            "OverrideVpcConfig": { 
               "SecurityGroupIds": [ "string" ],
               "Subnets": [ "string" ]
            },
            "ScheduledUpdateConfig": { 
               "DeploymentConfig": { 
                  "AutoRollbackConfiguration": [ 
                     { 
                        "AlarmName": "string"
                     }
                  ],
                  "RollingUpdatePolicy": { 
                     "MaximumBatchSize": { 
                        "Type": "string",
                        "Value": number
                     },
                     "RollbackMaximumBatchSize": { 
                        "Type": "string",
                        "Value": number
                     }
                  },
                  "WaitIntervalInSeconds": number
               },
               "ScheduleExpression": "string"
            },
            "ThreadsPerCore": number,
            "TrainingPlanArn": "string"
         }
      ],
       "VpcConfig": {
           "SecurityGroupIds": ["string"],
           "Subnets": ["string"]
       },
       "Tags": [{
           "Key": "string",
           "Value": "string"
       }],
       "Orchestrator": {
           "Eks": {
               "ClusterArn": "string",
               "KubernetesConfig": {
                   "Labels": {
                       "nvidia.com/mig.config": "all-3g.40gb"
                   }
               }
           }
       },
       "NodeRecovery": "Automatic"
   }
   ```
**Grupos de instâncias flexíveis**  
Em vez de especificar uma única`InstanceType`, você pode usar o `InstanceRequirements` parâmetro para especificar vários tipos de instância para um grupo de instâncias. Observe o seguinte:  
`InstanceType`e `InstanceRequirements` são mutuamente exclusivos. Você deve especificar um ou outro, mas não os dois.
`InstanceRequirements.InstanceTypes`é uma lista ordenada que determina a prioridade do aprovisionamento. SageMaker HyperPodtenta provisionar o primeiro tipo de instância na lista e volta para os tipos subsequentes se a capacidade não estiver disponível. Você pode especificar até 20 tipos de instância, e a lista não deve conter duplicatas.
Grupos de instâncias flexíveis exigem o modo de provisionamento contínuo de nós.
O exemplo a seguir mostra um grupo de instâncias usando`InstanceRequirements`:  

   ```
   {
       "InstanceGroupName": "flexible-ig",
       "InstanceRequirements": {
           "InstanceTypes": ["ml.p5.48xlarge", "ml.p4d.24xlarge", "ml.g6.48xlarge"]
       },
       "InstanceCount": 10,
       "LifeCycleConfig": {
           "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/",
           "OnCreate": "on_create.sh"
       },
       "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster"
   }
   ```

   Observe o seguinte ao configurar para criar um novo SageMaker HyperPod cluster associado a um cluster EKS.
   + Você pode configurar até 20 grupos de instâncias sob o `InstanceGroups` parâmetro.
   + Para `Orchestator.Eks.ClusterArn`, especifique o ARN do cluster do EKS que você deseja usar como orquestrador.
   + Para `OnStartDeepHealthChecks`, adicione `InstanceStress` e `InstanceConnectivity` para ativar [Verificações de integridade profundas](sagemaker-hyperpod-eks-resiliency-deep-health-checks.md).
   + Para`NodeRecovery`, especifique `Automatic` para ativar a recuperação automática de nós. SageMaker HyperPod substitui ou reinicializa instâncias (nós) quando problemas são encontrados pelo agente de monitoramento de integridade.
   + Para o `Tags` parâmetro, você pode adicionar tags personalizadas para gerenciar o SageMaker HyperPod cluster como um AWS recurso. Você pode adicionar tags ao seu cluster da mesma forma que as adiciona em outros serviços AWS que oferecem apoio à marcação. Para saber mais sobre a marcação de recursos da AWS em geral, consulte o Guia [do usuário de AWS recursos de marcação](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html).
   + Para o parâmetro `VpcConfig`, especifique as informações da VPC usada no cluster do EKS. As sub-redes devem ser privadas.
   + Para isso`Orchestrator.Eks.KubernetesConfig.Labels`, você pode especificar opcionalmente os rótulos do Kubernetes a serem aplicados aos nós. Para habilitar o particionamento de GPU com a GPU de várias instâncias (MIG), adicione o `nvidia.com/mig.config` rótulo com o perfil MIG desejado. Por exemplo, `"nvidia.com/mig.config": "all-3g.40gb"` configura tudo GPUs com o perfil de partição 3g.40gb. Para obter mais informações sobre particionamento de GPU e perfis disponíveis, consulte. [Usando partições de GPU na Amazon SageMaker HyperPod](sagemaker-hyperpod-eks-gpu-partitioning.md)

1. Execute o comando [create-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-cluster.html) da seguinte maneira:
**Importante**  
Ao executar o comando `create-cluster` com o parâmetro `--cli-input-json`, você deve incluir o prefixo `file://` antes do caminho completo para o arquivo JSON. Esse prefixo é necessário para garantir que o AWS CLI reconheça a entrada como um caminho de arquivo. A omissão do prefixo `file://` resulta em um erro de parâmetro de análise.

   ```
   aws sagemaker create-cluster \
       --cli-input-json file://complete/path/to/create_cluster.json
   ```

   Isso deve retornar o ARN do novo cluster.
**Importante**  
Você pode usar a operação [update-cluster](https://docs.aws.amazon.com//cli/latest/reference/ecs/update-cluster.html) para remover um grupo de instâncias restritas (RIG). Quando um RIG é reduzido para 0, o sistema de arquivos FSx for Lustre não será excluído. Para remover completamente o sistema de arquivos FSx for Lustre, você deve remover completamente o RIG.   
A remoção de um RIG não excluirá nenhum artefato armazenado no bucket do Amazon S3 gerenciado pelo serviço. No entanto, você deve garantir que todos os artefatos no sistema de arquivos do FSx Lustre estejam totalmente sincronizados com o Amazon S3 antes da remoção. Recomendamos esperar pelo menos 30 minutos após a conclusão do trabalho para garantir a sincronização completa de todos os artefatos do sistema de arquivos FSx for Lustre com o bucket Amazon S3 gerenciado pelo serviço.
**Importante**  
Ao usar uma reserva de capacidade sob demanda (ODCR) integrada, você deve mapear seu grupo de instâncias para a mesma ID de zona de disponibilidade (ID AZ) da ODCR configurando `OverrideVpcConfig` com uma sub-rede na ID AZ correspondente.  
CRÍTICO: verifique a `OverrideVpcConfig` configuração antes da implantação para evitar cobranças duplicadas tanto para o ODCR quanto para a capacidade sob demanda.

# Recuperando detalhes SageMaker HyperPod do cluster
<a name="sagemaker-hyperpod-eks-operate-cli-command-cluster-details"></a>

Saiba como recuperar detalhes SageMaker HyperPod do cluster usando o. AWS CLI

## Descrever um cluster
<a name="sagemaker-hyperpod-eks-operate-cli-command-describe-cluster"></a>

Execute [describe-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-cluster.html) para verificar o status do cluster. Você pode especificar o nome ou o ARN do cluster.

```
aws sagemaker describe-cluster --cluster-name your-hyperpod-cluster
```

Depois que o status do cluster for alterado para **InService**, avance para a próxima etapa. Usando essa API, você também pode recuperar mensagens de falha da execução de outras operações de HyperPod API.

## Listar detalhes dos nós do cluster
<a name="sagemaker-hyperpod-eks-operate-cli-command-list-cluster-nodes"></a>

Execute [list-cluster-nodes](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-cluster-nodes.html)para verificar as principais informações dos nós do cluster.

```
aws sagemaker list-cluster-nodes --cluster-name your-hyperpod-cluster
```

Isso retorna uma resposta e `InstanceId` é o que você precisa usar para fazer login (usar`aws ssm`) nelas.

## Descrever detalhes de um nó de cluster
<a name="sagemaker-hyperpod-eks-operate-cli-command-describe-cluster-node"></a>

Execute [describe-cluster-node](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-cluster-node.html)para recuperar detalhes de um nó do cluster. Você pode obter o ID do nó do cluster na list-cluster-nodes saída. Você pode especificar o nome ou o ARN do cluster.

```
aws sagemaker describe-cluster-node \
    --cluster-name your-hyperpod-cluster \
    --node-id i-111222333444555aa
```

## Listar clusters
<a name="sagemaker-hyperpod-eks-operate-cli-command-list-clusters"></a>

Execute [list-clusters](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-clusters.html) para listar todos os clusters em sua conta.

```
aws sagemaker list-clusters
```

Você também pode adicionar sinalizadores adicionais para filtrar a lista de clusters. Para saber mais sobre o que esse comando executa em baixo nível e sinalizadores adicionais para filtragem, consulte a referência da [ListClusters](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListClusters.html)API.

# Atualizando a configuração do SageMaker HyperPod cluster
<a name="sagemaker-hyperpod-eks-operate-cli-command-update-cluster"></a>

Execute [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) para atualizar a configuração de um cluster.

**nota**  
Considerações importantes:  
Você não pode alterar as informações do cluster EKS que seu HyperPod cluster está associado após a criação do cluster. 
Se verificações profundas de integridade estiverem sendo executadas no cluster, essa API não funcionará conforme o esperado. Você pode encontrar uma mensagem de erro informando que verificações profundas de integridade estão em andamento. Para atualizar o cluster, você deve esperar até que as verificações profundas de integridade sejam concluídas.

1. Crie um arquivo de solicitação de API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html) no formato JSON. Certifique-se de especificar o nome correto do cluster e do grupo de instâncias a serem atualizados. Para cada grupo de instâncias, você pode alterar o tipo de instância, o número de instâncias, o script do ponto de entrada da configuração do ciclo de vida e o caminho para o script.
**nota**  
Você pode usar o `UpdateCluster` para reduzir ou remover grupos de instâncias inteiros do seu SageMaker HyperPod cluster. Para obter instruções adicionais sobre como reduzir a escala verticalmente de grupos de instâncias ou excluí-las, consulte [Reduzindo a escala de um cluster SageMaker HyperPod](smcluster-scale-down.md).

   1. Para `ClusterName`, escolha o nome do cluster que deseja atualizar.

   1. Para `InstanceGroupName`

      1. Para atualizar um grupo de instâncias existente, especifique o nome do grupo de instâncias que você quer atualizar.

      1. Para adicionar um novo grupo de instâncias, especifique um novo nome que não existe no seu cluster.

   1. Para `InstanceType`

      1. Para atualizar um grupo de instâncias existente, você precisa corresponder ao grupo o tipo de instância especificado inicialmente.

      1. Para adicionar um novo grupo de instâncias, especifique o tipo de instância com o qual você quer configurar o grupo.

      Para grupos de instâncias que usam `InstanceRequirements` em vez de`InstanceType`, você pode adicionar ou remover tipos de instância da `InstanceTypes` lista. No entanto, você não pode remover um tipo de instância que tenha nós ativos em execução nela. Você também não pode alternar entre `InstanceType` e `InstanceRequirements` ao atualizar um grupo de instâncias existente. `InstanceType`e `InstanceRequirements` são mutuamente exclusivos.

   1. Para `InstanceCount`

      1. Para atualizar um grupo de instâncias existente, especifique um número inteiro que corresponda ao número desejado de instâncias. Você pode fornecer um valor maior ou menor (até 0) para aumentar ou reduzir a escala verticalmente do grupo de instâncias.

      1. Para adicionar um novo grupo de instâncias, especifique um número inteiro maior ou igual a 1. 

   1. Para `LifeCycleConfig`, você pode alterar os valores de ambos `SourceS3Uri` e `OnCreate` conforme quiser atualizar o grupo de instâncias.

   1. Para `ExecutionRole`

      1. Para atualizar um grupo de instâncias existente, continue usando a mesmo perfil do IAM que você anexou durante a criação do cluster.

      1. Para adicionar um novo grupo de instâncias, especifique um perfil do IAM que você deseja anexar.

   1. Para `ThreadsPerCore`

      1. Para atualizar um grupo de instâncias existente, continue usando o mesmo valor especificado durante a criação do cluster.

      1. Para adicionar um novo grupo de instâncias, você pode escolher qualquer valor entre as opções permitidas por tipo de instância. Para obter mais informações, pesquise o tipo de instância e consulte a coluna **Threads válidos por núcleo** na tabela de referência em [núcleos de CPU e segmentos por núcleo de CPU por tipo de instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cpu-options-supported-instances-values.html) no *Guia do usuário do Amazon EC2*.

   1. Para `OnStartDeepHealthChecks`, adicione `InstanceStress` e `InstanceConnectivity` para ativar [Verificações de integridade profundas](sagemaker-hyperpod-eks-resiliency-deep-health-checks.md).

   1. Para`NodeRecovery`, especifique `Automatic` para ativar a recuperação automática de nós. SageMaker HyperPod substitui ou reinicializa instâncias (nós) quando problemas são encontrados pelo agente de monitoramento de integridade.

   O trecho de código a seguir é um modelo de arquivo de solicitação JSON que você pode usar. Para obter mais informações sobre a sintaxe e os parâmetros da solicitação dessa API, consulte a referência da [UpdateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html)API.

   ```
   // update_cluster.json
   {
       // Required
       "ClusterName": "name-of-cluster-to-update",
       // Required
       "InstanceGroups": [{
           "InstanceGroupName": "string",
           "InstanceType": "string",
           "InstanceCount": number,
           "LifeCycleConfig": {
               "SourceS3Uri": "string",
               "OnCreate": "string"
           },
           "ExecutionRole": "string",
           "ThreadsPerCore": number,
           "OnStartDeepHealthChecks": [
               "InstanceStress", "InstanceConnectivity"
           ]
       }],
       "NodeRecovery": "Automatic"
   }
   ```

1. Execute o comando `update-cluster` a seguir para obter o ARN do stream. 

   ```
   aws sagemaker update-cluster \
       --cli-input-json file://complete/path/to/update_cluster.json
   ```

# Atualizando o software SageMaker HyperPod da plataforma
<a name="sagemaker-hyperpod-eks-operate-cli-command-update-cluster-software"></a>

Ao criar seu SageMaker HyperPod cluster, SageMaker HyperPod seleciona uma Amazon Machine Image (AMI) correspondente à versão Kubernetes do seu cluster Amazon EKS.

Execute [update-cluster-software](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster-software.html)para atualizar os clusters existentes com os patches de software e segurança fornecidos pelo SageMaker HyperPod serviço. Para `--cluster-name`, especifique o nome ou o ARN do cluster a ser atualizado.

**Importante**  
Quando essa API é chamada, SageMaker HyperPod não drena nem redistribui os trabalhos (pods) em execução nos nós. Certifique-se de verificar se há algum trabalho em execução nos nós antes de chamar essa API.
O processo de aplicação de patches substitui o volume raiz pela AMI atualizada, o que significa que seus dados anteriores armazenados no volume raiz da instância serão perdidos. Certifique-se de fazer backup dos dados do volume raiz da instância no Amazon S3 ou no Amazon FSx for Lustre.
Todos os nós do cluster passam por um tempo de inatividade (os nós aparecem como `<NotReady>` na saída de`kubectl get node`) enquanto a correção está em andamento. Recomendamos que você encerre todas as workloads antes da aplicação do patch e as retome após a conclusão do patch.   
Se o patch de segurança falhar, você poderá recuperar as mensagens de falha executando a API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeCluster.html) conforme as instruções em [Descrever um cluster](sagemaker-hyperpod-eks-operate-cli-command-cluster-details.md#sagemaker-hyperpod-eks-operate-cli-command-describe-cluster).

```
aws sagemaker update-cluster-software --cluster-name your-hyperpod-cluster
```

**Atualizações contínuas com grupos de instâncias flexíveis**  
Para grupos de instâncias que usam `InstanceRequirements` com vários tipos de instância, as atualizações contínuas distribuem cada tipo de instância proporcionalmente entre os lotes. Por exemplo, se um grupo de instâncias tiver 100 instâncias (10 P5 e 90 G6) e você configurar um tamanho de lote de 10%, cada lote conterá 1 instância P5 e 9 instâncias G6.

 Ao chamar a `UpdateClusterSoftware` API, SageMaker HyperPod atualize a versão Kubernetes dos nós selecionando a mais recente [SageMaker HyperPod DLAMI](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami) com base na versão Kubernetes do seu cluster Amazon EKS. Em seguida, ele executa os scripts de ciclo de vida no bucket do Amazon S3 que você especificou durante a criação ou atualização do cluster. 

Você pode verificar a versão kubelet de um nó executando o comando `kubectl describe node`.

A versão Kubernetes dos nós do SageMaker HyperPod cluster não é atualizada automaticamente quando você atualiza a versão do cluster do Amazon EKS. Depois de atualizar a versão do Kubernetes para seu cluster Amazon EKS, você deve usar a `UpdateClusterSoftware` API para atualizar seus nós do SageMaker HyperPod cluster para a mesma versão do Kubernetes.

 É recomendável atualizar seu SageMaker HyperPod cluster após atualizar seus nós do Amazon EKS e evitar ter mais de uma diferença de versão entre a versão do cluster do Amazon EKS e a versão dos nós do SageMaker HyperPod cluster.

A equipe SageMaker HyperPod de serviço lança regularmente novos [SageMaker HyperPod DLAMI](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami) s para aprimorar a segurança e melhorar a experiência do usuário. Recomendamos que você sempre continue atualizando para o SageMaker HyperPod DLAMI mais recente. Para futuras atualizações SageMaker HyperPod do DLAMI para patches de segurança, entre em contato com. [Notas SageMaker HyperPod de lançamento da Amazon](sagemaker-hyperpod-release-notes.md)

**nota**  
Você só pode executar essa API de forma programática. A funcionalidade de correção não está implementada na interface do usuário do SageMaker HyperPod console.

# Acessando os nós SageMaker HyperPod do cluster
<a name="sagemaker-hyperpod-eks-operate-access-through-terminal"></a>

Você pode acessar diretamente os nós de um SageMaker HyperPod cluster em serviço usando os AWS CLI comandos for AWS Systems Manager (SSM). Execute `aws ssm start-session` com o nome do host do nó no formato de `sagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id]`. Você pode recuperar o ID do cluster, o ID da instância e o nome do grupo de instâncias no [SageMaker HyperPod console](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-view-details-of-clusters) ou executando `describe-cluster` e `list-cluster-nodes` usando os [AWS CLI comandos para SageMaker HyperPod](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-list-cluster-nodes). Por exemplo, se o ID do cluster for `aa11bbbbb222`, o nome do nó do cluster for `controller-group` e o ID do nó do cluster for `i-111222333444555aa`, o comando SSM `start-session` deverá ser o seguinte:

**nota**  
Se você não tiver configurado AWS Systems Manager, siga as instruções fornecidas em[Configurando AWS Systems Manager e executando como para controle de acesso do usuário do cluster](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-ssm).

```
$ aws ssm start-session \
    --target sagemaker-cluster:aa11bbbbb222_controller-group-i-111222333444555aa \
    --region us-west-2
Starting session with SessionId: s0011223344aabbccdd
root@ip-111-22-333-444:/usr/bin#
```

# Reduzindo a escala de um cluster SageMaker HyperPod
<a name="smcluster-scale-down"></a>

Você pode reduzir o número de instâncias em execução no seu SageMaker HyperPod cluster da Amazon. Talvez você queira reduzir a escala verticalmente de um cluster por vários motivos, como redução da utilização de recursos ou otimização de custos.

A seguinte página descreve duas abordagens principais para reduzir a escala verticalmente:
+ **Reduzir a escala verticalmente em nível de grupo de instâncias:** essa abordagem usa a API `UpdateCluster`, com a qual você pode:
  + Reduzir a escala verticalmente da contagem de instâncias para grupos de instâncias específicos de forma independente. SageMaker A IA lida com o encerramento dos nós de uma forma que atinge as novas contagens de instâncias de destino que você definiu para cada grupo. Consulte [Reduzir a escala verticalmente de um grupo de instâncias](#smcluster-scale-down-updatecluster).
  + Excluir completamente os grupos de instâncias do cluster. Consulte [Excluir grupos de instâncias](#smcluster-remove-instancegroup).
+ **Reduzir a escala verticalmente em nível de instância:** essa abordagem usa a API `BatchDeleteClusterNodes`, com a qual você pode especificar os nós individuais que deseja encerrar. Consulte [Reduzir a escala verticalmente em nível de instância](#smcluster-scale-down-batchdelete).

**nota**  
Ao reduzir a escala verticalmente em nível de instância com `BatchDeleteCusterNodes`, você só pode encerrar no máximo 99 instâncias por vez. `UpdateCluster` permite o encerramento de qualquer número de instâncias.

## Considerações importantes
<a name="smcluster-scale-down-considerations"></a>
+ Ao reduzir a escala verticalmente de um cluster, você deve garantir que os recursos restantes sejam suficientes para lidar com sua workload e que qualquer migração ou rebalanceamento de dados necessário seja tratado adequadamente para evitar interrupções. 
+ Certifique-se de fazer backup de seus dados no Amazon S3 ou em um FSx sistema de arquivos do Lustre antes de invocar a API em um grupo de nós de trabalho. Isso pode ajudar a evitar qualquer possível perda de dados do volume raiz da instância. Para ter mais informações sobre backup, consulte [Use o script de backup fornecido pelo SageMaker HyperPod](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software-backup).
+ Para invocar essa API em um cluster existente, primeiro você deve corrigir o cluster executando a [ UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html)API. Para ter mais informações sobre a correção de um cluster, consulte [Atualizar o software da SageMaker HyperPod plataforma de um cluster](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software).
+ A medição e o faturamento de instâncias sob demanda serão interrompidos automaticamente depois que você reduzir a escala verticalmente. Para interromper a medição de instâncias reservadas reduzidas, você deve entrar em contato com a equipe de sua AWS conta para obter suporte.
+ Você pode usar a capacidade liberada das instâncias reservadas reduzidas para escalar outro SageMaker HyperPod cluster.

## Reduzir a escala verticalmente em nível de grupo de instâncias
<a name="smcluster-scale-down-or-delete"></a>

A [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html)operação permite que você faça alterações na configuração do seu SageMaker HyperPod cluster, como reduzir o número de instâncias de um grupo de instâncias ou remover grupos de instâncias inteiros. Isso pode ser útil quando você deseja ajustar os recursos alocados ao cluster com base em alterações em sua workload, otimizar custos ou alterar o tipo de instância de um grupo de instâncias.

### Reduzir a escala verticalmente de um grupo de instâncias
<a name="smcluster-scale-down-updatecluster"></a>

Use essa abordagem quando você tiver um grupo de instâncias ocioso e for seguro encerrar qualquer uma das instâncias para reduzir a escala verticalmente. Quando você envia uma `UpdateCluster` solicitação para reduzir a escala, escolhe HyperPod aleatoriamente as instâncias para encerramento e reduz a escala até o número especificado de nós para o grupo de instâncias.

**Comportamento de redução com grupos de instâncias flexíveis**  
Para grupos de instâncias que usam `InstanceRequirements` com vários tipos de instância, HyperPod encerra primeiro os tipos de instância de menor prioridade durante a redução. A prioridade é determinada pela ordem dos tipos de instância na `InstanceTypes` lista, onde o primeiro tipo tem a prioridade mais alta. Isso protege instâncias de maior prioridade, que normalmente têm maior desempenho, durante operações de redução de escala.

**nota**  
Quando você reduzir a escala verticalmente do número de instâncias em um grupo de instâncias para 0, todas as instâncias desse grupo serão encerradas. No entanto, o grupo de instâncias em si ainda existirá como parte do SageMaker HyperPod cluster. Você pode aumentar novamente a escala vertical do grupo de instâncias em um momento posterior usando a mesma configuração do grupo de instâncias.   
Ou você pode optar por remover um grupo de instâncias permanentemente. Para obter mais informações, consulte [Excluir grupos de instâncias](#smcluster-remove-instancegroup).

**Como reduzir a escala verticalmente com `UpdateCluster`**

1. Siga as etapas descritas em [Atualizando a configuração do SageMaker HyperPod cluster](sagemaker-hyperpod-eks-operate-cli-command-update-cluster.md). Ao chegar à etapa **1.d**, na qual você especifica o **InstanceCount**campo, insira um número menor que o número atual de instâncias para reduzir o cluster.

1. Execute o AWS CLI comando [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) para enviar sua solicitação.

Veja a seguir um exemplo de um objeto JSON `UpdateCluster`. Considere o caso em que seu grupo de instâncias tem duas instâncias em execução no momento. Se você definir o **InstanceCount**campo como 1, conforme mostrado no exemplo, selecionará HyperPod aleatoriamente uma das instâncias e a encerrará.

```
{
  "ClusterName": "name-of-cluster-to-update",
  "InstanceGroups": [
    {
      "InstanceGroupName": "training-instances",
      "InstanceType": "instance-type",
      "InstanceCount": 1,
      "LifeCycleConfig": {
        "SourceS3Uri": "s3://amzn-s3-demo-bucket/training-script.py",
        "OnCreate": "s3://amzn-s3-demo-bucket/setup-script.sh"
      },
      "ExecutionRole": "arn:aws:iam::123456789012:role/SageMakerRole",
      "ThreadsPerCore": number-of-threads,
      "OnStartDeepHealthChecks": [
        "InstanceStress",
        "InstanceConnectivity"
      ]
    }
  ],
  "NodeRecovery": "Automatic"
}
```

### Excluir grupos de instâncias
<a name="smcluster-remove-instancegroup"></a>

Você pode usar a [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html)operação para remover grupos de instâncias inteiros do seu SageMaker HyperPod cluster quando eles não forem mais necessários. Isso vai além da simples redução da escala vertical, permitindo que você elimine completamente grupos de instâncias específicos da configuração do cluster. 

**nota**  
Ao remover um grupo de instâncias:  
Todas as instâncias do grupo em questão são encerradas.
Toda a configuração do grupo é excluída do cluster.
Todas as workloads em execução nesse grupo de instâncias são interrompidas.

**Como excluir grupos de instâncias com `UpdateCluster`**

1. Ao seguir as etapas descritas abaixo em [Atualizando a configuração do SageMaker HyperPod cluster](sagemaker-hyperpod-eks-operate-cli-command-update-cluster.md):

   1. Defina o parâmetro opcional `InstanceGroupsToDelete` em seu `UpdateCluster` JSON e transfira a lista separada por vírgula dos nomes dos grupos de instâncias que você deseja excluir.

   1.  Ao especificar a lista `InstanceGroups`, verifique se as especificações dos grupos de instâncias que você está removendo não estão mais listadas na lista `InstanceGroups`.

1. Execute o AWS CLI comando [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) para enviar sua solicitação.

**Importante**  
Seu SageMaker HyperPod cluster deve sempre manter pelo menos um grupo de instâncias.
Garanta que todos os dados essenciais sejam copiados antes da remoção.
O processo de remoção não pode ser desfeito.

Veja a seguir um exemplo de um objeto JSON `UpdateCluster`. Considere o caso em que um cluster tem três grupos de instâncias no momento, um grupo *training*, um *prototype-training* e um *inference-serving*. Você deseja excluir o grupo *prototype-training*.

```
{
  "ClusterName": "name-of-cluster-to-update",
  "InstanceGroups": [
    {
      "InstanceGroupName": "training",
      "InstanceType": "instance-type",
      "InstanceCount": ,
      "LifeCycleConfig": {
        "SourceS3Uri": "s3://amzn-s3-demo-bucket/training-script.py",
        "OnCreate": "s3://amzn-s3-demo-bucket/setup-script.sh"
      },
      "ExecutionRole": "arn:aws:iam::123456789012:role/SageMakerRole",
      "ThreadsPerCore": number-of-threads,
      "OnStartDeepHealthChecks": [
        "InstanceStress",
        "InstanceConnectivity"
      ]
    },
    {
      "InstanceGroupName": "inference-serving",
      "InstanceType": "instance-type",
      "InstanceCount": 2,
      [...]
    },
  ],
  "InstanceGroupsToDelete": [ "prototype-training" ],
  "NodeRecovery": "Automatic"
}
```

## Reduzir a escala verticalmente em nível de instância
<a name="smcluster-scale-down-batchdelete"></a>

A `BatchDeleteClusterNodes` operação permite reduzir um SageMaker HyperPod cluster especificando os nós individuais que você deseja encerrar. `BatchDeleteClusterNodes`fornece um controle mais granular para remoção direcionada de nós e otimização de clusters. Por exemplo, você pode usar `BatchDeleteClusterNodes` para excluir nós específicos em caso de manutenção, atualizações contínuas ou rebalanceamento geográfico de recursos.

**Solicitação e reposta da API**

Quando você envia uma `BatchDeleteClusterNodes` solicitação, SageMaker HyperPod exclui os nós de acordo com sua instância IDs. A API aceita uma solicitação com o nome do cluster e uma lista de nós IDs a serem excluídos. 

A resposta inclui duas seções: 
+  `Failed`: uma lista de erros do tipo `[ BatchDeleteClusterNodesError ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_BatchDeleteClusterNodesError.html)` (um por ID de instância).
+  `Successful`: a lista de instâncias IDs foi encerrada com sucesso. 

**Validação e tratamento de erros**

A API executa várias validações, como:
+ Verificação do formato de ID do nó (o prefixo `i-` e a estrutura de ID de instância do Amazon EC2). 
+ Verificando o tamanho da lista de nós, com um limite de 99 ou menos nós IDs em uma única `BatchDeleteClusterNodes` solicitação.
+ Garantir que um SageMaker HyperPod cluster válido com o nome do cluster de entrada esteja presente e que nenhuma operação em nível de cluster (atualização, atualização do sistema, correção ou exclusão) esteja em andamento.
+ Tratamento de casos em que instâncias não são encontradas, têm status inválido ou estão em uso.

**Códigos de resposta da API**
+  A API exibe um código de status `200` para solicitações bem-sucedidas (p. ex., todos os nós de entrada tiveram êxito na validação) ou parcialmente bem-sucedidas (p. ex., alguns nós de entrada não passam na validação). 
+  Se todas essas validações falharem (p. ex., todos os nós de entrada não passarem na validação), a API exibirá uma resposta `400` de solicitação inválida com as mensagens de erro e os códigos de erro apropriados. 

**Exemplo**

Veja abaixo um exemplo de como **reduzir a escala verticalmente de um cluster em nível da instância** usando a AWS CLI:

```
aws sagemaker batch-delete-cluster-nodes --cluster-name "cluster-name" --node-ids '["i-111112222233333", "i-111112222233333"]'
```

# Excluindo um cluster SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-operate-cli-command-delete-cluster"></a>

Execute [delete-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-cluster.html) para excluir um cluster. Você pode especificar o nome ou o ARN do cluster.

```
aws sagemaker delete-cluster --cluster-name your-hyperpod-cluster
```

Essa API limpa apenas os SageMaker HyperPod recursos e não exclui nenhum recurso do cluster EKS associado. Isso inclui o cluster Amazon EKS, as identidades do EKS Pod, os FSx volumes da Amazon e os complementos do EKS. Isso também inclui a configuração inicial que você adicionou ao seu cluster do EKS. Se você quiser limpar todos os atributos, certifique-se de limpar também os atributos do EKS separadamente. 

Certifique-se de excluir primeiro os SageMaker HyperPod recursos, seguidos pelos recursos do EKS. Executar a exclusão na ordem inversa pode resultar em atributos remanescentes.

**Importante**  
Quando essa API é chamada, SageMaker HyperPod não drena nem redistribui os trabalhos (pods) em execução nos nós. Certifique-se de verificar se há algum trabalho em execução nos nós antes de chamar essa API.