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

NGINX | 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 escalado dinámico de los recursos se convierte en un elemento fundamental. Además de requerir almacenamiento y redes de gran ancho de banda para incorporar los datos, el entrenamiento de modelos de IA también necesita una capacidad de computación considerable (y costosa), proporcionada principalmente por GPU u otros procesadores especializados. Incluso cuando se utilizan modelos preentrenados, tareas como el servicio de modelos y el ajuste fino en producción siguen requiriendo más recursos de computación que la mayoría de las cargas de trabajo empresariales.

Kubernetes nativo de la nube está diseñado para escalar rápidamente, tanto al alza como a la baja. También está concebido para ofrecer una mayor agilidad y un uso rentable de los recursos para cargas de trabajo dinámicas en entornos híbridos y multinube.

En este blog, analizamos las tres formas más habituales de escalar las cargas de trabajo de IA/ML en Kubernetes para lograr un rendimiento óptimo, ahorrar costes y adaptarse al escalado dinámico en distintos entornos.

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

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

A continuación, se detallan estos tres métodos:

  • HPA – Equivale a añadir instancias o réplicas de pods a una aplicación, lo que le proporciona mayor escalabilidad, capacidad y rendimiento.
  • VPA – Equivale a redimensionar un pod para dotarlo de mayor capacidad, con más recursos de computación y memoria.
  • Escalador automático de clústeres – Aumenta o reduce automáticamente el número de nodos de un clúster de Kubernetes en función de la demanda actual de recursos de los pods.

Cada modalidad ofrece ventajas para el entrenamiento y la inferencia de modelos, que puede explorar en los siguientes casos de uso.

Casos de uso de HPA

En muchos casos, las cargas de trabajo distribuidas de entrenamiento e inferencia de modelos de IA pueden escalar horizontalmente (es decir, añadiendo más pods para acelerar el proceso de entrenamiento o la gestión de solicitudes). Esto permite que las cargas de trabajo se beneficien del HPA, que puede aumentar el número de pods en función de métricas como el uso de CPU y memoria, o incluso de métricas personalizadas y externas relevantes para la carga de trabajo. En situaciones en las que la carga de trabajo varía con el tiempo, el HPA puede ajustar dinámicamente el número de pods para garantizar un uso óptimo de los recursos.

Otro aspecto del escalado horizontal de las cargas de trabajo de IA en Kubernetes es el balanceo de carga. Para garantizar un rendimiento óptimo y procesar las solicitudes a tiempo, las solicitudes entrantes deben distribuirse entre varias instancias o pods. Por este motivo, una de las herramientas idóneas que se pueden utilizar junto con HPA es un controlador de Ingress.

Casos de uso de VPA

Las tareas de entrenamiento de modelos de IA suelen consumir muchos recursos, ya que requieren una cantidad considerable de CPU, GPU y memoria. VPA puede ajustar dinámicamente la asignación de estos recursos. Esto ayuda a garantizar que cada pod disponga de recursos suficientes para gestionar de forma eficiente la carga de trabajo de entrenamiento y que todos los pods asignados tengan la capacidad de procesamiento necesaria para realizar los cálculos. Además, los requisitos de memoria pueden variar considerablemente durante el entrenamiento de modelos de gran tamaño. VPA puede ayudar a evitar errores por falta de memoria aumentando la memoria asignada según sea necesario.

Aunque técnicamente es posible utilizar HPA y VPA conjuntamente, es necesario configurarlos con cuidado para evitar conflictos, ya que podrían intentar escalar la misma carga de trabajo de formas distintas (es decir, horizontalmente frente a verticalmente). Es fundamental definir claramente los límites de cada autoescalador para garantizar que se complementen en lugar de entrar en conflicto. Un enfoque emergente consiste en utilizar ambos con ámbitos diferentes; por ejemplo, HPA para escalar entre varios pods en función de la carga de trabajo y VPA para ajustar con precisión 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 global de recursos de infraestructura de computación, almacenamiento y red disponibles en todo el clúster para satisfacer las necesidades de las cargas de trabajo de IA/ML. Al ajustar el número de nodos de un clúster en función de la demanda actual, una organización puede equilibrar la carga a nivel global. Esto es necesario para garantizar un rendimiento óptimo, ya que las cargas de trabajo de IA/ML pueden requerir de forma impredecible una cantidad considerable de recursos computacionales.

