Batching
Batching en inferencia de modelos es la práctica de agrupar múltiples solicitudes de entrada y procesarlas juntas en una sola pasada hacia adelante a través del modelo, mejorando la utilización de GPU y el rendimiento. El batching continuo extiende esto insertando y eliminando secuencias a mitad de la generación en lugar de esperar a que un lote completo se termine.
Batching agrega múltiples solicitudes de inferencia—cada una una secuencia de tokens—en un único tensor enviado al modelo simultáneamente. Las operaciones de multiplicación de matriz de GPU procesan un lote de n secuencias casi tan rápido como una sola secuencia cuando la capacidad de memoria lo permite, porque el costo fijo de cargar pesos del modelo desde la memoria se amortiza en todos los miembros del lote. Sin batching, cada solicitud incurre ese gasto general independientemente, dejando las GPUs subutilizadas.
En batching estático (o síncrono), un grupo fijo de solicitudes se ensambla antes de que comience la generación; todas las secuencias deben completarse antes de que se libere el lote, por lo que las solicitudes que terminan rápido permanecen inactivas esperando a las lentas. Este bloqueo de cabeza de línea típicamente produce utilización de GPU del 20–40% bajo cargas de trabajo de longitud mixta. Batching continuo, introducido en el artículo de investigación de Orca (2022) y adoptado por vLLM (2023), programa a nivel de iteración: las secuencias completadas se desalojan y se insertan nuevas solicitudes en cada paso de decodificación, manteniendo la GPU completamente cargada independientemente de la varianza de longitud de secuencia. Esto aumenta la utilización al 70–90%+ en la práctica.
Batching es el mecanismo principal por el cual los sistemas de servicio amortizan el gasto general de GPU en usuarios concurrentes. También es la palanca principal disponible para operadores que desean aumentar el rendimiento sin agregar hardware. El costo es latencia aumentada para solicitudes individuales, porque una solicitud debe a veces esperar en cola hasta que se abre una ranura de lote—un compromiso que puede ajustarse variando el tamaño máximo de lote y la política de programación.
A partir de 2026, batching continuo es la estrategia predeterminada en los principales runtimes de LLM de código abierto—vLLM, LMDeploy, SGLang y MLC-LLM—y se usa internamente por todos los grandes proveedores de inferencia comercial. Las áreas de investigación activas incluyen prefill fragmentado (intercalar procesamiento de prompt con decodificación para reducir picos de latencia), batching especulativo y arquitecturas desagregadas que separan cargas de trabajo de prefill y decodificación en diferentes grupos de hardware para un control de recursos más fino.