批处理
批处理是提高推理吞吐量的关键技术,通过同时处理多个请求充分利用GPU算力。
推理加速·阅读时间:约12分钟
01静态批处理
基本概念
静态批处理将多个请求组成固定大小的批次,等凑够一批后一起处理。
优点
实现简单
容易理解和实现
吞吐量高
充分利用GPU并行能力
缺点
- 等待凑批增加延迟
- 不同请求生成长度差异大时效率低
- 尾部等待问题(短板效应)
- 不适合在线实时场景
适用场景
- 离线批量推理
- throughput优先,延迟不敏感
- 请求长度相对均匀
02动态批处理
核心思想
动态批处理在每个Token生成步骤动态组合请求,而不是等待整个请求完成。
工作原理
- 维护一个请求队列
- 每个推理步骤选择一批活跃请求
- 同时生成这些请求的下一个Token
- 完成的请求退出,新请求加入
优势
- 更高的GPU利用率:几乎一直保持忙碌
- 更好的延迟:不需要等整个批次完成
- 灵活:可随时加入新请求
- 公平:不同长度请求都能及时处理
vLLM和Text Generation Inference
现代推理框架广泛采用动态批处理技术。
03高级策略
连续批处理(Continuous Batching)
特点
也称为迭代级调度,每个Token生成步骤都可以调整批次
优势
最大化吞吐量,最小化等待时间
批处理调度策略
| 策略 | 说明 | 适用 |
|---|---|---|
| FIFO | 先来先服务 | 简单公平 |
| 优先级 | 按优先级排序 | 重要请求优先 |
| 最短优先 | 短请求优先处理 | 高吞吐 |
| 贪心打包 | 最大化批次利用率 | 资源最优 |
批大小优化
- 动态调整:根据负载自动调整批大小
- 上限设置:避免过大的批次导致OOM
- 超时机制:等待超时后即使不满也执行
- 分组策略:相似长度的请求分到一组
最佳实践
- 优先使用现代推理框架(vLLM、TGI等)
- 监控批处理效率和GPU利用率
- 根据业务特点调整调度策略
- 做好过载保护和流量控制
上一篇
← KV Cache下一篇
推理并行 →