HPA, VPA y Cluster Autoscaler desempeñan cada uno una función

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

  • HPA escala los endpoints de servicio de modelos de IA que necesitan gestionar tasas de solicitudes variables.
  • VPA optimiza la asignación de recursos para las cargas de trabajo de IA/ML y garantiza que cada pod disponga de recursos suficientes para un procesamiento eficiente sin sobredimensionarlos.
  • Cluster Autoscaler añade nodos a un clúster para garantizar que pueda alojar trabajos de IA que requieren muchos recursos, o elimina nodos cuando la demanda de recursos informáticos es baja.

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 las cargas de trabajo, HPA distribuye eficientemente las cargas de trabajo entre varios pods y VPA optimiza la asignación de recursos de estos pods. En conjunto, proporcionan una solución integral de escalado y gestión de recursos para aplicaciones de IA/ML en entornos de Kubernetes.

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


Compartir

Sobre el autor

Ilya Krutov
Ilya KrutovResponsable sénior de marketing de producto | F5 NGINX

Más artículos de Ilya Krutov

Artículos relacionados del blog

Únete a F5 NGINX en AppWorld 2024
NGINX | 04/01/2024

Únete a F5 NGINX en AppWorld 2024

Descubre las numerosas razones para asistir al evento insignia de F5, que incluirá un emocionante anuncio sobre la cartera de productos NGINX.

Rotación de certificados SSL/TLS sin reinicios en NGINX Open Source
NGINX | 26/09/2023

Rotación de certificados SSL/TLS sin reinicios en NGINX Open Source

La función de diccionario compartido permite configurar NGINX sin necesidad de reiniciarlo al renovar los certificados SSL/TLS.

Exposición de APIs en Kubernetes
NGINX | 10/03/2022

Exposición de APIs en Kubernetes

La unidad 2 de Microservices March 2022 se centra en cómo exponer tus API en Kubernetes. Aquí tienes enlaces a los recursos que necesitas: la retransmisión en directo del 14 de marzo, artículos de blog y otros recursos de preparación, y el laboratorio práctico «Protege las API de Kubernetes mediante la limitación de solicitudes».

NGINX Sprint 2.0: visión clara, código renovado y nuevos compromisos con el código abierto
NGINX | 23/08/2021

NGINX Sprint 2.0: visión clara, código renovado y nuevos compromisos con el código abierto

Hoy, en NGINX Sprint 2.0, anunciamos cómo respaldaremos nuestra visión del futuro de las aplicaciones modernas con una mayor presencia en la comunidad de código abierto, incluida la participación en el proyecto comunitario Kubernetes, nuevos proyectos de software de código abierto y la arquitectura de referencia para aplicaciones modernas.

Presentamos NGINX Plus R22
NGINX | 09/06/2020

Presentamos NGINX Plus R22

NGINX Plus R22 incorpora nuevas funcionalidades, como la compatibilidad con OCSP para verificar la revocación de certificados en TLS mutuo, el uso de varios proveedores de identidad OIDC en una configuración, el seguimiento en tiempo real de la limitación de solicitudes y conexiones en el panel de NGINX Plus y mejoras en NGINX JavaScript.

Presentamos NGINX Plus R17
NGINX | 11/12/2018

Presentamos NGINX Plus R17

NGINX Plus R17 incorpora compatibilidad con la limitación de velocidad en dos fases y con TLS 1.3, la versión más reciente del protocolo Transport Layer Security. La configuración de OpenID Connect es más sencilla y NGINX ModSecurity WAF es el doble de rápido que antes. También se ha actualizado el módulo JavaScript de NGINX.