LESSON 6.5 · 系统 · 130 分钟
vLLM:PagedAttention 与连续批处理
vLLM 把每条请求的 KV Cache 划分为固定大小的逻辑块,再通过块表映射到不连续的物理显存块。PagedAttention 在计算注意力时按映射读取这些块,从而减少因预留连续大空间造成的碎片和浪费。调度器再用连续批处理在请求到达、完成或生成新 token 时动态调整批次,让 GPU 更少等待。
DIRECT ANSWER · VERIFIED SOURCES ·
vLLM 如何用 PagedAttention 和连续批处理提高服务吞吐?
vLLM 把每条请求的 KV Cache 划分为固定大小的逻辑块,再通过块表映射到不连续的物理显存块。PagedAttention 在计算注意力时按映射读取这些块,从而减少因预留连续大空间造成的碎片和浪费。调度器再用连续批处理在请求到达、完成或生成新 token 时动态调整批次,让 GPU 更少等待。
视频对齐
视频对齐点:区分三层概念——KV Cache 是数据,PagedAttention 是分块寻址机制,连续批处理是请求调度策略;分别画出块表和每个 decode step 的活动序列。
关键结论
- 逻辑连续、物理不连续的块映射类似操作系统分页,可按需分配并共享部分缓存。
- 减少缓存浪费通常允许同一显存容纳更多并发序列,从而提高可批处理的请求数。
- 连续批处理在序列级动态进出批次,不必等待传统静态批次中最长请求全部结束。
边界与常见误解
PagedAttention 解决的是 KV Cache 管理与访问,不等同于减少单次注意力算子 IO 的 FlashAttention。真实吞吐提升取决于模型、硬件、prompt/output 长度、并发、采样方式和延迟目标,论文倍数不能直接套到所有负载。
一手来源
学完你应该能够
- 能不用术语堆砌,解释「vLLM:PagedAttention 与连续批处理」解决了什么问题。
- 能围绕 block table、continuous batching、scheduler 画出变量与因果关系。
- 能完成「搭建 OpenAI-compatible 服务」,并用证据而不是感觉判断结果。
核心概念
block table
block table把 KV cache 切成可复用块,并在请求进出时动态组成批次。这样减少内存碎片与等待,但调度策略会直接影响首 token 延迟和吞吐公平性。
continuous batching
continuous batching把 KV cache 切成可复用块,并在请求进出时动态组成批次。这样减少内存碎片与等待,但调度策略会直接影响首 token 延迟和吞吐公平性。
scheduler
scheduler需要在固定质量与负载下比较延迟、吞吐、显存和成本,单独的速度数字没有决策意义。 写出至少一个不变量、shape 约束或成立条件。
实践任务
搭建 OpenAI-compatible 服务
- 预测:在运行代码前,写下你预期的输出、趋势或失败位置。
- 构建:画出关键资源与队列,只保留回答核心问题所需的最小组件。
- 验证:使用固定质量约束下测 p50/p95 延迟、吞吐、显存和成本;保存参数、随机种子与原始结果。
- 迁移:改变并发、序列长度或硬件后重新选择缓存与批处理策略,说明原结论是否仍成立。