Conceptos simplificados del ajuste de escala automático para cargas de trabajo de IA/AA en GKE

En este documento, se proporciona una descripción general de los conceptos de ajuste de escala automático para cargas de trabajo de IA/AA en Google Kubernetes Engine (GKE).

Este documento está dirigido a ingenieros de aprendizaje automático (AA) que no tienen experiencia en GKE. Te recomendamos que leas los siguientes documentos de la serie para comenzar a usar GKE para cargas de trabajo de IA/AA:

  1. ¿Por qué usar GKE para la inferencia de IA/AA?
  2. Acerca de la inferencia de modelos de IA/AA en GKE
  3. Conceptos simplificados de ajuste de escala automático para cargas de trabajo de IA/AA en GKE (este documento)

Antes de comenzar

Debes tener conocimientos básicos de los siguientes conceptos:

El desafío: satisfacer la demanda máxima

Cymbal Shops, un minorista en línea ficticio, se está preparando para su evento anual de ventas. El motor de recomendaciones potenciado por IA de la tienda debe proporcionar sugerencias personalizadas en tiempo real a una gran afluencia de compradores en línea.

Si el motor de recomendaciones se ralentiza, la experiencia del usuario se ve afectada y se pierden ventas. Sin embargo, el aprovisionamiento de una capacidad de servidor excesiva no es rentable durante los períodos de tráfico normal. El objetivo es que los recursos se ajusten automáticamente en respuesta a la demanda, lo que ayuda a garantizar una buena experiencia del usuario y, al mismo tiempo, mantener los costos bajo control.

La solución: ajuste de escala automático a pedido

Las funciones de ajuste de escala automático de GKE funcionan como un gerente de tienda que se prepara para un aumento de ventas. En lugar de mantener un edificio enorme con personal completo y encendido todo el tiempo, el gerente ajusta de forma dinámica toda la capacidad de la tienda (personal, espacio y equipo) para satisfacer las necesidades de los compradores en cualquier momento.

GKE aplica este mismo principio: ajusta automáticamente los recursos asignados a tu aplicación (carga de trabajo e infraestructura) según la demanda en tiempo real.

Beneficios empresariales del ajuste de escala automático de GKE

Al combinar estrategias de escalamiento horizontal y vertical, GKE ofrece un enfoque sólido que proporciona tres beneficios principales:

  • Optimización de costos: Solo pagas por los recursos de procesamiento que usas y evitas el costo del aprovisionamiento excesivo. El ajuste de escala automático de GKE evita el desperdicio, ya que ajusta automáticamente el tamaño de tus aplicaciones a sus requisitos reales de CPU y memoria. También puede aprovisionar hardware especializado y costoso (como GPU) solo para los momentos en que se requieren y quitarlos cuando se completa el trabajo.
  • Mayor confiabilidad y rendimiento: Tu aplicación puede escalar horizontalmente de forma automática (agregar más copias) para controlar los aumentos repentinos del tráfico, lo que garantiza la estabilidad para tus usuarios. Al mismo tiempo, el ajuste de escala automático de GKE ayuda a evitar errores comunes de "memoria insuficiente" (OOM) que pueden bloquear las aplicaciones. Para los trabajos exigentes de IA/AA, ayuda a garantizar que el hardware de alto rendimiento necesario esté disponible para ejecutarse de manera eficiente y completar los trabajos a tiempo.
  • Reducción de la sobrecarga operativa: La estrategia de ajuste de escala automático multidimensional de GKE simplifica significativamente la administración de recursos. GKE automatiza las tareas complejas de ajuste de solicitudes de recursos y administración de grupos de nodos especializados para diferentes hardware. Esta automatización libera a tus equipos de ingeniería para que se enfoquen en el desarrollo de aplicaciones en lugar del ajuste de la infraestructura.

Ajuste de escala automático de cargas de trabajo

El ajuste de escala automático de cargas de trabajo ajusta automáticamente la potencia de tu aplicación para satisfacer la demanda. GKE emplea un sistema de ajuste de escala automático de dos niveles para administrar los recursos de tu aplicación de manera eficiente.

Horizontal Pod Autoscaler (HPA): agregar más recursos

El Horizontal Pod Autoscaler (HPA) supervisa el uso de recursos de los Pods de tu aplicación. En nuestra analogía, los Pods son los "asociados de ventas" y el HPA es el "gerente de equipo" que observa qué tan ocupados están los asociados de ventas.

Cuando aumenta la demanda de los Pods, el HPA aprovisiona automáticamente más Pods para distribuir la carga. Cuando la demanda disminuye, el HPA finaliza los Pods inactivos para conservar los recursos.

Para obtener más información, consulta Ajuste de escala automático horizontal de Pods.

Vertical Pod Autoscaler (VPA): hacer que los recursos sean más potentes

