Optimiza el rendimiento de GPU en entornos Kubernetes consolidando cargas de trabajo

En entornos de Kubernetes de producción, la discrepancia entre los requisitos del modelo y el tamaño de la GPU genera ineficiencias. Modelos ligeros de reconocimiento automático de voz (ASR) o texto a voz (TTS) pueden requerir solo 10 GB de VRAM, ocupando sin embargo una GPU completa en despliegues estándar de Kubernetes. Esto se debe a que el programador asigna un modelo a una o más GPUs y no puede compartir fácilmente entre GPUs y modelos, dejando recursos computacionales costosos subutilizados.

Resolver esta situación no solo implica reducir costos, sino también optimizar la densidad del clúster para atender a más usuarios concurrentes con el mismo hardware de alta calidad. Esta guía detalla cómo implementar y evaluar estrategias de particionamiento de GPU, específicamente NVIDIA Multi-Instance GPU (MIG) y la división temporal para utilizar completamente los recursos computacionales.

Utilizando una pipeline de voz AI de grado de producción como nuestro banco de pruebas, mostramos cómo combinar modelos para maximizar el retorno de inversión (ROI) de la infraestructura, manteniendo una confiabilidad superior al 99% y estrictas garantías de latencia.

Abordando la fragmentación de recursos GPU

Por defecto, el Plugin de Dispositivos NVIDIA para Kubernetes muestra las GPUs como recursos enteros. Un pod solicita nvidia.com/gpu: 1, y el programador lo asigna a un dispositivo físico.

Modelos de lenguaje grande (LLMs) como NVIDIA Nemotron, Llama 3 o Qwen 7B/8B requieren computación dedicada para mantener un bajo tiempo hasta el primer token (TTFT) y un alto rendimiento por lotes. Sin embargo, los modelos de soporte en una pipeline de AI generativa, como modelos de embedding, ASR, TTS o garantes, a menudo utilizan solo una fracción de una tarjeta. Ejecutar estos modelos ligeros en GPUs dedicadas resulta en:

  • Baja utilización: la utilización de computación GPU suele estar cerca del 0-10%.
  • Ampliación del clúster: se requieren más nodos para ejecutar el mismo número de pods.
  • Fricción en el escalado: añadir una nueva capacidad requiere una nueva GPU física.
Ilustración de un hombre mayor con auriculares y chaqueta