En este documento, se proporciona una descripción general de los conceptos de ajuste de escala automático para las 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 en cargas de trabajo de IA/ML:
- Por qué usar GKE para la inferencia de IA/AA
- Acerca de la inferencia de modelos de IA/AA en GKE
- Conceptos simplificados del 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:
- Objetos fundamentales de Kubernetes: Comprende qué son los contenedores, los Pods y los nodos, y cómo se relacionan entre sí.
- Arquitectura básica del clúster de GKE: Comprende cómo interactúan entre sí los distintos componentes del clúster de GKE.
El desafío: satisfacer la demanda máxima
Cymbal Shops, un minorista en línea ficticio, se está preparando para su evento de ventas anual. El motor de recomendaciones potenciado por IA de la tienda debe proporcionar sugerencias personalizadas en tiempo real a una gran cantidad 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, aprovisionar una capacidad excesiva del servidor 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 garantiza una buena experiencia del usuario y mantiene los costos bajo control.
La solución: ajuste de escala automático a pedido
Las funciones de ajuste de escala automático de GKE son similares a las de un gerente de tienda que se prepara para una hora pico de ventas. En lugar de mantener un edificio enorme con personal y energía todo el tiempo, el gerente ajusta de forma dinámica toda la capacidad de la tienda (personal, espacio y equipos) para satisfacer las necesidades de los compradores en cualquier momento.
GKE aplica este mismo principio: escala automáticamente los recursos asignados a tu aplicación (tanto la carga de trabajo como la infraestructura) según la demanda en tiempo real.
Beneficios comerciales 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 gasto de un aprovisionamiento excesivo. El ajuste de escala automático de GKE evita el desperdicio, ya que dimensiona automáticamente tus aplicaciones según sus requisitos reales de CPU y memoria. También puede aprovisionar hardware especializado y costoso (como GPUs) solo para los momentos en que se requieren y quitarlos cuando finaliza el trabajo.
- Mayor confiabilidad y rendimiento: Tu aplicación puede escalar horizontalmente (agregar más copias) automáticamente para controlar los aumentos repentinos de 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 provocar fallas en las aplicaciones. Para los trabajos exigentes de IA/AA, ayuda a garantizar que el hardware de alto rendimiento necesario esté disponible para ejecutar y completar los trabajos de manera eficiente y a tiempo.
- Reducción de la sobrecarga operativa: La estrategia de ajuste de escala multidimensional de GKE simplifica significativamente la administración de recursos. GKE automatiza las tareas complejas de ajustar las solicitudes de recursos y administrar grupos de nodos especializados para diferentes tipos de hardware. Esta automatización libera a tus equipos de ingeniería para que se enfoquen en el desarrollo de aplicaciones en lugar de en el ajuste de la infraestructura.
Ajuste de escala automático de cargas de trabajo
El ajuste de escala automático de la carga de trabajo ajusta automáticamente la potencia de tu aplicación para satisfacer la demanda. GKE emplea un sistema de escalamiento automático de dos niveles para administrar los recursos de tu aplicación de manera eficiente.
Horizontal Pod Autoscaler (HPA): Agrega más recursos
El escalador automático horizontal de Pods (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 la HPA es el "administrador del equipo" que observa qué tan ocupados están los asociados de ventas.
Cuando aumenta la demanda en 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 recursos.
Para obtener más información, consulta Ajuste de escala automático horizontal de Pods.
Vertical Pod Autoscaler (VPA): Cómo potenciar los recursos
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 física, no se trata de contratar más personal, sino de mejorar las capacidades del equipo actual para aumentar su eficiencia individual.
El Vertical Pod Autoscaler (VPA) administra este enfoque de escalamiento vertical a nivel del Pod. 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, volviendo a aprovisionar el Pod para escalar de 1 CPU y 16 GB a 4 CPU y 64 GB. Este proceso implica reiniciar el Pod con su nueva configuración más potente para controlar mejor su carga de trabajo.
Para obtener más información, consulta los siguientes recursos:
- Ajuste de escala automático vertical de Pods
- Cómo escalar las solicitudes y los límites de los recursos del contenedor
HPA y 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, los costos innecesarios y ayudan a garantizar que tu app siga siendo responsiva y esté disponible durante las fluctuaciones del tráfico. Sin embargo, no recomendamos usar el HPA y el 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 de clústeres: El administrador del edificio
El escalador automático del clúster ayuda a garantizar que haya suficiente infraestructura subyacente (VM 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 tiene poco uso, 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 de clústeres.
Creación automática de grupos de nodos: el especialista en automatización
Mientras que 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 tus cargas de trabajo lo requieren. Esto ayuda a garantizar que incluso las tareas más exigentes desde el punto de vista computacional obtengan el hardware que necesitan, cuando lo necesitan.
Para obtener más información, consulta Acerca de la creación automática de grupos de nodos.
Para conocer los aceleradores disponibles en GKE, consulta lo siguiente:
ComputeClasses: El activador para la creación automática de grupos de nodos
Si bien la creación automática de grupos de nodos se puede activar por la solicitud de un Pod para un tipo de hardware específico (como nvidia-l4-vws), usar una ComputeClass es el método más moderno y resistente. Un ComputeClass es un recurso de GKE que defines y que actúa según un conjunto de reglas para controlar y personalizar cómo se ajusta la escala automáticamente de 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 un hardware específico y rígido (por ejemplo, "Necesito la caja registradora Brand X Model 500"), solicita una capacidad con el formulario de requisición (por ejemplo, "Necesito una estación de pago de alta velocidad"). El formulario, ComputeClass, contiene un conjunto de reglas para el equipo de compras (GKE) sobre cómo completar ese pedido.
Las ComputeClasses separan 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 satisfacer esa solicitud.
Para obtener más información, consulta Acerca de las ComputeClasses de GKE.
Para obtener información detallada sobre ComputeClasses con ejemplos prácticos y configuraciones de YAML, consulta la guía técnica Optimizing GKE workloads with custom ComputeClasses.
Métricas y activadores clave para el ajuste de escala automático
Para tomar decisiones de escalamiento fundamentadas, los componentes del ajuste de escala automático supervisan diferentes indicadores. En la siguiente tabla, se muestra la comparación de los activadores del ajuste de escala automático basado en métricas.
| Componente | Reacciona a | Fuente del indicador | 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. Tenemos que distribuir este tráfico de inmediato". | Aumenta o disminuye la escala: Cambia la cantidad de réplicas de Pods para satisfacer la demanda. |
| VPA | Eficiencia de tamaño | Consumo histórico, por ejemplo, el uso promedio de RAM en las últimas 24 horas. | "Los recursos que necesita este Pod cambiaron, o nuestras estimaciones iniciales fueron incorrectas. Necesitamos ajustar la asignación de recursos para que coincida con su uso real". | Aumenta o disminuye la escala: 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. | "No se puede iniciar este Pod 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): reacción a la carga
El HPA ajusta la cantidad de Pods (aumenta o disminuye) supervisando 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 forma predeterminada 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]): Son una medida directa del tráfico de la aplicación que permite respuestas de ajuste de escala más rápidas. Para usar esta métrica, consulta Habilita el balanceo de cargas basado en la utilización y el perfil de HPA de rendimiento.
- Métricas personalizadas: Configura el ajuste de escala automático en función de métricas comerciales personalizadas, como la "cantidad de usuarios activos", para administrar los recursos de forma proactiva según la demanda prevista. Para usar métricas personalizadas, debes configurar un canal de métricas para exponerlas al HPA. Para obtener más información, consulta Google Cloud Managed Service para Prometheus.
Activadores del Ajuste de escala automático vertical de Pods (VPA): reacción a las necesidades de recursos
El VPA ajusta el tamaño de tu Pod (lo aumenta o disminuye) observando 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 aumentando o disminuyendo 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: reacción a 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 la CPU. En cambio, se activa por la solicitud de recursos de un Pod:
- Solicitud de recurso no programable: Es 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, se activa la creación automática del grupo de nodos.
- 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 del grupo de nodos crea automáticamente un grupo de nodos nuevo que puede proporcionar esas capacidades.
Si quieres obtener información para 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 métricas.
Conclusión
Si aplicas estas estrategias de ajuste de escala automático, podrás administrar de manera eficaz las cargas de trabajo fluctuantes de IA/AA. Al igual que el administrador de la tienda Cymbal Shops navegó por su evento de ventas pico administrando sus recursos de manera flexible, puedes usar el ajuste de escala 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 teniendo un buen rendimiento durante los picos de tráfico y sean rentables durante los períodos de menor actividad, lo que mantiene tu entorno con el tamaño adecuado.
¿Qué sigue?
- Obtén una descripción general de las cargas de trabajo de inferencia de IA/AA en GKE.
- Obtén más información para entregar LLMs abiertos en GKE con una arquitectura preconfigurada.
- Obtén más información para aplicar ComputeClasses a los Pods de forma predeterminada.