Si bien el escalamiento horizontal se enfoca en aumentar la cantidad de recursos, el escalamiento vertical es una estrategia complementaria que se enfoca en aumentar la potencia de los recursos existentes. En el contexto de nuestra analogía de la tienda sin conexión, no se trata de contratar más personal, sino de mejorar las capacidades del equipo actual para mejorar su eficiencia individual.

Este enfoque de escalamiento vertical a nivel de Pods lo administra el Vertical Pod Autoscaler (VPA). El VPA analiza el consumo de recursos de tu aplicación y ajusta las solicitudes de CPU y memoria del Pod hacia arriba o hacia abajo para que coincidan con su uso real.

El VPA puede ajustar las solicitudes y los límites de recursos de un Pod, por ejemplo, mediante el reprovisionamiento del Pod para escalar de 1 CPU y 16 GB a 4 CPUs y 64 GB. Este proceso implica reiniciar el Pod con su configuración nueva y más potente para controlar mejor su carga de trabajo.

Para obtener más información, consulta los siguientes recursos:

El HPA y el VPA son complementarios. El HPA ajusta la cantidad de Pods en respuesta a los cambios en el tráfico, y el VPA ayuda a garantizar que cada uno de esos Pods tenga el tamaño correcto para su tarea. Estas estrategias de escalamiento evitan el desperdicio de recursos, evitan costos innecesarios y ayudan a garantizar que tu app siga siendo responsiva y esté disponible durante las fluctuaciones de tráfico. Sin embargo, no recomendamos usar HPA y VPA en las mismas métricas (CPU y memoria) porque pueden entrar en conflicto. Para obtener más información, consulta Limitaciones del ajuste de escala automático horizontal de Pods.

Ajuste de escala automático de la infraestructura

El ajuste de escala automático de la infraestructura agrega o quita hardware automáticamente para satisfacer las demandas de tus cargas de trabajo.

Escalador automático del clúster: el administrador del edificio

El escalador automático del clúster ayuda a garantizar que haya suficiente infraestructura subyacente (VMs o nodos en el contexto de GKE) para alojar los Pods. Los nodos se pueden comparar con los "pisos" de una tienda, en los que el escalador automático del clúster es el "administrador del edificio".

Si el HPA necesita agregar más Pods, pero los nodos existentes no tienen capacidad disponible, el escalador automático del clúster aprovisiona un nodo nuevo. Por el contrario, si algún nodo no se utiliza lo suficiente, el escalador automático del clúster mueve los Pods de ese nodo a otros nodos y finaliza el nodo ahora vacío.

Para obtener más información, consulta Escalador automático del clúster.

Creación automática de grupos de nodos: el especialista en automatización

Si bien el escalador automático del clúster agrega nodos a los grupos de nodos existentes, la creación automática de grupos de nodos extiende la capacidad del escalador automático del clúster, ya que le permite crear automáticamente grupos de nodos nuevos que satisfagan las necesidades específicas de tus Pods.

Ciertas cargas de trabajo de IA/AA requieren hardware especializado de alto rendimiento, como GPU o TPU, que no están disponibles en los grupos de nodos de uso general. La creación automática de grupos de nodos automatiza por completo el aprovisionamiento de este hardware especializado cuando lo requieren tus cargas de trabajo. Esto ayuda a garantizar que incluso las tareas más intensivas en cuanto a procesamiento obtengan el hardware que necesitan, cuando lo necesiten.

Para obtener más información, consulta Acerca de la creación automática de grupos de nodos.

Para obtener información sobre los aceleradores disponibles en GKE, consulta lo siguiente:

ComputeClasses: el activador para la creación automática de grupos de nodos

Aunque la creación automática de grupos de nodos se puede activar mediante la solicitud de un Pod para un tipo de hardware específico (como nvidia-l4-vws), el uso de una ComputeClass es el método más resistente y moderno. Una ComputeClass es un recurso de GKE que defines y que actúa en un conjunto de reglas para controlar y personalizar cómo se ajusta automáticamente tu hardware. Si bien no es un escalador automático en sí, funciona con el escalador automático del clúster.

Para extender la analogía, piensa en ComputeClasses como un "formulario de solicitud inteligente" para el equipo de tu tienda.

En lugar de que un asociado de ventas (tu Pod) exija una pieza de hardware específica y rígida (por ejemplo, "Necesito la caja registradora de la marca X modelo 500"), solicita una capacidad con el formulario de solicitud (por ejemplo, "Necesito una estación de pago de alta velocidad"). El formulario, la ComputeClass, contiene un conjunto de reglas para el equipo de compras (GKE) sobre cómo cumplir con ese pedido.

ComputeClasses separa la solicitud de hardware de tu Pod de la acción de GKE de aprovisionarlo. En lugar de que tu Pod exija una máquina específica (como a3-highgpu-8g), puede solicitar una ComputeClass. La ComputeClass en sí define la lógica "inteligente", una lista priorizada de reglas que le indica a GKE cómo cumplir con esa solicitud.

Para obtener más información, consulta Acerca de las ComputeClasses de GKE.

