llm-wiki wiki · concepts 2026-10-11

PagedAttention 是 vllm 论文提出的本地 KV 分块寻址与管理机制:序列使用逻辑 block 表达 KV,block table 把逻辑位置映射到实际 KV buffer 中的物理 block,attention kernel 按映射访问数据。这里的“物理 block”属于 engine 的 KV 分配层,不等于 GPU 驱动的物理显存页;后者见 elastic-kv-cache。

核心收益是让序列按需使用非连续的 KV blocks,减少为每个请求按最大长度预留空间造成的浪费。block 大小、布局与 attention backend 有关,不存在适用于所有版本、模型和硬件的统一 block size。vLLM 历史 PagedAttention kernel 设计解释了原始设计中的分块寻址;官方已注明它不再描述当前代码,不能作为当前 vLLM backend 的布局证据。版本化架构分析见 src-vllm-architecture。

请求到 CUDA 中的位置

vllm-gpu-execution-path 展示 KVCacheManager 如何把 prefix hit 与新 token 变成 block ownership,再由 GPUModelRunner 准备 block table/slot mapping;llm-gpu-kernel-execution-path 继续解释 attention kernel 如何把逻辑 block 和 offset 转成实际 device address、HBM/L2 transaction 与 MMA/reduction。

核心思想

PagedAttention:
  按 block 按需分配(block size = B)
  Block 0: [████████]  complete (B/B tokens)
  Block 1: [█████░░░]  partial tail (k/B tokens, 0 < k < B)
  Block 2: [░░░░░░░░]  allocated to req1, not yet populated (0/B tokens)
  Block 3: [░░░░░░░░]  unallocated, free (B slots)

  Block Table per req:
    req0: [B0, B1]
    req1: [B0, B2]   ← 已验证可复用的 prefix 在 B0

图中 B2 已分配给 req1,尚未写入有效 KV;B3 才是可供分配的空闲物理 block。未填充的槽位不等于整个 block 未分配。共享 B0 还需要额外的前缀身份、有效性和引用管理;拥有 block table 本身不保证两个请求能共享 KV。

分配、复用与回收

当前前缀缓存实现见 vLLM Prefix Caching。该链接为 2026-10-03 核验的 latest 文档,具体匹配粒度应回到部署 release 的代码和配置确认。

和调度及外部 KV 系统的边界

continuous-batching 决定本轮哪些请求前进、需要多少 KV;PagedAttention 提供它使用的局部空间管理。申请、写入、引用、保留与回收的共同流程见 F2 · KV Block 生命周期。

相邻机制 负责什么 与 PagedAttention 的区别
radix-attention 用前缀树组织缓存身份、匹配与淘汰 前缀语义和寻址布局是不同轴;不能推定与 vLLM block 对象相同
inference-routing 用负载或外部 locality index 选择 endpoint 外部索引记录位置线索,实际 KV 有效性由 engine 确认
kv-cache-offload 将 KV 内容复制到 CPU、SSD 或远端,再按需恢复 block table 不执行跨层复制,也不保证远端副本存在
elastic-kv-cache 将稳定的 GPU 虚拟地址与物理 backing 解耦 engine 的 block 可用不代表底层物理显存一定能成功映射

评估与出处

关注 block 利用率、尾块浪费、分配失败与抢占、前缀命中后的实际 prefill 节省。吞吐收益需固定模型、硬件、请求长度和调度配置后测量,不能沿用历史论文中的倍数作为当前通用承诺。

Kwon et al., Efficient Memory Management for Large Language Model Serving with PagedAttention, SOSP 2023;工程证据见 src-vllm-architecture,SGLang 的对照分析见 src-sglang-architecture。