Continuous Batching
Aprende cómo el procesamiento por lotes continuo optimiza el rendimiento de la GPU y reduce la latencia. Descubre cómo utilizar 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 dinámico o a nivel de iteración, resuelve esto inyectando nuevas solicitudes en el lote de cómputo tan pronto como se completa una solicitud activa, lo que reduce significativamente el tiempo de inactividad en GPUs y mejora la eficiencia general.
Link to this sectionDistinguir conceptos relacionados#
Para entender mejor cómo se procesan los datos durante el despliegue de modelos, resulta útil diferenciar el procesamiento por lotes continuo de otros términos relacionados en el glosario:
- Batch Size: 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 del 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 cierra 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.
Link to this sectionAplicaciones en el mundo real#
El procesamiento por lotes continuo es fundamental para los sistemas de producción que gestionan grandes volúmenes de solicitudes impredecibles. Aquí tienes dos ejemplos concretos de su aplicación:
-
Generación de texto de alto rendimiento: Al servir Large Language Models (LLMs), generar respuestas para diferentes usuarios lleva cantidades variables de tiempo dependiendo de la longitud de la salida. Los marcos que aprovechan el procesamiento por lotes continuo, como vLLM en Ray Serve, pueden transmitir continuamente tokens recién generados e intercambiar inmediatamente las conversaciones finalizadas por nuevas solicitudes. Este método, popularizado originalmente por la investigación sobre la programación a nivel de iteración, mejora drásticamente el rendimiento de la generación de texto.
-
Análisis de video asíncrono: En tareas de video understanding, 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 object tracking procesen dinámicamente los fotogramas de video entrantes en el milisegundo en que los recursos se liberan, optimizando los conductos de aceleración de hardware para paneles de control de ciudades inteligentes.
Link to this sectionProcesamiento continuo en tareas de visión#
Al gestionar prácticas de despliegue de modelos con mucho tráfico, la transmisión de inferencias de forma iterativa puede simular los beneficios del procesamiento por lotes dinámico, asegurando que la memoria se libere progresivamente en lugar de quedar bloqueada. El siguiente ejemplo de Python demuestra cómo utilizar el patrón de generador con la API de predicción de modelos para manejar 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 de sistema requiere un equilibrio entre velocidad bruta y costo operativo. Los equipos que despliegan modelos masivos de computer vision (CV) y lenguaje dependen cada vez más de marcos 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, monitorear y exportar modelos a entornos de producción altamente optimizados.






