Skip to content
Introducción al escalado automático en Amazon SageMaker HyperPod con Karpenter
Source: aws.amazon.com

Introducción al escalado automático en Amazon SageMaker HyperPod con Karpenter

Sources: https://aws.amazon.com/blogs/machine-learning/introducing-auto-scaling-on-amazon-sagemaker-hyperpod, https://aws.amazon.com/blogs/machine-learning/introducing-auto-scaling-on-amazon-sagemaker-hyperpod/, AWS ML Blog

TL;DR

  • SageMaker HyperPod ahora admite escalado automático de nodos gestionado con Karpenter para sus clústeres EKS.
  • La solución es administrada por el servicio, lo que elimina la necesidad de instalar o mantener controladores Karpenter por tu cuenta y admite escalado a cero.
  • Al integrarse con provisionamiento continuo y KEDA opcional, obtienes una arquitectura de escalado en dos niveles que ajusta pods y nodos para acomodar la demanda en tiempo real.
  • Este enfoque enfatiza la resiliencia, respuestas rápidas a picos de tráfico y eficiencia de costos para cargas de ML a gran escala.
  • Los requisitos previos incluyen cuotas, un rol IAM para Karpenter y activar el provisionamiento continuo en un clúster SageMaker HyperPod EKS.

Contexto y antecedentes

Amazon SageMaker HyperPod ofrece una infraestructura de alto rendimiento, resiliente y diseñada para cargas de ML a gran escala, incluyendo entrenamiento y despliegue a gran escala. A medida que más clientes pasan de entrenar modelos de base a la inferencia a escala, es crucial adaptar automáticamente los recursos de GPU al tráfico de producción, manteniendo acuerdos de nivel de servicio (SLAs) y controlando costos. Karpenter es un gestor de ciclo de vida de nodos de Kubernetes de código abierto creado por AWS y es una opción popular para el escalado automático de clústeres debido a su capacidad para provisionar y desprovisionar nodos rápidamente y optimizar la capacidad. Históricamente, las implementaciones de Karpenter gestionadas por el usuario requerían una sobrecarga operativa para instalar, configurar y mantener sus componentes. SageMaker HyperPod ahora ofrece una experiencia de escalado automático basada en Karpenter gestionada, eliminando ese trabajo y mejorando la integración con la resiliencia y observabilidad de HyperPod. Una característica clave de este lanzamiento es el soporte para escalado hacia cero, que reduce la necesidad de mantener un controlador Karpenter dedicado cuando no hay demanda de cómputo, mejorando así la eficiencia de costos. La combinación de la infraestructura de ML de HyperPod con la gestión de nodos de Karpenter ofrece una plataforma resiliente y escalable para cargas ML a gran escala. Clientes como Perplexity, HippocraticAI, H.AI y Articul8 ya utilizan SageMaker HyperPod para entrenar y desplegar modelos; a medida que el tráfico crece, el escalado automático se vuelve esencial para satisfacer las demandas reales de producción.

¿Qué hay de nuevo?

Este lanzamiento introduce una solución de escalado automático basada en Karpenter totalmente gestionada, instalada y mantenida por SageMaker HyperPod. Permite el escalado automático de clústeres de SageMaker HyperPod EKS desde capacidad estática hacia una infraestructura dinámica y optimizada en costos que escala con la demanda. Los componentes clave incluyen:

  • Una implementación de Karpenter gestionada e integrada a los clústeres SageMaker HyperPod EKS, eliminando la necesidad de que el cliente configure y mantenga Karpenter.
  • Capacidades de provisionamiento continuo que permiten a HyperPod provisionar automáticamente la capacidad restante en segundo plano, mientras las cargas comienzan en instancias disponibles.
  • Reintentos automáticos ante fallos de provisionamiento debido a limitaciones de capacidad, para que las operaciones de escalado permanezcan resilientes y no bloqueantes.
  • HyperpodNodeClass, un recurso personalizado que mapea a grupos de instancias precreados en SageMaker HyperPod y define restricciones sobre qué tipos de instancias y zonas de disponibilidad son compatibles para las decisiones de escalado de Karpenter.
  • NodePool que establece el hardware (tipos de instancia) y la colocación (Zona de Disponibilidad) para los pods. El NodePool define qué recursos se pueden crear y dónde se ejecutan.
  • Integración opcional con Kubernetes Event-driven Autoscaling (KEDA) para escalar pods en función de métricas en tiempo real. Para implementar una solución de escalado de extremo a extremo, puedes configurar KEDA junto con Karpenter en HyperPod. Cuando KEDA escala los pods, Karpenter provisiona o elimina nodos en respuesta a los cambios de demanda de recursos.

¿Por qué importa? (impacto para desarrolladores/empresas)

