PagedAttention
PagedAttention是一种用于高效服务大型语言模型(LLM)的注意力算法,于2023年由Woosuk Kwon及其同事在论文《Efficient Memory Management for Large Language Model Serving with PagedAttention》中提出,[1]并与vLLM推理引擎一同发布。该方法将自回归解码过程中使用的KV缓存(键值缓存)以固定大小的块存储,并可将这些块映射到不连续的物理内存,借鉴了虚拟内存、分页与操作系统设计中的思想[2][3]。
背景
[编辑]在Transformer推理中,键值缓存会随着序列长度与并发请求数量而增长。Kwon等人指出,此前的服务系统通常预先保留连续的缓存区域,因而会造成预留空间、内部碎片与外部碎片。在他们的实验中,论文报告此前系统的有效内存利用率最低可降至20.4%[2]。
描述
[编辑]PagedAttention将每个序列的缓存划分为固定大小的“KV块”(KV block)。请求的缓存表示为一系列逻辑块,而块表(block table)将这些逻辑块映射到物理GPU内存块。这样一来,相邻的逻辑块无需在物理内存中连续,并且可以在生成过程中按需分配新块[2]。
该设计还使相关解码路径之间更容易共享缓存状态。在vLLM中,物理块可以被引用计数并在请求或分支之间共享,当共享块需要被修改时使用块粒度的写时复制。原论文将该设计应用于并行采样、束搜索以及共享前缀的提示词[2]。
数学表述
[编辑]对于因果自注意力中的查询词元 ,标准注意力输出可写作 其中 、、 分别为查询、键与值向量, 为注意力维度[2]。
若将缓存划分为大小为 的块,则键块与值块可写作 PagedAttention随后按块进行计算: 其中 是第 个KV块的注意力分数向量。在Kwon等人给出的表述中,该公式在保持因果注意力计算的同时,允许键块与值块位于不连续的物理内存中[2]。
性能与应用
[编辑]vLLM论文报告称,在其评测的工作负载上,使用PagedAttention及其相关内存管理设计可将服务吞吐量较FasterTransformer、Orca等对比基线提升2–4倍,同时保持模型输出不变。在OPT-13B配合Alpaca轨迹的实验中,论文还报告通过KV块共享,并行采样节省内存6.1–9.8%,束搜索节省37.6–55.2%[2]。
2024年一篇关于LLM服务系统的综述将PagedAttention描述为已成为LLM服务框架中的行业规范,并列举了TGI、vLLM与TensorRT-LLM中的支持[3]。
局限与替代方案
[编辑]后续工作指出了该方法的权衡取舍。2025年的vAttention论文认为,PagedAttention要求重写注意力内核以支持分页,增加了软件复杂度、可移植性问题、冗余与执行开销,因此提出一种内存管理器,使缓存保持虚拟内存连续,同时依赖按需分页进行物理分配[4]。
vAttention
[编辑]与PagedAttention不同,vAttention并不引入不同的注意力规则,而是保留标准注意力计算 在Prabhu等人的记号中,一个请求迄今所见到的键与值张量为 , 其中 为迄今所见上下文长度, 为某个工作器上的KV头数量, 为每个KV头的维度[4]。
在PagedAttention之前的系统中,工作器每层的K缓存(或V缓存)通常分配为形状如下的4D张量 其中 为批量大小, 为模型支持的最大上下文长度[4]。
vAttention保留这种连续的虚拟内存视图,同时将物理内存分配推迟到运行时。服务框架为每层维护独立的K、V张量,因此vAttention在每个工作器上预留 个虚拟内存缓冲区,其中 为该工作器管理的层数[4]。
单个虚拟内存缓冲区的最大尺寸为 其中 为单个请求在该工作器上每层K缓存(或V缓存)的最大尺寸。论文定义 其中 为存储一个元素所需的字节数[4]。
在该表述中,vAttention将KV缓存在虚拟内存中保持连续,并依赖按需分页进行物理分配,而无需修改注意力内核以在非连续的KV缓存块上运算[4]。
参见
[编辑]- AlphaDev与AlphaEvolve——Google DeepMind用于发现与优化计算机科学算法的人工智能系统
- 注意力机制
- 束搜索
- 缓存替换策略
- 人工智能算法列表
参考文献
[编辑]- ^ Kwon, Woosuk; Li, Zhuohan; Zhuang, Siyuan; Sheng, Ying; Zheng, Lianmin; Yu, Cody Hao; Gonzalez, Joseph E.; Zhang, Hao; Stoica, Ion. Efficient Memory Management for Large Language Model Serving with PagedAttention. 2023-09-12. arXiv:2309.06180
[cs.LG].
- ^ 2.0 2.1 2.2 2.3 2.4 2.5 2.6 Kwon, Woosuk; Li, Zhuohan; Zhuang, Siyuan; Sheng, Ying; Zheng, Lianmin; Yu, Cody Hao; Gonzalez, Joseph E.; Zhang, Hao; Stoica, Ion. Efficient Memory Management for Large Language Model Serving with PagedAttention. Proceedings of the 29th Symposium on Operating Systems Principles. Association for Computing Machinery: 611–626. 2023. arXiv:2309.06180
. doi:10.1145/3600006.3613165 (英语).
- ^ 3.0 3.1 Li, Baolin; Jiang, Yankai; Gadepally, Vijay; Tiwari, Devesh. LLM Inference Serving: Survey of Recent Advances and Opportunities. 2024-07-17. arXiv:2407.12391
[cs.DC].
- ^ 4.0 4.1 4.2 4.3 4.4 4.5 Prabhu, Ramya; Nayak, Ajay; Mohan, Jayashree; Ramjee, Ramachandran; Panwar, Ashish. vAttention: Dynamic Memory Management for Serving LLMs without PagedAttention. Proceedings of the 30th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 1. Association for Computing Machinery: 1133–1150. 2025. doi:10.1145/3669940.3707256
(英语).