

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

# Crie um NodeClass
<a name="sagemaker-hyperpod-eks-autoscaling-nodeclass"></a>

**Importante**  
Você deve começar com 0 nó no seu grupo de instâncias e deixar o Karpenter lidar com o ajuste de escala automático. Se você começar com mais de 0 nó, o Karpenter reduzirá a escala vertical dos nós para 0.

Uma classe de nó (`NodeClass`) define as configurações em nível de infraestrutura que se aplicam a grupos de nós no cluster do Amazon EKS, incluindo configuração de rede, configurações de armazenamento e marcação de recursos. `HyperPodNodeClass`A é um personalizado `NodeClass` que mapeia grupos de instâncias pré-criados em SageMaker HyperPod, definindo restrições em torno de quais tipos de instância e zonas de disponibilidade são compatíveis com as decisões de escalonamento automático da Karpenter.

**Considerações sobre como criar de uma classe de nós**
+ Você pode especificar até dez grupos de instâncias em uma `NodeClass`.
+ Ao usar o particionamento de GPU com MIG (GPU de múltiplas instâncias), o Karpenter pode provisionar automaticamente nós com grupos de instâncias habilitados para MIG. Certifique-se de que seus grupos de instâncias incluam tipos de instância compatíveis com o MIG (ml.p4d.24xlarge, ml.p5.48xlarge ou ml.p5e/p5en.48xlarge) e configure os rótulos MIG apropriados durante a criação do cluster. Para obter mais informações sobre como configurar o particionamento de GPU, consulte. [Usando partições de GPU na Amazon SageMaker HyperPod](sagemaker-hyperpod-eks-gpu-partitioning.md)
+ Se rótulos personalizados forem aplicados a grupos de instâncias, você poderá visualizá-los no `desiredLabels` campo ao consultar o `HyperpodNodeClass` status. Isso inclui rótulos de configuração MIG, como`nvidia.com/mig.config`. Quando os trabalhos recebidos solicitam recursos MIG, o Karpenter escalará automaticamente as instâncias com os rótulos MIG apropriados aplicados.
+ Se você optar por excluir um grupo de instâncias, recomendamos removê-lo do seu `NodeClass` antes de excluí-lo do seu HyperPod cluster. Se um grupo de instâncias for excluído enquanto for usado em uma`NodeClass`, a `NodeClass` será marcada como não `Ready` para provisionamento e não será usada para operações de ajuste de escala subsequentes enquanto o grupo de instâncias não for removido da `NodeClass`.
+ Quando você remove grupos de instâncias de um `NodeClass`, o Karpenter detecta um desvio nos nós que foram gerenciados pelo Karpenter nos grupos de instâncias e interrompe os nós com base em seus controles de orçamento de interrupção.
+ As sub-redes usadas pelo grupo de instâncias devem pertencer à mesma AZ. As sub-redes são especificadas usando `OverrideVpcConfig` em nível de grupo de instâncias ou em nível de cluster. `VpcConfig` é usada por padrão.
+ No momento, só é possível usar a capacidade sob demanda. Não é possível usar grupos de instâncias com plano de treinamento ou capacidade reservada.
+ Não é possível usar grupos de instâncias com `DeepHealthChecks (DHC)`. Isso ocorre porque uma DHC leva cerca de 60 a 90 minutos para ser concluída e os pods permanecem em estado pendente durante esse período, o que pode causar provisionamento excessivo.

As etapas a seguir mostram como criar uma `NodeClass`.

1. Crie um arquivo YAML (por exemplo, nodeclass.yaml) com sua configuração de `NodeClass`.

1. Aplique a configuração ao cluster usando o kubectl.

1. Faça referência à `NodeClass` em sua configuração de `NodePool`.

1. Veja um exemplo de `NodeClass` que usa os tipos de instância ml.c5.xlarge e ml.c5.4xlarge:

   ```
   apiVersion: karpenter.sagemaker.amazonaws.com/v1
   kind: HyperpodNodeClass
   metadata:
     name: sample-nc
   spec:
     instanceGroups:
       # name of InstanceGroup in HyperPod cluster. InstanceGroup needs to pre-created
       # MaxItems: 10
       - auto-c5-xaz1
       - auto-c5-4xaz2
   ```

1. Aplique a configuração:

   ```
   kubectl apply -f nodeclass.yaml
   ```

1. Monitore o NodeClass status para garantir que a condição Pronto no status esteja definida como Verdadeira:

   ```
   kubectl get hyperpodnodeclass sample-nc -o yaml
   ```

   ```
   apiVersion: karpenter.sagemaker.amazonaws.com/v1
   kind: HyperpodNodeClass
   metadata:
     creationTimestamp: "<timestamp>"
     name: sample-nc
     uid: <resource-uid>
   spec:
     instanceGroups:
     - auto-c5-az1
     - auto-c5-4xaz2
   status:
     conditions:
     // true when all IGs in the spec are present in SageMaker cluster, false otherwise
     - lastTransitionTime: "<timestamp>"
       message: ""
       observedGeneration: 3
       reason: InstanceGroupReady
       status: "True"
       type: InstanceGroupReady
     // true if subnets of IGs are discoverable, false otherwise
     - lastTransitionTime: "<timestamp>"
       message: ""
       observedGeneration: 3
       reason: SubnetsReady
       status: "True"
       type: SubnetsReady
     // true when all dependent resources are Ready [InstanceGroup, Subnets]
     - lastTransitionTime: "<timestamp>"
       message: ""
       observedGeneration: 3
       reason: Ready
       status: "True"
       type: Ready
     instanceGroups:
     - desiredLabels:
       - key: <custom_label_key>
         value: <custom_label_value>
       - key: nvidia.com/mig.config
         value: all-1g.5gb
       instanceTypes:
       - ml.c5.xlarge
       name: auto-c5-az1
       subnets:
       - id: <subnet-id>
         zone: <availability-zone-a>
         zoneId: <zone-id-a>
     - instanceTypes:
       - ml.c5.4xlarge
       name: auto-c5-4xaz2
       subnets:
       - id: <subnet-id>
         zone: <availability-zone-b>
         zoneId: <zone-id-b>
   ```