Continuous Batching
Aprende cómo el procesamiento por lotes continuo (continuous batching) optimiza el rendimiento de la GPU y reduce la latencia. Descubre cómo usar Ultralytics YOLO26 para maximizar la eficiencia en tareas de ML en producción.
El procesamiento por lotes continuo es una técnica avanzada de programación y optimización de inferencia utilizada en machine learning (ML) para maximizar la utilización del hardware y el rendimiento. En el procesamiento por lotes estático tradicional, un motor de inferencia espera a que se acumule un número predeterminado de solicitudes antes de procesarlas simultáneamente. Esto a menudo genera ineficiencias porque el sistema debe esperar a que finalice la solicitud más larga del lote antes de liberar los recursos. El procesamiento por lotes continuo, también conocido como procesamiento por lotes dinámico o a nivel de iteración, resuelve este problema al inyectar nuevas solicitudes en el lote de computación tan pronto como se completa una solicitud activa, lo que reduce significativamente el tiempo de inactividad en las GPUs y mejora la eficiencia general.
Distinguir conceptos relacionados#
Para entender mejor cómo se procesan los datos durante el despliegue de un modelo, resulta útil diferenciar el procesamiento por lotes continuo de otros términos relacionados en el glosario:
- Batch Size: Esto se refiere al número fijo de muestras procesadas simultáneamente durante el entrenamiento o la inferencia. Los flujos de trabajo de procesamiento por lotes tradicionales dependen de tamaños estáticos, mientras que el procesamiento por lotes continuo permite que el tamaño de lote efectivo fluctúe dinámicamente según el tráfico entrante.
- Real-Time Inference: Este concepto se centra en minimizar la latencia de inferencia para predicciones inmediatas, procesando entradas individuales a medida que llegan. El procesamiento por lotes continuo puentea la brecha entre el procesamiento por lotes estático de alto rendimiento y la inferencia en tiempo real de baja latencia al mantener un alto rendimiento sin obligar a las solicitudes rápidas a esperar a las más lentas.
Aplicaciones en el mundo real#
El procesamiento por lotes continuo es fundamental para los sistemas de producción que manejan grandes volúmenes de solicitudes impredecibles. Aquí tienes dos ejemplos concretos de su aplicación:
-
High-Throughput Text Generation: Al servir Large Language Models (LLMs), generar respuestas para diferentes usuarios toma cantidades de tiempo variables según la longitud de salida. Los frameworks que aprovechan el procesamiento por lotes continuo, como vLLM en Ray Serve, pueden transmitir continuamente tokens recién generados y reemplazar inmediatamente las conversaciones terminadas por nuevas indicaciones. Este método, popularizado originalmente por la investigación sobre programación a nivel de iteración, mejora drásticamente el rendimiento de generación de texto.
-
Asynchronous Video Analytics: En tareas de comprensión de video, como el seguimiento de vehículos en la red de cámaras de tráfico de una ciudad, los fotogramas llegan a diferentes intervalos. El procesamiento por lotes continuo permite que los modelos de seguimiento de objetos procesen dinámicamente los fotogramas de video entrantes en el milisegundo en que se liberan los recursos, optimizando las tuberías de aceleración de hardware para paneles de ciudades inteligentes.
Procesamiento continuo en tareas de visión#
Al gestionar prácticas de despliegue de modelos de alto tráfico, transmitir inferencias de forma iterativa puede simular los beneficios del procesamiento por lotes dinámico al garantizar que la memoria se libere progresivamente en lugar de bloquearse. El siguiente ejemplo de Python demuestra cómo utilizar el patrón de generador con la API de predicción de modelos para gestionar un flujo continuo de imágenes de manera eficiente.
from ultralytics import YOLO
# Load the latest Ultralytics YOLO26 model
model = YOLO("yolo26n.pt")
# Using stream=True acts as a generator, iteratively processing inputs
# to keep memory usage low and throughput high
results = model.predict(source=["img1.jpg", "img2.jpg", "img3.jpg"], stream=True)
# Process each result as soon as it completes
for result in results:
print(f"Detected {len(result.boxes)} objects in this frame.")La gestión de la programación de recursos a nivel del sistema requiere un equilibrio entre velocidad bruta y coste operativo. Los equipos que despliegan modelos masivos de computer vision (CV) y de lenguaje confían cada vez más en frameworks de servicio avanzados para gestionar estos lotes dinámicos. Para los equipos empresariales que buscan optimizar su infraestructura, la Ultralytics Platform ofrece herramientas robustas para entrenar, monitorizar y exportar modelos a entornos de producción altamente optimizados.






