

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`.
+ Al utilizar la partición de GPU con MIG (GPU de varias instancias), Karpenter puede aprovisionar nodos automáticamente con grupos de instancias compatibles con MIG. Asegúrate de que tus grupos de instancias incluyan tipos de instancias compatibles con MIG (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 [Uso de particiones de GPU en Amazon SageMaker HyperPod](sagemaker-hyperpod-eks-gpu-partitioning.md) sobre cómo configurar las particiones de la GPU, consulta.
+ 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>
   ```