30 · PagedAttention / vLLM — KV Cache 虚拟内存分页

推理部署 vLLM 2023
Kwon et al., UC Berkeley · arXiv:2309.06180

迭代了什么

上一代的问题:传统 KV Cache 管理:静态预分配导致 50%+ 浪费,连续分配无法共享公共前缀。

这代改了什么:逻辑-物理分页(固定 block),block_table 映射,Copy-on-Write 共享,O(1) Free List 分配。

效果:吞吐 24.9 vs 2.55 req/s(9.6×),P99 延迟 4.5s vs 42s,内存利用率 >90%。

一、一句话总结

把操作系统的虚拟内存分页模型引入 Transformer 推理的 KV Cache 管理,实现零碎片、高共享的显存管理,吞吐提升达 9.6x。

二、解决的核心问题

LLM serving 中 KV Cache 是主要显存占用(甚至超过模型权重)。传统方案问题:静态预分配导致 50%+ 浪费,连续分配导致无法共享公共前缀。

三、核心创新

3.1 Logical-Physical 分页

KV Cache 拆成固定大小 block(16 tokens/block),通过 block_table 做逻辑到物理的映射。逻辑上连续的 block 在物理显存中可以分散存放。

Block Table: logical_block_id → physical_block_id
每请求一个 block_table,类似 OS 的页表

3.2 Copy-on-Write 共享

前缀相同的多个请求共享相同物理 block。当某个请求需要修改共享 block 时,触发 COW 复制。

3.3 Free List 分配器

用空闲链表管理物理 block:O(1) 分配和释放。支持 GPU 显存和 CPU 内存之间的 swap。

四、具体效果

五、技术细节

5.1 Block 大小选择

Block size = 16 是经验最优:太小则 block table 变大,太大则内部碎片增加。vLLM 支持配置。

5.2 Scheduling 策略

先到先服务 + watermark 触发 swap。当可用 block 低于阈值时,将低优先级请求的 KV Cache swap 到 CPU。

5.3 与 Continuous Batching 的关系

PagedAttention 是显存管理,Continuous Batching 是 GPU 调度——两者正交互补。vLLM 同时实现了两者。

六、历史影响

PagedAttention 是 LLM serving 基础设施的代表性工作之一。它让 vLLM 成为最广泛使用的推理框架之一,并催生了后续大量优化工作(如 chunked prefill、prefix caching 等)。其核心洞察——KV Cache 管理本质上是内存分页问题——优雅而深刻。