PagedAttention

PagedAttention

KV Cache 分页管理

亦作、亦称:分页注意力

PagedAttention 是一种受操作系统虚拟内存分页机制启发的 KV Cache 管理算法,由 UC Berkeley Sky Computing Lab 的 Woosuk Kwon 等人于 2023 年随 vLLM 推理引擎一同提出。它将 KV Cache 切分为固定大小的物理块,通过逻辑块表映射到 GPU 显存中的不连续物理块,从根本上消除了传统连续预分配方案中的显存碎片问题,使同等硬件可服务的并发请求数大幅提升。

概述

PagedAttention 是一种受操作系统虚拟内存分页机制启发的 KV Cache 管理算法,由 UC Berkeley Sky Computing Lab 的 Woosuk Kwon 等人于 2023 年随 vLLM 推理引擎一同提出。它将 KV Cache 切分为固定大小的物理块,通过逻辑块表映射到 GPU 显存中的不连续物理块,从根本上消除了传统连续预分配方案中的显存碎片问题,使同等硬件可服务的并发请求数大幅提升。

背景:传统 KV Cache 的显存浪费

在自回归解码过程中,每个 token 都需要保存对应的键值向量(KV Cache),传统系统通常为每条序列预先分配连续显存,导致三类浪费:

  • 预留碎片:为未来可能生成的 token 提前按最大长度占位,实际大量未使用
  • 内部碎片:固定分配块末尾因序列提前结束而闲置的空间
  • 外部碎片:多条序列交替分配后产生的零散不可用空隙
  • 原论文实测,早期推理系统实际显存利用率最低仅约 20.4%
  • 显存利用率低直接限制了可同时服务的并发请求数量和系统吞吐

核心机制:分页映射

PagedAttention 借鉴操作系统虚拟内存原理,将 KV Cache 的逻辑存储与物理布局彻底解耦:

  • 物理块划分:GPU 显存预先切分为若干等大小物理块(如每块存储 16 个 token 的 K/V 向量),由全局块管理器统一分配与回收
  • 逻辑块编号:每条序列拥有连续的逻辑块编号,对上层 Attention 计算透明
  • 块表(Block Table):每条序列维护一张逻辑块→物理块的映射表,类似操作系统页表
  • 按需分配:只在实际需要存储新 token 时才申请物理块,序列结束后立即释放,避免预留浪费
  • 写时复制(Copy-on-Write):多条序列共享相同前缀块时采用 CoW 机制,修改时才触发物理复制

显存共享与复用

分页设计天然支持多种跨请求显存共享场景:

  • 并行采样(Parallel Sampling):同一 prompt 生成多条候选输出时,前缀物理块可完全共享,节省显著显存
  • 束搜索(Beam Search):各 beam 在分叉前的公共前缀块零拷贝共享,原论文测得节省约 37.6–55.2% 显存
  • 前缀缓存(Prefix Caching):相同系统提示的多次请求可直接复用已缓存物理块,无需重新计算
  • 跨请求调度:显存管理器可灵活换入换出物理块,支持抢占与优先级调度,配合 Continuous Batching 最大化 GPU 利用率

性能表现

原论文与社区实测均验证了显著的吞吐提升:

  • 与 FasterTransformer、Orca 等基线相比,vLLM 吞吐量提升 2–4 倍,同时保持相当的延迟水平
  • 并行采样场景显存节省 6.1–9.8%,束搜索场景节省 37.6–55.2%
  • 与 Hugging Face Transformers 原生实现对比,部分场景吞吐差距可达数倍至 24 倍
  • 支持在同等显存预算下服务原本因碎片导致 OOM 的更长序列或更大并发批次

与相邻概念的区分

