60 秒回答模板

PagedAttention 解决的是 LLM 推理时 KV Cache 随序列长度增长带来的显存管理问题。普通实现常为每个请求预留连续 KV 内存,不同请求长度差异很大,容易出现预留浪费、内存碎片和动态扩容困难。PagedAttention 借鉴操作系统分页思想,把每个序列的 KV Cache 切成固定大小的 block,逻辑上仍是连续 token,物理上可以分散存放,通过 block table 做映射。这样不同请求可以按实际生成进度增量分配 block,释放时也按 block 回收,减少长短请求混跑时的显存浪费。它还方便服务端做 continuous batching,因为请求可以在不同时间进入和退出批次,不必要求整段 KV 连续移动。回答时要补充代价:block size、映射表访问、调度策略和 cache 命中都会影响性能,PagedAttention 提升的是显存利用和批处理能力,不是改变 Attention 的数学定义。

考点 KV Cache 是显存瓶颈
难度 真实面经题
回答目标 讲清 KV Cache 分页、显存碎片和批处理取舍

深入解析

01

先说明 KV Cache 的压力

自回归解码时,每生成一个 token 都会保留各层 attention 的 key/value,后续 token 可以复用,避免重复计算历史上下文。长上下文和大 batch 下,KV Cache 往往成为显存大头,并且随请求长度动态增长。

02

连续分配会浪费显存

如果为每个请求分配一大段连续 KV 内存,就需要提前估计最大长度。实际请求有长有短,短请求会浪费预留空间,长请求可能需要扩容;请求结束后还可能留下碎片,影响后续批次的显存利用。

03

PagedAttention 用 block 管理 KV

PagedAttention 把序列的 KV Cache 切成固定大小的块。逻辑 token 顺序保持不变,但物理 block 可以分散在显存中,通过 block table 找到对应位置。新增 token 时按需分配新 block,结束后按 block 释放。

04

它支撑动态批处理

在线推理服务中,请求会不断进入和完成。块化 KV 让不同长度、不同阶段的请求更容易混合成连续批处理,减少因为单个长请求或内存连续性要求造成的空等和显存浪费。

05

性能收益来自显存利用

PagedAttention 不改变注意力计算公式,它主要改善内存分配和访问组织。收益通常体现在可容纳更多并发、更少碎片、更高 batch 利用率和更稳定的服务吞吐,而不是让单个 token 的数学计算变少。

06

参数和调度仍要权衡

block 太小会增加映射和管理开销,太大又会带来块内浪费。实际系统还要考虑 prefill/decode 调度、KV 复用、抢占、复制、prefix cache 和不同长度请求混批策略。

易错点

  • 把 PagedAttention 说成新的注意力机制或改变了 softmax 计算。
  • 只说节省显存,没有解释 KV Cache 为什么会碎片化。
  • 忽略 block table 映射和 block size 带来的管理开销。
  • 把权重显存和 KV Cache 显存混在一起。
  • 没有联系在线推理中的长短请求混批和动态进入退出。

面试官追问

PagedAttention 为什么适合在线服务?

在线请求长度不一、到达时间不同、完成时间不同。块化 KV 能按需扩展和回收,更适合 continuous batching。

它和普通 Attention 最大区别是什么?

注意力计算语义不变,区别在于 KV Cache 的物理存储和寻址方式,从连续大段内存变成分页 block 管理。

block size 怎么影响效果?

block 小会降低块内浪费但增加映射管理开销;block 大管理更简单但可能浪费显存,需要结合模型、上下文长度和并发调优。

PagedAttention 能降低模型权重显存吗?

不能。它主要管理 KV Cache,不减少模型参数本身的显存占用。权重显存要靠量化、并行切分或卸载等方式处理。