En este documento se ofrece una descripción general de los conceptos de escalado automático para cargas de trabajo de IA y aprendizaje automático en Google Kubernetes Engine (GKE).
Este documento está dirigido a ingenieros de aprendizaje automático que no tienen experiencia con GKE. Te recomendamos que leas los siguientes documentos de la serie para familiarizarte con el uso de GKE en cargas de trabajo de IA y aprendizaje automático:
- Por qué usar GKE para la inferencia de IA y aprendizaje automático
- Información sobre la inferencia de modelos de IA y aprendizaje automático en GKE
- Conceptos de autoescalado simplificados para cargas de trabajo de IA y aprendizaje automático en GKE (este documento)
Antes de empezar
Debes tener conocimientos básicos sobre los siguientes conceptos:
- Objetos fundamentales de Kubernetes: descubre qué son los contenedores, los pods y los nodos, y cómo se relacionan entre sí.
- Arquitectura básica de los clústeres de GKE: descubre cómo interactúan entre sí los distintos componentes de los clústeres de GKE.
El reto: satisfacer la demanda máxima
Cymbal Shops, una tienda online ficticia, se está preparando para su evento de rebajas anual. El motor de recomendaciones basado en IA de la tienda debe proporcionar sugerencias personalizadas en tiempo real a una gran afluencia de compradores online.
Si el motor de recomendaciones se ralentiza, la experiencia de usuario se verá afectada y se perderán ventas. Sin embargo, aprovisionar una capacidad de servidor excesiva no es rentable durante los periodos de tráfico normal. El objetivo es que los recursos se escalen automáticamente en función de la demanda para ofrecer una buena experiencia de usuario y, al mismo tiempo, mantener los costes bajo control.
La solución: el autoescalado bajo demanda
El autoescalado de GKE funciona como un encargado de una tienda que se prepara para un periodo de rebajas. En lugar de mantener un edificio enorme con todo el personal y la energía activados en todo momento, el gerente ajusta dinámicamente toda la capacidad de la tienda (personal, superficie y equipos) para satisfacer las necesidades de los clientes 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) en función de la demanda en tiempo real.
Ventajas empresariales del autoescalado de GKE
Al combinar estrategias de escalado horizontal y vertical, GKE ofrece un enfoque sólido que proporciona tres ventajas principales:
- Optimización de costes: solo pagas por los recursos de computación que usas y evitas los gastos derivados de un aprovisionamiento excesivo. El autoescalado de GKE evita el desperdicio al ajustar automáticamente el tamaño de tus aplicaciones a sus requisitos reales de CPU y memoria. También puede aprovisionar hardware especializado y caro (como GPUs) solo cuando sea necesario y eliminarlo cuando se haya completado el trabajo.
- Fiabilidad y rendimiento mejorados: tu aplicación puede escalarse automáticamente (añadir más copias) para gestionar picos de tráfico repentinos, lo que garantiza la estabilidad para tus usuarios. Al mismo tiempo, el escalado automático de GKE ayuda a evitar los errores habituales de falta de memoria (OOM) que pueden provocar que las aplicaciones fallen. En el caso de los trabajos de IA o aprendizaje automático exigentes, ayuda a garantizar que el hardware de alto rendimiento necesario esté disponible para ejecutarlos de forma eficiente y completarlos a tiempo.
- Menor sobrecarga operativa: la estrategia de escalado automático multidimensional de GKE simplifica significativamente la gestión de recursos. GKE automatiza las tareas complejas de ajuste de las solicitudes de recursos y de gestión de grupos de nodos especializados para diferentes hardware. Esta automatización permite a tus equipos de ingeniería centrarse en el desarrollo de aplicaciones en lugar de en la optimización de la infraestructura.
Autoescalado de cargas de trabajo
El autoescalado de cargas de trabajo ajusta automáticamente la potencia de tu aplicación para que se adapte a la demanda. GKE utiliza un sistema de escalado automático de dos niveles para gestionar los recursos de tu aplicación de forma eficiente.
Herramienta de adaptación dinámica horizontal de pods (HPA): añade más recursos.
La herramienta de adaptación dinámica horizontal de pods (HPA) monitoriza el uso de recursos de los pods de tu aplicación. En nuestra analogía, los pods son los "dependientes" y el HPA es el "encargado del equipo" que observa el nivel de actividad de los dependientes.
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 ahorrar recursos.
Para obtener más información, consulta Autoescalado horizontal de pods.
Herramienta de adaptación dinámica vertical de pods (VPA): aumentar la potencia de los recursos
Mientras que el escalado horizontal se centra en aumentar la cantidad de recursos, el escalado vertical es una estrategia complementaria que se centra en aumentar la potencia de los recursos actuales. En el contexto de la analogía de nuestra tienda física, no se trata de contratar a más personal, sino de mejorar las capacidades del equipo actual para aumentar su eficiencia individual.
El autoescalado vertical a nivel de pod se gestiona mediante la herramienta de autoescalado vertical de pods (VPA). El VPA analiza el consumo de recursos de tu aplicación y ajusta al alza o a la baja las solicitudes de CPU y memoria del pod para que coincidan con su uso real.
El VPA puede ajustar las solicitudes y los límites de recursos de un pod. Por ejemplo, puede volver a aprovisionar el pod para que pase de 1 CPU y 16 GB a 4 CPUs y 64 GB. Este proceso implica reiniciar el Pod con su nueva configuración, que es más potente, para gestionar mejor su carga de trabajo.
Para obtener más información, consulta los siguientes recursos:
- Autoescalado vertical de pods
- Aumentar las solicitudes y los límites de recursos de los contenedores
HPA y VPA son complementarias. HPA ajusta el número de pods en función de los cambios en el tráfico, mientras que VPA ayuda a que cada uno de esos pods tenga el tamaño adecuado para su tarea. Estas estrategias de escalado evitan que se desperdicien recursos, que se incurra en costes innecesarios y que tu aplicación siga respondiendo y estando disponible durante las fluctuaciones del tráfico. Sin embargo, no recomendamos usar HPA y VPA en las mismas métricas (CPU y memoria), ya que pueden entrar en conflicto. Para obtener más información, consulta Limitaciones del autoescalado horizontal de pods.
Autoescalado de infraestructuras
El autoescalado de la infraestructura añade o elimina hardware automáticamente para adaptarse a las demandas de tus cargas de trabajo.
Herramienta de adaptación dinámica de clústeres: el administrador del edificio
El escalador automático de clústeres ayuda a garantizar que haya suficiente infraestructura subyacente (máquinas virtuales o nodos en el contexto de GKE) para alojar los pods. Los nodos se pueden comparar con las "plantas" de una tienda, donde la herramienta de adaptación dinámica de clústeres es el "administrador del edificio".
Si el HPA necesita añadir más pods, pero los nodos no tienen capacidad disponible, la herramienta de ajuste automático de escala del clúster aprovisiona un nuevo nodo. Por el contrario, si un nodo se infrautiliza, la herramienta de escalado automático del clúster mueve los pods de ese nodo a otros nodos y termina el nodo que ahora está 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 la herramienta de adaptación dinámica del clúster añade nodos a los grupos de nodos, la creación automática de grupos de nodos amplía la capacidad de la herramienta de adaptación dinámica del clúster, ya que le permite crear automáticamente grupos de nodos que se ajusten a las necesidades específicas de tus pods.
Algunas cargas de trabajo de IA o aprendizaje automático requieren hardware especializado de alto rendimiento, como GPUs o TPUs, 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 requieran. De esta forma, te aseguras de que incluso las tareas que requieren más recursos computacionales 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 ver los aceleradores disponibles en GKE, consulta lo siguiente:
ComputeClasses: el activador de 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 de un tipo de hardware específico (como nvidia-l4-vws), usar un ComputeClass es el método más resistente y moderno. Una ComputeClass es un recurso de GKE que defines y que actúa según un conjunto de reglas para controlar y personalizar el autoescalado de tu hardware. Aunque no es una herramienta de adaptación dinámica, funciona con la herramienta de adaptación dinámica de clústeres.
Siguiendo con 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 del modelo 500 de la marca X"), solicita una función mediante el formulario de solicitud (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.
ComputeClasses separa la solicitud de hardware de tu pod de la acción de aprovisionamiento de GKE. En lugar de que tu pod exija una máquina específica (como a3-highgpu-8g), puede solicitar una ComputeClass. La propia ComputeClass define la lógica "inteligente", una lista de reglas priorizadas que indica a GKE cómo debe cumplir esa solicitud.
Para obtener más información, consulta Acerca de las ComputeClasses de GKE.
Para obtener información detallada sobre las ComputeClasses con ejemplos reales y configuraciones YAML, consulta la guía técnica Optimizar cargas de trabajo de GKE con ComputeClasses personalizadas.
Métricas y activadores clave para el autoescalado
Para tomar decisiones de escalado fundamentadas, los componentes de escalado automático monitorizan diferentes señales. En la siguiente tabla se comparan los activadores de escalado automático basado 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. Tenemos que distribuir este tráfico inmediatamente". | Escala horizontalmente: cambia el número de réplicas de pods para satisfacer la demanda. |
| VPA | Eficiencia de ajuste de tamaño | El consumo histórico, por ejemplo, el uso medio de RAM durante las últimas 24 horas. | "Las necesidades de recursos de este pod han cambiado o nuestras estimaciones iniciales eran incorrectas. Tenemos que ajustar la asignación de recursos para que coincida con su uso real". | Escala verticalmente u horizontalmente: 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 completadas. Por ejemplo, el pod tiene el estado "Pendiente" porque no hay nodos de GPU. | "No se puede iniciar este pod porque falta el hardware físico que ha solicitado". | Provisión de infraestructura: crea grupos de nodos con el hardware específico. |
Activadores de la herramienta de adaptación dinámica horizontal de pods (HPA): reaccionar a la carga
HPA aumenta o reduce el número de pods en función de las métricas de rendimiento en tiempo real. Por ejemplo, la utilización de la CPU y la memoria, las métricas fundamentales que indican la carga de procesamiento de tus pods, están disponibles de forma predeterminada para HPA.
Sin embargo, algunas métricas necesitan configuraciones explícitas, como las siguientes:
- Métricas del balanceador de carga (solicitudes por segundo [RPS]): una medida directa del tráfico de la aplicación que permite obtener respuestas de escalado más rápidas. Para usar esta métrica, consulta Habilitar el balanceo de carga basado en la utilización y el perfil de HPA de rendimiento.
- Métricas personalizadas: configura el autoescalado en función de métricas empresariales personalizadas, como "número de usuarios activos", para gestionar los recursos de forma proactiva en función de la demanda prevista. Para usar métricas personalizadas, debe 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 de la herramienta de adaptación dinámica vertical de pods (VPA): reaccionar a las necesidades de recursos
VPA ajusta el tamaño de tu pod (lo aumenta o lo reduce) monitorizando 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 de VPA es evitar la contención de recursos aumentando o disminuyendo las solicitudes de memoria y CPU de un pod para que se ajusten a sus necesidades reales.
Activadores de creación automática de grupos de nodos: reaccionar a solicitudes de hardware
La creación automática de grupos de nodos aprovisiona grupos de nodos con hardware especializado. No se activa por métricas de rendimiento, como la carga de la CPU. En su lugar, se activa mediante la solicitud de recursos de un pod:
- Solicitud de recurso no programable: un activador de clave. Cuando se crea un pod, solicita hardware específico. Si el clúster no puede completar esta solicitud porque ningún nodo tiene ese hardware, se crea automáticamente un grupo de nodos.
- Solicitud ComputeClass: un pod solicita un ComputeClass, por ejemplo,
cloud.google.com/compute-class: premium-gpu. Si ningún nodo del clúster puede proporcionar las funciones "premium-gpu", la creación automática de grupos de nodos crea automáticamente un nuevo grupo de nodos que sí puede proporcionar esas funciones.
Para saber cómo usar métricas personalizadas, de Prometheus y externas para conseguir el autoescalado, consulta Información sobre el autoescalado de cargas de trabajo basado en métricas.
Conclusión
Si aplicas estas estrategias de escalado automático, podrás gestionar de forma eficaz las cargas de trabajo de IA y aprendizaje automático fluctuantes. Al igual que el gerente de la tienda Cymbal Shops gestionó su evento de ventas más importante de forma flexible, puedes usar el escalado automático de GKE para ampliar y reducir automáticamente los recursos de tu infraestructura y carga de trabajo. De esta forma, tus modelos seguirán funcionando bien durante los picos de tráfico y serán rentables en los periodos de menor actividad, lo que te permitirá mantener el tamaño adecuado de tu entorno.
Siguientes pasos
- Consulta una descripción general de las cargas de trabajo de inferencia de IA y aprendizaje automático en GKE.
- Consulta cómo servir LLMs abiertos en GKE con una arquitectura preconfigurada.
- Consulta cómo aplicar ComputeClasses a los pods de forma predeterminada.