BLOG | NGINX

Una guía rápida para escalar cargas de trabajo de IA/ML en Kubernetes

NGINX - Parte de F5 - horizontal, negro, tipo RGB
Miniatura de Ilya Krutov
Ilya Krutov
Publicado el 11 de enero de 2024

Al ejecutar el entrenamiento y la inferencia de modelos de inteligencia artificial (IA) y aprendizaje automático (ML) en Kubernetes, el escalamiento dinámico hacia arriba y hacia abajo se convierte en un elemento crítico. Además de requerir almacenamiento y redes de gran ancho de banda para ingerir datos, el entrenamiento de modelos de IA también necesita una cantidad sustancial (y costosa) de recursos computacionales, principalmente de GPU u otros procesadores especializados. Incluso cuando se aprovechan modelos previamente entrenados, tareas como el servicio de modelos y el ajuste en producción aún requieren un mayor uso de recursos computacionales que la mayoría de las cargas de trabajo empresariales.

Kubernetes nativo de la nube está diseñado para una rápida escalabilidad, tanto hacia arriba como hacia abajo. También está diseñado para brindar mayor agilidad y un uso rentable de los recursos para cargas de trabajo dinámicas en entornos híbridos y de múltiples nubes.

En este blog, cubrimos las tres formas más comunes de escalar cargas de trabajo de IA/ML en Kubernetes para que pueda lograr un rendimiento óptimo, ahorro de costos y adaptabilidad para el escalamiento dinámico en diversos entornos.

Tres modalidades de escalado para cargas de trabajo de IA/ML en Kubernetes

Las tres formas comunes en que Kubernetes escala una carga de trabajo son con el escalador automático de pods horizontal (HPA), el escalador automático de pods vertical (VPA) y el escalador automático de clúster.

A continuación se presenta un desglose de esos tres métodos:

  • HPA : el equivalente a agregar instancias o réplicas de pods a una aplicação, lo que le otorga más escala, capacidad y rendimiento.
  • VPA : el equivalente a cambiar el tamaño de un pod para darle mayor capacidad con mayor capacidad de procesamiento y memoria.
  • Escalador automático de clúster : aumenta o disminuye automáticamente la cantidad de nodos en un clúster de Kubernetes según la demanda actual de recursos para los pods.

Cada modalidad tiene sus beneficios para el entrenamiento y la inferencia de modelos, que puedes explorar en los casos de uso a continuación.

Casos de uso de HPA

En muchos casos, las cargas de trabajo de inferencia y entrenamiento de modelos de IA distribuidos pueden escalar horizontalmente (es decir, agregar más pods para acelerar el proceso de entrenamiento o el manejo de solicitudes). Esto permite que las cargas de trabajo se beneficien de HPA, que puede escalar la cantidad de pods en función de métricas como el uso de CPU y memoria, o incluso métricas personalizadas y externas relevantes para la carga de trabajo. En escenarios donde la carga de trabajo varía con el tiempo, HPA puede ajustar dinámicamente la cantidad de pods para garantizar una utilización óptima de los recursos.

Otro aspecto del escalamiento horizontal de las cargas de trabajo de IA en Kubernetes es el equilibrio de carga. Para garantizar un rendimiento óptimo y un procesamiento oportuno de las solicitudes, las solicitudes entrantes deben distribuirse entre varias instancias o pods. Es por esto que una de las herramientas ideales que se pueden utilizar junto con HPA es un controlador Ingress .

Diagrama de Kubernetes con controlador de ingreso

Casos de uso de VPA

Las tareas de entrenamiento de modelos de IA suelen consumir muchos recursos y requieren importantes recursos de CPU, GPU y memoria. VPA puede ajustar estas asignaciones de recursos dinámicamente. Esto ayuda a garantizar que cada pod tenga suficientes recursos para manejar eficientemente la carga de trabajo de entrenamiento y que todos los pods asignados tengan suficiente capacidad computacional para realizar cálculos. Además, los requisitos de memoria pueden fluctuar significativamente durante el entrenamiento de modelos grandes. VPA puede ayudar a prevenir errores de falta de memoria al aumentar la asignación de memoria según sea necesario.

Si bien es técnicamente posible usar HPA y VPA juntos, se requiere una configuración cuidadosa para evitar conflictos, ya que podrían intentar escalar la misma carga de trabajo de diferentes maneras (es decir, horizontalmente versus verticalmente). Es esencial definir claramente los límites de cada escalador automático, garantizando que se complementen en lugar de entrar en conflicto entre sí. Un enfoque emergente es utilizar ambos con diferentes alcances: por ejemplo, HPA para escalar entre múltiples pods según la carga de trabajo y VPA para ajustar la asignación de recursos de cada pod dentro de los límites establecidos por HPA.

Casos de uso del escalador automático de clústeres

Cluster Autoscaler puede ayudar a ajustar dinámicamente el conjunto general de recursos de infraestructura de computación, almacenamiento y red disponibles en todo el clúster para satisfacer las demandas de las cargas de trabajo de IA/ML. Al ajustar la cantidad de nodos de un clúster en función de las demandas actuales, una organización puede equilibrar la carga a nivel macro. Esto es necesario para garantizar un rendimiento óptimo, ya que las cargas de trabajo de IA/ML pueden demandar recursos computacionales significativos de manera impredecible.

HPA, VPA y Cluster Autoscaler tienen cada uno una función

En resumen, estas son las tres formas en que el escalamiento automático de Kubernetes funciona y beneficia las cargas de trabajo de IA:

  • HPA escala el modelo de IA que presta servicio a puntos finales que necesitan gestionar distintas tasas de solicitudes.
  • VPA optimiza la asignación de recursos para las cargas de trabajo de IA/ML y garantiza que cada pod tenga suficientes recursos para un procesamiento eficiente sin aprovisionamiento excesivo.
  • Cluster Autoscaler agrega nodos a un clúster para garantizar que pueda alojar trabajos de IA que consumen muchos recursos o elimina nodos cuando las demandas de cómputo son bajas.

HPA, VPA y Cluster Autoscaler se complementan entre sí en la gestión de cargas de trabajo de IA/ML en Kubernetes. Cluster Autoscaler garantiza que haya suficientes nodos para satisfacer las demandas de carga de trabajo, HPA distribuye eficientemente las cargas de trabajo entre múltiples pods y VPA optimiza la asignación de recursos de estos pods. Juntos, proporcionan una solución integral de escalamiento y gestión de recursos para aplicações de IA/ML en entornos Kubernetes.

Visite nuestra página Potencie y proteja su recorrido de IA para obtener más información sobre cómo F5 y NGINX pueden ayudarle a entregar, proteger y optimizar sus cargas de trabajo de IA/ML.


"Esta publicación de blog puede hacer referencia a productos que ya no están disponibles o que ya no reciben soporte. Para obtener la información más actualizada sobre los productos y soluciones F5 NGINX disponibles, explore nuestra familia de productos NGINX . NGINX ahora es parte de F5. Todos los enlaces anteriores de NGINX.com redirigirán a contenido similar de NGINX en F5.com.