🧠 图解记忆: PagedAttention 像虚拟内存,把连续序列映射到离散 KV 块,减少预留与碎片。
💡 答案要点
问题背景:
- LLM推理需要存储KV Cache(键值缓存)
- 传统方案:连续内存分配,预分配固定大小
- 问题:内存碎片和按最大长度预留会浪费显存,限制可承载并发
PagedAttention 解决方案:
传统方案:
显存: [请求1的KV ][请求2的KV ][ 空闲 ]
4GB 3GB 9GB → 碎片,无法分配
PagedAttention(分页式):
逻辑块表: 请求A [0][1][2] ──映射──> 物理块 [7][1][5]
请求B [0][1] ──映射──> 物理块 [3][6]
逻辑顺序连续,物理块可以不连续,并按需分配
→ 减少碎片和为最大长度预留造成的浪费核心原理:
- 受操作系统虚拟内存/分页启发
- KV Cache 按固定大小的块管理,块大小由实现和配置决定
- 块表维护逻辑块到物理块的映射,因此单个请求的物理块不必连续
性能影响:
- 降低内部/外部碎片和过度预留,使同一显存可容纳更多并发序列
- 实际吞吐和显存收益取决于模型、序列长度分布、块大小、调度器与基线实现,必须实测
面试话术:
"PagedAttention 借鉴虚拟内存分页思想:逻辑 KV 块按序编号,再通过块表映射到可非连续的物理块,并按需分配。它主要解决 KV Cache 碎片和过度预留问题,从而为更高并发留下空间;具体收益要在目标负载上 benchmark。"