Las cargas de inferencia con tráfico real requieren escalado automático para cumplir SLA de latencia sin perder eficiencia de costos. El enfoque gestionado por Karpenter reduce la carga operativa, acelera las decisiones de escalado y permite escalar a cero cuando la demanda es baja. Beneficios para desarrolladores y empresas:

  • Respuesta más rápida a picos de tráfico y tiempos de respuesta más estables durante picos de demanda.
  • Menor carga operativa al ser HyperPod quien gestiona la instalación y mantenimiento de Karpenter.
  • Mayor eficiencia de costos gracias al escalado a cero y a alinear recursos con la demanda real.
  • Infraestructura de ML resiliente con observabilidad y herramientas optimizadas para entrenamiento y despliegue a gran escala.

Detalles técnicos o implementación

Requisitos previos y configuración inicial

  • Verificar las cuotas para los tipos de instancias planificados a través de la consola de Cuotas de Servicio (por ejemplo, g5.12xlarge).
  • Crear un rol IAM para el autoscaling de HyperPod con Karpenter y otorgar los permisos necesarios.
  • Lanzar y configurar tu clúster SageMaker HyperPod EKS con el modo de provisionamiento continuo activado al crear. Si prefieres, puedes usar un clúster EKS existente.
  • Asegurarte de que cada InstanceGroup esté limitado a una sola zona usando OverrideVpcConfig y seleccionando una subred por InstanceGroup. Activar Karpenter en tu clúster HyperPod
  • Tras la creación del clúster, actualiza el clúster para habilitar Karpenter (CLI AWS UpdateCluster o mediante Boto3). Configura las credenciales y ejecuta la llamada correspondiente, y luego verifica con DescribeCluster para confirmar que Karpenter está activo. Configuración HyperPodNodeClass y NodePool
  • HyperpodNodeClass es un recurso personalizado que mapea a grupos de instancias y define restricciones de tipos de instancias y zonas para las decisiones de escalado de Karpenter.
  • Para usar HyperpodNodeClass, referencia los nombres de los InstanceGroups que quieres que sirvan como fuente de recursos para escalar nodos. El nombre de HyperpodNodeClass se transmite al NodePool, que lo utiliza para seleccionar los recursos.
  • NodePool específica el hardware (tipos de instancias) y la ubicación (Zona de Disponibilidad) para los pods, permitiendo control fino sobre qué nodos se crean y dónde se ejecutan. Visibilidad y escalado basado en eventos
  • Para una solución completa, se puede añadir KEDA, que escala pods en función de métricas como CloudWatch, longitud de colas SQS, consultas Prometheus y patrones de utilización de recursos. Cuando KEDA escala los pods, Karpenter provisiona o elimina nodos según sea necesario.
  • Un ejemplo de especificación de KEDA ScaledObject puede escalar el número de pods de inferencia basándose en métricas de CloudWatch (p. ej., recuento de solicitudes de ALB). Gestión y limpieza de recursos
  • Para evitar cargos adicionales, elimina tu clúster SageMaker HyperPod cuando ya no lo uses.
  • Con el lanzamiento del escalado de nodos con Karpenter en HyperPod, las cargas de ML pueden adaptarse automáticamente a la demanda, optimizar el uso de recursos y ayudar a controlar los costos escalando exactamente cuando se necesita. También puedes integrarlo con escaladores de pods basados en eventos como KEDA para escalar según métricas personalizadas. Notas de implementación
  • El escalado con Karpenter en HyperPod está diseñado para ser resiliente y no bloquear operaciones, reintentando en segundo plano ante fallos de capacidad.
  • La combinación de Karpenter con HyperPod ofrece una plataforma optimizada para cargas de ML grandes.

Conclusiones clave

  • SageMaker HyperPod incluye ahora escalado automático de nodos gestionado por Karpenter.
  • Se admite el escalado hacia cero para reducir costos cuando la demanda es baja.
  • El provisionamiento continuo y los reintentos en segundo plano evitan que la escalabilidad bloquee las cargas de trabajo.
  • HyperPodNodeClass y NodePool permiten control fino sobre tipos de instancias y ubicación de pods.
  • La integración con KEDA ofrece escalado de pods basado en métricas en tiempo real.

FAQ

  • ¿Qué hace exactamente el escalado automático con Karpenter en HyperPod?

    Proporciona un escalado automático gestionado para clústeres HyperPod EKS, con escalado hacia cero y provisionamiento continuo para adaptar los recursos a la demanda.

  • ¿Qué debo configurar antes de activar Karpenter?

    Verificar quotas de instancias, crear un rol IAM para el autoescalado y activar el provisionamiento continuo.

  • ¿Cómo activo Karpenter en mi clúster HyperPod?

    ctualiza el clúster con UpdateCluster (CLI de AWS) o mediante Boto3, y verifica con DescribeCluster que Karpenter está activo.

  • ¿Qué son HyperPodNodeClass y NodePool?

    HyperPodNodeClass mapea a grupos de instancias y restringe tipos de instancias y zonas; NodePool define el hardware y la ubicación de los pods.

  • ¿Puedo combinar KEDA con Karpenter en HyperPod?

    Sí, KEDA escala los pods y Karpenter adapta los nodos en función de la demanda.

Referencias

More news