Para obtener información detallada sobre ComputeClasses con ejemplos del mundo real y configuraciones de YAML, consulta la guía técnica: Optimiza las cargas de trabajo de GKE con ComputeClasses personalizadas.

Métricas y activadores clave para el ajuste de escala automático

Para tomar decisiones de escalamiento fundamentadas, los componentes de ajuste de escala automático supervisan diferentes señales. En la siguiente tabla, se muestra la comparación de los activadores de ajuste de escala automático basados en métricas.

Componente Reacciona a Fuente de la señal Proceso de razonamiento Acción de GKE
HPA Carga actual Consumo en tiempo real, por ejemplo, la CPU está al 90% en este momento. Los Pods actuales están sobrecargados. Necesitamos distribuir este tráfico de inmediato". Escala horizontalmente: cambia la cantidad de réplicas de Pods para satisfacer la demanda.
VPA Eficiencia de tamaño Consumo histórico, por ejemplo, uso promedio de RAM durante las últimas 24 horas. "Las necesidades de recursos de este Pod cambiaron o nuestras estimaciones iniciales fueron incorrectas. Necesitamos ajustar su asignación de recursos para que coincida con su uso real". Escala verticalmente: cambia el tamaño (límites de CPU o RAM) del Pod para ajustarlo.
Creación automática de grupos de nodos Disponibilidad de hardware Solicitudes no satisfechas, por ejemplo, el Pod está en estado "Pendiente" porque no existen nodos de GPU. "Este Pod no puede iniciarse porque falta el hardware físico que solicitó". Aprovisiona la infraestructura: crea grupos de nodos nuevos con el hardware específico.

Activadores del Horizontal Pod Autoscaler (HPA): reaccionar a la carga

El HPA ajusta la cantidad de Pods (escala horizontalmente) mediante la observación de las métricas de rendimiento en tiempo real. Por ejemplo, el uso de CPU y memoria, las métricas fundamentales que indican la carga de procesamiento en tus Pods, están disponibles de inmediato para el HPA.

Sin embargo, algunas métricas necesitan configuraciones explícitas, como las siguientes:

  • Métricas del balanceador de cargas (solicitudes por segundo [RPS]): Una medida directa del tráfico de aplicaciones, que permite respuestas de escalamiento más rápidas. Para usar esta métrica, consulta Habilita el balanceo de cargas basado en el uso y el perfil de HPA de rendimiento.
  • Métricas personalizadas: Configura el ajuste de escala automático en función de las métricas empresariales personalizadas, como la "cantidad de usuarios activos", para administrar de forma proactiva los recursos en función de la demanda prevista. Para usar métricas personalizadas, debes configurar una canalización de métricas para exponerlas al HPA. Para obtener más información, consulta Google Cloud Managed Service para Prometheus.

Activadores del Vertical Pod Autoscaler (VPA): reaccionar a las necesidades de recursos

El VPA ajusta el tamaño de tu Pod (escala verticalmente) mediante la observación de su consumo histórico de recursos:

  • Uso de CPU y memoria: El VPA analiza el uso anterior de un Pod para determinar si su solicitud de recursos es correcta. El objetivo principal del VPA es evitar la contención de recursos mediante el aumento o la disminución de las solicitudes de memoria y CPU de un Pod para que coincidan con sus necesidades reales.

Activadores de creación automática de grupos de nodos: reaccionar a las solicitudes de hardware

La creación automática de grupos de nodos aprovisiona grupos de nodos nuevos con hardware especializado. No se activa con métricas de rendimiento como la carga de CPU. En cambio, se activa con la solicitud de recursos de un Pod:

  • Solicitud de recursos no programable: Un activador clave. Cuando se crea un Pod, solicita hardware específico. Si el clúster no puede satisfacer esta solicitud porque ningún nodo existente tiene ese hardware, la creación automática de grupos de nodos toma medidas.
  • Solicitud de ComputeClass: Un Pod solicita una ComputeClass, por ejemplo, cloud.google.com/compute-class: premium-gpu. Si ningún nodo del clúster puede proporcionar las capacidades de "premium-gpu", la creación automática de grupos de nodos crea automáticamente un grupo de nodos nuevo que puede proporcionar esas capacidades.

Para obtener información sobre cómo usar métricas personalizadas, de Prometheus y externas para lograr el ajuste de escala automático, consulta Acerca del ajuste de escala automático de cargas de trabajo en función de las métricas.

Conclusión

Si aplicas estas estrategias de ajuste de escala automático, puedes administrar de manera eficaz las cargas de trabajo fluctuantes de IA/AA. Al igual que el gerente de la tienda Cymbal Shops navegó por su evento de ventas máximo administrando sus recursos de manera flexible, puedes usar el escalado automático de GKE para expandir y contraer automáticamente los recursos de tu infraestructura y carga de trabajo. Esto ayuda a garantizar que tus modelos sigan funcionando durante los aumentos de tráfico y sean rentables durante los períodos de inactividad, lo que mantiene el tamaño adecuado de tu entorno.

¿Qué sigue?