

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Cree un NodeClass
<a name="sagemaker-hyperpod-eks-autoscaling-nodeclass"></a>

**importante**  
Debe empezar con 0 nodos en su grupo de instancias y dejar que Karpenter se encargue del escalado automático. Si empieza con más de 0 nodos, Karpenter los reducirá a 0.

Una clase de nodos (`NodeClass`) define los ajustes de la infraestructura que se aplican a los grupos de nodos del clúster de Amazon EKS, incluida la configuración de la red, los ajustes de almacenamiento y el etiquetado de los recursos. A `HyperPodNodeClass` es una personalización `NodeClass` que se asigna a grupos de instancias creados previamente y define las restricciones en SageMaker HyperPod torno a las cuales se admiten los tipos de instancias y las zonas de disponibilidad para las decisiones de escalado automático de Karpenter.

**Consideraciones a tener en cuenta para crear una clase de nodo**
+ Puede especificar hasta 10 grupos de instancias en una `NodeClass`.
+ Los grupos de instancias que se utilizan `InstanceRequirements` (grupos de instancias flexibles) pueden contener varios tipos de instancias dentro de un único grupo de instancias. Esto simplifica la `NodeClass` configuración, ya que puedes hacer referencia a menos grupos de instancias para cubrir el mismo conjunto de tipos de instancias y zonas de disponibilidad. Por ejemplo, en lugar de crear 6 grupos de instancias (3 tipos de instancias × 2 AZ), puedes crear un único grupo de instancias flexible que abarque todas las combinaciones. Ten en cuenta que `InstanceType` `InstanceRequirements` son mutuamente excluyentes: debes especificar uno u otro para cada grupo de instancias.
+ Al utilizar la partición de GPU con MIG (Multi-Instance GPU), Karpenter puede aprovisionar nodos automáticamente con grupos de instancias. MIG-enabled Asegúrate de que tus grupos de instancias incluyan tipos de instancias ( MIG-supported ml.p4d.24xlarge, ml.p5.48xlarge o ml). p5e/p5en.48xlarge) y configura las etiquetas MIG adecuadas durante la creación del clúster. Para obtener más información sobre la configuración de las particiones de la GPU, consulte. [Uso de particiones de GPU en Amazon SageMaker HyperPod](sagemaker-hyperpod-eks-gpu-partitioning.md)
+ Si se aplican etiquetas personalizadas a los grupos de instancias, puedes verlas en el `desiredLabels` campo al consultar el `HyperpodNodeClass` estado. Esto incluye etiquetas de configuración MIG como. `nvidia.com/mig.config` Cuando los trabajos entrantes soliciten recursos MIG, Karpenter escalará automáticamente las instancias con las etiquetas MIG correspondientes aplicadas.
+ Si decides eliminar un grupo de instancias, te recomendamos eliminarlo de tu clúster `NodeClass` antes de eliminarlo del clúster. HyperPod Si se elimina un grupo de instancias mientras se usa en una `NodeClass`, la `NodeClass` se marcará como no `Ready` para aprovisionamiento y no se usará para las operaciones de escalado posteriores hasta que se elimine el grupo de instancias de la `NodeClass`.
+ Cuando elimine grupos de instancias de una `NodeClass`, Karpenter detectará una deriva de los nodos administrados por Karpenter en los grupos de instancias e interrumpirá los nodos en función de los controles de los presupuestos de interrupciones.
+ Las subredes que utiliza el grupo de instancias deben pertenecer a la misma zona de disponibilidad. Las subredes se especifican con `OverrideVpcConfig` para el grupo de instancias o para el clúster. `VpcConfig` se usa de forma predeterminada.
+ Por el momento, solo se admite la capacidad bajo demanda. No se admiten grupos de instancias con plan de entrenamiento o capacidad reservada.
+ No se admiten grupos de instancias con `DeepHealthChecks (DHC)`. Esto se debe a que un DHC tarda entre 60 y 90 minutos en completarse y los pods tienen el estado pendiente durante ese tiempo, lo que puede provocar un sobreaprovisionamiento.

En los siguientes pasos se muestra cómo crear una `NodeClass`.

1. Cree un archivo YAML (por ejemplo, nodeclass.yaml) con la configuración de su `NodeClass`.

1. Aplique la configuración al clúster con kubectl.

1. Haga referencia a la `NodeClass` en la configuración del `NodePool`.

1. A continuación, se muestra una `NodeClass` de ejemplo donde se utilizan los tipos de instancia ml.c5.xlarge y 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 la configuración:

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

1. Supervisa el NodeClass estado para asegurarte de que la condición Listo esté establecida en True:

   ```
   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>
     # Flexible instance group with multiple instance types
     - instanceTypes:
       - ml.p5.48xlarge
       - ml.p4d.24xlarge
       - ml.g6.48xlarge
       name: inference-workers
       subnets:
       - id: <subnet-id>
         zone: <availability-zone-a>
         zoneId: <zone-id-a>
       - id: <subnet-id>
         zone: <availability-zone-b>
         zoneId: <zone-id-b>
   ```