Continuous Batching
了解连续批处理如何优化 GPU 吞吐量并降低延迟。发现如何使用 Ultralytics YOLO26 在生产级 ML 任务中最大限度地提高效率。
连续批处理(Continuous batching)是一种先进的调度和推理优化技术,用于机器学习 (ML)中,以最大化硬件利用率和吞吐量。在传统的静态批处理中,推理引擎需要等待预定数量的请求累积完毕后才会同时处理它们。这通常会导致效率低下,因为系统必须等待批处理中运行时间最长的请求完成后才能释放资源。连续批处理(也称为动态批处理或迭代级批处理)通过在活动请求完成时立即将新请求注入计算批次来解决这个问题,从而显著减少GPU上的空闲时间并提高整体效率。
区分相关概念#
为了更好地理解数据在模型部署期间是如何处理的,区分持续批处理与词汇表中的其他相关术语会很有帮助:
- 批大小:指在训练或推理过程中同时处理的固定样本数量。传统的批处理工作流依赖于静态大小,而连续批处理允许有效批大小根据传入流量动态波动。
- 实时推理:此概念侧重于最小化即时预测的推理延迟,并在单个输入到达时对其进行处理。连续批处理在保持高吞吐量的同时,无需强迫快速请求等待较慢的请求,从而弥合了高吞吐量静态批处理与低延迟实时推理之间的差距。
实际应用#
持续批处理对于处理大量不可预测请求的生产系统至关重要。以下是其应用的两个具体示例:
-
高吞吐量文本生成:在提供大语言模型 (LLMs)服务时,根据输出长度的不同,为不同用户生成响应所需的时间也各不相同。利用连续批处理的框架(例如 Ray Serve 上的 vLLM)可以持续流式传输新生成的 Token,并立即用新提示词替换已完成的对话。这种最初由关于迭代级调度的研究普及的方法,极大地提高了文本生成的吞吐量。
-
异步视频分析:在视频理解任务中,例如跨城市交通摄像头网络追踪车辆,视频帧到达的时间间隔各不相同。连续批处理允许目标追踪模型在资源释放的毫秒内动态处理传入的视频帧,从而为智慧城市仪表盘优化硬件加速流水线。
视觉任务中的持续处理#
在管理高流量模型部署实践时,通过迭代式流式推理可以模拟动态批处理的好处,确保内存被逐步释放而不是被阻塞。以下 Python 示例演示了如何将生成器模式与模型预测 API配合使用,以高效处理连续的图像流。
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.")管理系统级资源调度需要在原始速度与运营成本之间取得平衡。部署大规模计算机视觉 (CV)和语言模型的团队越来越依赖先进的服务框架来管理这些动态批次。对于希望简化基础设施的企业团队,Ultralytics Platform 提供了强大的工具,用于训练、监控模型并将模型导出到高度优化的生产环境中。