PagedAttention 常与若干相近技术混淆,需加以区分:

  • 与 KV Cache 的关系:KV Cache 是「缓存已算 Key/Value 避免重复计算」的通用策略;PagedAttention 是对 KV Cache「在显存中如何布局管理」的具体实现,两者是包含关系
  • 与 Flash Attention 的区别:Flash Attention 优化单次 Attention 运算的 HBM IO 效率;PagedAttention 优化多请求并发时的 KV Cache 显存布局,两者正交可叠加
  • 与 Continuous Batching 的区别:Continuous Batching 解决「何时将请求放入批次」的调度问题;PagedAttention 解决「KV Cache 放在显存哪里」的存储问题
  • 「PagedAttention = vLLM」是误区:PagedAttention 是算法机制,vLLM 是实现了该机制的推理框架,SGLang、TensorRT-LLM 等也有类似块式 KV 管理

发展脉络

PagedAttention 的提出及后续生态演进:

  • 2017:Transformer 提出,自回归生成中 KV Cache 的必要性首次明确
  • 2022:Flash Attention 发布,优化单次 Attention 计算的 IO,但 KV Cache 显存管理问题仍悬而未决
  • 2023 年 6 月:UC Berkeley 团队开源 vLLM 并发布博客,首次公开 PagedAttention 实现
  • 2023 年 10 月:论文「Efficient Memory Management for Large Language Model Serving with PagedAttention」在 SOSP 2023 正式发表
  • 2023–2024 年:TGI、TensorRT-LLM、SGLang 等主流推理框架相继引入类似块式 KV 管理机制
  • 2024–2025 年RadixAttention(SGLang)、Automatic Prefix Caching、Disaggregated Prefill/Decode 等扩展与 PagedAttention 结合,持续推动推理效率边界

局限与注意事项

PagedAttention 并非没有代价,实际使用需了解以下限制:

  • 块大小是超参:块过小则页表开销增大,块过大则内部碎片仍不可忽视,通常选 16–32 token 每块需针对工作负载调优
  • 不降低单请求延迟:PagedAttention 优化显存利用率与并发度,并不减少 Attention 的 FLOPs,对单条请求的首 token 延迟几乎无改善
  • 内核实现复杂:非连续物理块访问要求自定义 CUDA kernel,实现与维护成本较高
  • 与 Flash Attention 集成需专门适配:两者正交但需在内核层面联合设计才能同时发挥最优效果

常见误解

日常交流中容易听到的简化说法,未必准确,但能帮助理解误解从何而来。

  • 「KV Cache 分页管理」
  • 「像虚拟内存管 KV」
  • 「vLLM 的核心技术」

相关术语

和本术语关联紧密的其他词条,便于串联理解。

🎯 考点练习

含该术语的高频面试题,含标准答案与追问。

延伸阅读

从知识库精选 3 篇文章,帮助深入理解该术语。

  1. 1

    LLM 推理加速(四):新范式从 Speculative Decoding 到 DFlash

    2026 年 4 月,z-lab 开源的 DFlash(Block Diffusion for Flash Speculative Decoding)一周内突破 2,000 星,将推测解码技术推向了新的高度。从 2023 年的 SpecInfer 到 2024 年的 Medusa、Eagle,再到 2025 年的 Lookahead Decoding 和 2026 年的 DFlash,LLM 推理加速经历了从「验证单 Token」到「预测 Token 块」再到「扩散式生成」的范式跃迁。本文深度解析推测解码的完整技术演进路线,对比 5 种主流方法的原理与性能,提供完整的 Python 实现代码,并给出生产部署的实战指南。

  2. 2

    LLM 推理优化:量化、剪枝、蒸馏与推理加速实战

    系统讲解大语言模型推理优化的四大核心技术——量化(Quantization)、剪枝(Pruning)、知识蒸馏(Knowledge Distillation)和推理引擎加速,覆盖从原理到实战的完整链路

  3. 3

    LLM 推理加速实战:从 KV Cache 优化到推测解码

    系统梳理 LLM 推理加速的核心技术——KV Cache 管理、PagedAttention、推测解码、连续批处理,掌握生产环境推理优化的决策框架和工具链

外部参考

维基百科:查看「PagedAttention」词条

本页内容为本站原创撰写;维基百科链接仅作延伸参考。