
vLLM introduced PagedAttention, which borrows the paging abstraction that operating systems use for RAM and applies it to the GPU’s KV cache. During LLM inference, the KV cache – the stored key and value tensors for all previous tokens – is the dominant memory consumer. Managing it efficiently is the central challenge of high-throughput inference.vLLM 引入了 PagedAttention 技术该技术借鉴了操作系统为内存RAM设计的分页抽象机制paging abstraction并将其应用于 GPU 的 KV 缓存。在大语言模型推理过程中KV 缓存——即所有先前 token 的存储KV张量——是主要的内存消耗者。高效管理 KV 缓存是高吞吐量推理的核心挑战KV Cache 计算公式BF16 每个数值占 2 ByteMHA → MQA → GQAMHA 多头注意力原始标准LLaMA1 7B/13B 用Multi-Head AttentionQ、K、V 头数量完全相等40 个 Q 头 40 个 K 头 40 个 V 头。推理时 KV Cache 要存和 Q 一样多的 KV 头显存占用极大就是 KV 公式里的 H 会很大MQA 多查询注意力极端简化Multi-Query Attention很多 Q 头 共享同一组 K/V 头。例40 个 Q 头共用 1 个 K 头 1 个 V 头。KV Cache 极小但精度掉得比较明显GQA 分组查询注意力LLaMA2/3 70B、大模型主流方案Grouped-Query AttentionGQA 分组查询注意力MHA 和 MQA 的折中方案把全部 Query 头分成若干组每一组内所有 Q 头共用同一对 K/V 头KV 头数量远少于 Q 头但比 MQA 的单 KV 头多精度损失可控Llama3-70B 真实配置Query 头总数128 个分成 16 组每组 8 个 Q 头每组对应 1 组 KV 头所以 KV 头 H 8GQA 优点KV 头变少KV Cache 显存占用暴跌推理吞吐大幅提升相比 MQA分组保留更多 KV 信息模型能力、生成质量衰减很小训练、推理框架原生支持vLLM、TensorRT-LLM、Transformers缺点训练成本比纯 MHA 略高小模型7B 及以下一般不用 GQA收益不明显还是 MHAKV Cache Fragmentation 的问题fragmentationˌfræɡmenˈteɪʃnn. 破碎分裂分段储存传统推理系统会为每条请求序列的 KV Cache 预分配一块连续显存contiguous memory分配大小按模型支持的最大序列长度预留。这种朴素分配方式会造成两类显存浪费内部碎片Internal fragmentation一条实际只生成 500 个 token 的对话却独占一块预留 4096 token 容量的连续显存块剩余 3596 个 token 对应的缓存空间全程闲置造成显存空洞浪费。外部碎片External fragmentation大量对话请求执行完毕释放显存后空闲显存会分裂成大量零散、不连续的小块。此时若新到来一条长序列请求即便整体空闲显存总量充足也找不到一块足够大的连续内存来完成分配导致请求无法执行。工程实测采用这种简单预分配方案时GPU 显存实际利用率通常仅 20%–40%PagedAttention – Virtual Memory for KV Cachesanalogousəˈnæləɡəsadj. 相似的类似的器官同功的PagedAttention (Kwon et al., 2023) borrows the paging abstraction from operating systems. Instead of one contiguous block per sequence, the KV cache is carved into fixed-size pages (blocks), and an indirection table—analogous to a CPU page table—translates each sequence’s logical token positions into scattered physical GPU memory addresses.PagedAttentionKwon 等2023借鉴了操作系统中的分页抽象机制。与每个序列sequence对应一个连续区块不同KV缓存被划分为固定大小的页面块并通过一个间接表类似于CPU的页表将每个序列中逻辑令牌的位置映射到分散的GPU物理内存地址上Block size块大小通常每块存储 16 个 token可配置调参。单块存储元素总量公式16 × 2 × L × H × d16块内 token 数量2Key Cache Value Cache 两份缓存Block table块映射表每条对话序列独立维护一张映射表建立逻辑块编号 → GPU 显存池内物理块编号的对应关系作用逻辑上连续的 KV 序列底层可以分散存储在不连续的物理显存块中Physical block pool物理块显存池提前预分配一批固定尺寸的显存块统一管理空闲块链表分配操作复杂度为 O(1)需要新块时直接从空闲链表头部取出一块即可无内存拷贝开销Attention kernel注意力计算内核计算注意力时依靠块映射表从多个不连续的物理显存位置收集分散的 KV 块数据完成计算Llama3-70B BF16 中L80,H8,d128BF16 每个元素占 2 Byte单块总字节为5MB4096 token 总 KV 显存单序列总块数256块PagedAttention的好处近乎零显存浪费Near-zero waste内部碎片被严格限制每条序列最多只会存在1 块未填满的分页最后一块。若分页大小为 16 token单条序列最坏仅浪费 15 个 token 对应的 KV 空间损耗可忽略不计同时彻底消除外部碎片 —— 所有分页尺寸统一、可互相复用对比传统方案传统预分配整块 4096token 缓存短会话会浪费数千 token 空间分页仅末尾一块有少量空洞动态按需分配Dynamic allocation序列随着 token 生成按需申请分页无需提前预知整条对话最终长度。这对大模型生成任务至关重要因为模型输出 token 数量无法提前确定优势不用上线前强制设定全局最大序列长度不会为未知长文本预留大量闲置显存前缀共享 Prefix sharing写时复制 copy-on-write多条拥有相同前置文本的会话例如统一系统提示词可以共用这套前缀对应的物理分页。多条会话的块映射表仅需同时指向同一批物理显存块当某条会话在前缀后生成新内容、需要修改共享分页时会触发写时复制机制单独拷贝一份分页供该会话独立使用场景固定 1000 token 系统提示词同时在线 128 位并发用户沿用 Llama3-70B 单 token 占用 327680 字节参数不开启前缀共享所有用户独立存储系统提示词 KV 缓存128 × 1000 × 327680 ÷ 10^9 ≈ 42 GB开启前缀共享仅存储 1 份系统提示词 KV 缓存 1 × 1000 × 327680 ÷ 10^9 ≈ 0.33 GB显存节省共享前缀部分显存占用直接缩减约 128 倍显存交换抢占Preemption via swapSwap 交换vLLM PagedAttention 原生支持当 GPU 显存耗尽时vLLM 可对低优先级会话执行抢占将该会话全部 KV 分页交换至 CPU 内存也可直接丢弃分页后续需要时重新计算 KV。该功能仅在分页架构下可行传统连续整块分配方案交换时必须拷贝整块巨大缓存开销极高落地价值实现 GPU 显存软扩容提升系统并发承载上限避免直接 OOM 报错GPU 显存全部物理块被占满新序列需要分配 KV 块但空闲链表为空框架挑选低优先级 / 长时间无交互的会话做抢占Preemption把该会话对应的全部物理 KV 块批量拷贝到 CPU 主内存同时在块表标记 “已交换到 CPU”释放这批 GPU 物理块分给新进来的请求若被抢占会话恢复交互再把它的 KV 块从 CPU 内存拷贝回 GPU恢复推理优缺点优点不用直接拒绝新请求提升整体并发承载上限缺点CPU ↔ GPU 内存拷贝存在 PCIe 带宽延迟恢复生成时会卡顿频繁 swap 吞吐会明显下跌重计算Recompute备选方案不长期占用 CPU 内存不把 KV 缓存存在 CPU直接丢弃被抢占序列的所有 KV 块等会话再次交互时重新前向走一遍模型从头算出全套 KV Cache代替从 CPU 加载适用上下文很短、重计算成本低于 PCIe 传输开销的场景代价需要重复执行 Transformer 层计算消耗算力PCIeThe Host-Device LinkPCIe is used for:• CPU ↔ GPU data transfers (model loading, CPU offloading)• Cross-node GPU communication when NVLink is unavailable (rare, very slow)• NVMe storage access (via CPU)Host主机端CPU 系统主内存 DRAMDevice设备端GPU、NVMe SSD、网卡等 PCIe 外设PCIeHost 和 Device 之间唯一的高速物理互联链路Host-Device Link