Creación de un NodeClass - Amazon SageMaker AI

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.

Creación de un NodeClass

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 los tipos de instancias y las zonas de disponibilidad que se admiten 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 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.

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

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

  4. 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
  5. Aplique la configuración:

    kubectl apply -f nodeclass.yaml
  6. 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>