PagedAttention

别名:分页注意力 / Paged Attention

把 KV Cache 切成固定大小的块,用块表映射到不连续的物理显存,减少碎片和浪费。

更新于 2026/11/08
推理KV Cache显存

一句话定义

PagedAttention 用类似虚拟内存的方式管理 KV Cache:把缓存切成固定大小的块,用 block table 把逻辑块映射到不连续的物理页,按需分配、共享和回收。

为什么需要它

传统做法为每条请求预留连续显存,长度一变就浪费或碎片化。长上下文、多请求并发时,显存很快被“预留但没用”的空间吃光。分页让缓存按块增长,减少碎片。

怎么工作

  1. 把 KV Cache 划成固定大小的块(如 16 个 token 一块)。
  2. 每条请求维护逻辑块到物理页的 block table。
  3. 生成新 token 时按需分配新页,不需要连续空间。
  4. 相同前缀可以共享物理页;写入时用 copy-on-write。
  5. attention kernel 按块表读取 K/V。

PagedAttention:像虚拟内存一样管理 KV Cache

关键取舍

  • 块越大,元数据越少,但内部碎片越多;块越小,管理越灵活,开销越高。
  • 需要 attention kernel 支持非连续布局;实现复杂度高于连续缓存。
  • 分页提升显存利用率,但不减少 KV Cache 的总计算量。
  • 和 Continuous Batching 配合,才能发挥高并发吞吐。

常见误区

  • PagedAttention 不是新的注意力公式:它改变缓存管理,不改变 QKᵀV 的语义。
  • 它不是量化:不降低数值精度,只减少碎片和浪费。
  • 不是只有 vLLM 能用:它是一种缓存管理思路,vLLM 是代表实现。
  • 分页不等于无限上下文:显存仍然有上限。

用在哪里

  • 高并发推理服务、长上下文、多轮对话。
  • 需要动态 batch 和 KV Cache 共享的场景。
  • vLLM 等推理框架的核心优化之一。

相关概念