- Algunos modelos de IA como DeepSeek-V3 son baratos y rápidos cuando se ofrecen a gran escala, pero al ejecutarse en local son lentos y costosos
- La razón está en un trade-off fundamental entre throughput (rendimiento) y latency (latencia) relacionado con la eficiencia de uso de la GPU
- Si se aumenta el tamaño del batch, la GPU trabaja con mayor eficiencia, pero el usuario debe esperar a que se acumulen los tokens, lo que provoca mayor latencia
- Los modelos con arquitectura Mixture-of-Experts y pipelines profundos requieren batches grandes y más latencia
- En un entorno local de un solo usuario, es difícil formar un batch lo suficientemente grande, lo que provoca menor rendimiento y mayores costos
- OpenAI, Anthropic y otros logran respuestas rápidas mediante una arquitectura más eficiente, estrategias avanzadas de batching o incluso usando una cantidad excesiva de GPU
Inferencia por lotes y eficiencia de la GPU
- La GPU es hardware optimizado para multiplicación de matrices a gran escala (GEMM)
- Si los tokens de varios usuarios se agrupan y se ejecutan como una matriz grande en batch, el throughput mejora drásticamente gracias a la baja sobrecarga de ida y vuelta y la eficiencia de memoria
- El servidor de inferencia acumula en cola los tokens de varias solicitudes, selecciona un batch de tamaño adecuado y ejecuta operaciones GEMM a gran escala
- En este proceso, el servidor debe elegir entre el trade-off de tamaño del batch (más throughput) y tiempo de espera (más latencia)
Por qué algunos modelos están optimizados para batches grandes
Mixture of Experts (MoE) y batching
- La arquitectura MoE (DeepSeek-V3, estimado GPT-4) es una causa principal de baja eficiencia de GPU
- Como cientos de bloques “expertos” requieren multiplicaciones de matrices separadas, en batches pequeños cada experto tiene poco trabajo y la eficiencia cae
- Solo con muchas solicitudes simultáneas se pueden aprovechar suficientemente todos los expertos, así que a nivel de servicio los batches grandes son esenciales
- Con una espera corta (ventana de 5 ms), los expertos quedan inactivos con frecuencia; con una espera larga (ventana de 200 ms), se puede maximizar la eficiencia
Problemas de batching en modelos con pipelines profundos
- Los transformers grandes con cientos de capas se ejecutan dividiendo las capas entre varias GPU (pipelining)
- Si la cantidad de tokens dentro de un batch es menor que los pasos del pipeline, aparece el fenómeno de pipeline bubble, lo que reduce el throughput
- Para evitarlo, es indispensable usar batches grandes (y por tanto más espera), lo que alarga el tiempo de respuesta del modelo
Por qué no siempre se puede mantener la cola llena
- En teoría, si hubiera suficiente tráfico concurrente como para llenar siempre la cola, parecería posible evitar las burbujas
- Pero en la práctica, en la etapa de Attention del transformer solo se puede hacer batching si todas las matrices tienen la misma longitud, por lo que es difícil que una sola cola funcione de manera perfecta
- Además, si se separan las etapas de FFN y attention, aumentan fuertemente la sobrecarga de memoria y los problemas de ineficiencia por movimiento de datos
Resumen y conclusión
- El procesamiento con batches grandes es esencial para reducir el costo de GPU y mejorar el throughput, pero aumenta el tiempo de espera del usuario
- Los modelos con Mixture-of-Experts y arquitecturas de pipeline grande están optimizados de forma inherente para entornos de batching de alta eficiencia basados en espera
- En entornos con poco tráfico, como el uso local, no es posible construir batches grandes optimizados, por lo que la eficiencia de GPU cae bruscamente y el costo de ejecución sube
- OpenAI, Anthropic y otros muestran alta rapidez de respuesta, y esto podría deberse a que
- (1) usan una arquitectura más eficiente que MoE
- (2) aplican optimizaciones avanzadas de batching/pipeline y trucos sofisticados de inferencia
- (3) podrían estar usando muchas más GPU de las necesarias para “comprar” velocidad
Extra: diferencia entre el batch de prefill y el batch del cuerpo principal
- En los transformers, también es posible ejecutar en batch el prefill (entrada larga) del prompt de un usuario para acelerar la inferencia inicial
- Sin embargo, el batching discutido en el texto se refiere al trade-off entre throughput y latencia durante la etapa real de generación de tokens de múltiples solicitudes de usuarios
- El batch de prefill no está directamente relacionado con el batching concurrente de gran tamaño mencionado en el texto
Notas adicionales
- Los sistemas de inferencia reales también suelen usar continuous batching, ejecutando de inmediato cuando el batch se llena
- Pero la estructura fundamental del trade-off entre throughput y latencia sigue siendo la misma
1 comentarios
Opiniones en Hacker News