GPU 大模型系统论文解读

vAttention:无 PagedAttention 的 LLM 服务动态显存管理

最后核验日期:2026-09-14 证据完整度:台账 10 条 = P 4 · R 2 · E 1 · I 3,全部带真实 PDF 页码定位(详见 证据台账)。分级口径(本论文台账 schema):P = 论文原理/机制主张;R = 论文报告的实验结果;E = 外部工件(官方仓库,论文附录仅作锚点);I = 编辑推断。全页唯一外链为官方仓库 microsoft/vattention

输入 PDF:04_vAttention_2405.04437.pdf(《vAttention: Dynamic Memory Management for Serving LLMs without PagedAttention》,ASPLOS '25)。

  • 生命周期:推理服务(单实例显存管理)
  • 部署形态:vLLM 框架内集成 + CUDA VMM 按需物理页
  • 目标硬件:NVIDIA A100 80GB(1–2 张、TP-2)/ H100(可移植,第 15 页)
  • 核心资源:KV cache 虚拟连续性 · 物理页分配粒度 · CUDA VMM API 延迟
  • 证据状态:P/R 主导 + 3 条编辑推断(I);外部工件仅官方仓库(E)

一句话判断

对「长上下文、prefill 占比高、注意力内核迭代快、A100/H100 自托管」的 LLM 服务,vAttention 用 CUDA 虚拟内存管理(VMM)把 KV cache 做成虚拟地址连续、物理页按需分配:在保留 PagedAttention 级碎片控制的同时,免掉分页注意力内核改写与 Block-Table 维护。论文口径下:端到端吞吐较分页内核(FlashAttention-2 / FlashInfer)最高 1.23×,decode 吞吐较 vLLM 最高 1.99×,在线服务中位请求延迟最高降 42%,FlashAttention-3 这类无分页支持的新内核零改造接入并带来 1.26–1.5× 提升;代价是 CUDA 12.1 / PyTorch 2.3.0 / 修改版 NVIDIA 驱动的供应链绑定、VMM 调用延迟需要专门隐藏(每页组增长约 5 毫秒量级),以及「已完成请求的物理页直接交给新请求复用」带来的租户隔离新议题。全部数字为论文条件性结果,禁止跨论文横比。P R I(代价与适用面判断为编辑观点)

3 分钟速读

  1. 问题:PagedAttention 用「用户态分页」解决 KV cache 碎片,代价是 KV 在虚拟地址上不再连续——注意力内核必须改写为按块寻址、框架要维护 Block-Table、CPU/GPU 关键路径都有开销。论文 Table 1(第 1 页)汇集证据:vLLM 分页 decode 内核比 FlashAttention-2 慢至 2.8×;块大小改变可使执行时间变化至 1.9×;FlashAttention-2 / FlashInfer 分页 prefill 内核分别慢至 37% / 42%。P
  2. 机制:用 CUDA VMM API 解耦虚拟与物理内存——预先预留大段虚拟连续地址空间,物理页运行时按需映射;默认页大小 2MB,修改开源 NVIDIA 驱动后另支持 64KB 页(第 1–2 页)。P
  3. 隐藏代价:VMM 调用走内核往返、延迟不低(第 6 页 Table 3:cuMemSetAccess 38µs 等);vAttention 在 step 中于迭代开始前完成物理页映射(第 6 页),decode 期把映射与计算重叠、prefill 期延迟回收 + 急切分配(第 8 页)——给 Yi-34B 的 KV 增长一个页组约需 120 次 API 调用 ≈ 5 毫秒,必须移出关键路径。P
  4. 结果:端到端吞吐较 FA2/FlashInfer 分页内核至 1.23×(第 1 页);decode 较 vLLM 至 1.99×/1.58×/1.53×(Yi-6B/Llama-3-8B/Yi-34B,第 9–11 页);在线中位延迟降 42%/28%/29%(第 11 页);FA3 在 H100 上开箱即用、较分页 FA2 提升 1.26–1.5×(第 2 页;H100 可移植性第 15 页)。P R
  5. 边界:decode 场景 vAttention 只是「与最优分页内核持平」(decode 是内存受限、分页开销可被掩盖);收益随上下文长度与 P:D 比增大;64KB 页需修改驱动(供应链负担);官方工件仓库为 github.com/microsoft/vattention(附录第 18–19 页锚定),本页不提供任何其他外部链接。P E I

论文声称的主要结果

表 A · 论文声称的主要结果(均为条件性数字,禁止脱离条件摘取;条件列含硬件/模型/精度/负载)
指标(口径)数字基线完整条件(硬件 / 模型 / 精度 / 负载)来源页码
端到端 LLM 服务吞吐提升(长上下文)至 1.23× PagedAttention 分页内核(FlashAttention-2、FlashInfer) 1–2× A100 80GB;Yi-6B / Llama-3-8B / Yi-34B;精度论文未明确披露(正文仅以 P=2 即 FP16/BF16 举例计算尺寸);离线长上下文负载(arXiv-Summarization,427 请求、上下文 64K–192K) P 第 1 页(摘要);第 11 页(台账 R1)
decode 吞吐提升(vs vLLM 内核)至 1.99× / 1.58× / 1.53× vLLM PagedAttention decode 内核(对照内核:FA2 非分页 + vAttention) Yi-6B(1×A100)/ Llama-3-8B(2×A100 TP-2)/ Yi-34B(2×A100 TP-2);初始上下文 16K、批 ≤32;精度论文未明确披露 R 第 9–11 页(Fig.8,台账 R1);第 2 页(§1)
在线服务中位请求执行延迟降幅至 42% / 28% / 29% FA2_Paged(对照 FA2_vAttention) QPS 0.25 / 0.3 / 0.1(泊松到达);512 请求、输入 22K–45K(均值 29K)、输出 6–3250(均值 348)、P:D≈129;A100 同上 R 第 11 页(§7.4,台账 R1)
新内核(FA3)开箱即用提升1.26–1.5× PagedAttention 版 FlashAttention-2 FlashAttention-3 发布时无 PagedAttention 支持,vAttention 无需改内核接入;H100 可移植性另见第 15 页(台账 R2) P 第 2 页(§1) R 第 15 页
不可直接比较:上表数字来自 vAttention 论文自身的内核版本(vLLM v0.2.7、FA2 v2.5.9、FlashInfer v0.4.0)、模型(Yi-6B/Llama-3-8B/Yi-34B)、负载(arXiv-Summarization 等)与吞吐/延迟口径,与本站收录的其他论文(Mooncake、DistServe 等)的硬件、负载与 SLO 口径均不一致,不允许跨论文横向排名

术语与记号

CUDA VMM
CUDA 虚拟内存管理 API 族(cuMemAddressReserve / cuMemCreate / cuMemMap / cuMemSetAccess / cuMemUnmap …),允许虚拟地址预留与物理页分配分离——vAttention 的地基(第 1、6 页)。
虚拟连续(virtual contiguity)
每个请求的 K/V cache 在虚拟地址空间中是一段连续张量,注意力内核可像静态分配一样按平坦地址直接访问(第 1 页)。
page-group / 页大小
一次 VMM 调用分配的一个或多个物理页。CUDA API 仅支持 2MB 页;vAttention 修改开源驱动后支持 64KB/128KB/256KB 页组(第 2、6 页)。
reqId / 虚拟张量
框架启动时按「最大批 × 最大上下文」预留 2×N 个虚拟张量(N 为层数);每个请求以唯一 reqId 占据其中不重叠的子区域(正文 §5,门控外转述)。I
Block-Table
PagedAttention 体系里框架维护的「逻辑块 → 物理块」映射表,注意力内核按它寻址非连续 KV——vAttention 的虚拟连续设计免除了它(第 1 页 Table 1 论证)。
论文出处
《vAttention: Dynamic Memory Management for Serving LLMs without PagedAttention》,ASPLOS '25(DOI 10.1145/3669940.3707256,第 1 页印刷信息);本地文件 04_vAttention_2405.04437.pdf

问题背景

KV cache 的显存的两难:碎片 vs 连续

每个请求的 KV cache 随 decode 每迭代增长一个 token,且总长度(输出多少 token)事先未知:按模型最大上下文静态预留(如 Yi-34B-200K 的 200K)会造成严重内部碎片,压低批大小与吞吐(第 1–2 页)。P vLLM 的 PagedAttention 借鉴操作系统按需分页,把 KV cache 切成小块按需分配,近乎完美地解决了碎片,已成为 TensorRT-LLM、HuggingFace TGI、LightLLM 等系统的事实标准(第 1 页)。P

PagedAttention 的根本代价:虚拟连续性丧失

动态分配的对象不保证连续——PagedAttention 在按需分配物理内存的同时,把 KV cache 的虚拟地址布局从连续改成了非连续(第 1 页)。由此产生三类问题:P

  • 内核必须改写:注意力算子要为非连续 KV 块重写寻址逻辑,跟进新内核研究的成本变高;vLLM 分页 decode 内核已比 FlashAttention-2 慢至 2.8×(第 1 页 Table 1 / Table 7 口径)。P
  • 框架冗余:服务框架要自建「块表管理器」,重复操作系统本已完成的虚→实地址翻译(第 1 页 Figure 1 论证)。P
  • 运行时开销:分页 prefill 内核在 FlashAttention-2 / FlashInfer 中分别慢至 37% / 42%,decode 慢至 12%;块大小选择敏感(至 1.9× 波动);CPU 侧 Block-Table 准备在 vLLM 早期实验中曾占 decode 迭代延迟约三成、修复后仍可达一成,TensorRT-LLM 亦报告过 >10% 吞吐回退(第 1 页 Table 1;CPU 侧数字出自正文 §3.3.2 第 4 页——台账门控外,此处仅定性转述)。P I(门控外转述标注)

底层症结:预留式 GPU 分配

cudaMalloc 一类的预留式分配会把虚拟与物理内存一次性锁死——即使虚拟地址没被访问,物理页也已占用。这与操作系统的按需分页(demand paging)相反。论文主张:把虚拟与物理内存的分配分开,才能同时保住碎片控制与虚拟连续性(第 1–2 页)。P

本页使用的延迟/吞吐口径

与全站一致,跨请求延迟类指标以 TTFT/TBT 讨论为站内通识口径;但需要注意:vAttention 论文未定义 TTFT/TBT 型 SLO 数值——其在线实验以固定 QPS(泊松到达)下的「请求端到端执行延迟 CDF / 中位数」与吞吐为准(第 11 页)。两套口径不可混用。P I

核心机制

1 · 虚拟连续 + 物理按需:一对分离的分配策略(第 1 页,台账 P1)

vAttention 为 KV cache 预先预留一段大的虚拟连续缓冲(像 PagedAttention 之前的系统),而把物理内存的分配推迟到运行时按需进行(像 PagedAttention)。虚拟地址的浪费无所谓——现代 64 位系统的进程虚拟地址空间极其充裕;物理页则只在 KV 真正增长时才映射进去。由此物理内存不碎片化,虚拟地址保持连续,未修改的注意力内核开箱即用(第 1–2 页)。P

2 · CUDA VMM API 与页大小(第 2、6 页,台账 P2/P3)

解耦依赖 CUDA VMM:cuMemAddressReserve 预留虚拟段、cuMemCreate 分配物理句柄、cuMemMap + cuMemSetAccess 把物理页映射进虚拟段并授权访问、cuMemUnmap / cuMemRelease 逆向回收。CUDA 原生只支持 2MB 大页——直接用会产生内部碎片;vAttention 修改开源的 NVIDIA 统一虚拟内存驱动,新增支持 64KB(以及 128KB/256KB)页组的自定义 vMem API 族;评测未发现 64KB 页拖慢注意力内核,即没有 TLB 抖动证据(第 2 页)。两套 API 的实测延迟见 数据路径 的表 B2。P I(综合表述)

3 · 迭代前映射:step 语义(第 6 页,台账 P3)

服务框架每迭代调用一次 step(传入各请求当前上下文长度);vAttention 保证所有活跃请求的 KV 子张量在迭代开始前已由物理页支撑,然后才把执行权交回框架派发 GPU 内核。物理页不够时返回失败,框架可抢占请求以保证前进(与 vLLM 默认行为类似)。P

4 · 把 VMM 延迟移出关键路径(第 8 页,台账 P4)

给 Yi-34B(60 层)的一个请求增长一个页组需要 120 次 cuMemMap + cuMemSetAccess、每次约 40µs——合计约 5 毫秒,绝不能同步做。两个优化:P(第 8 页)

  • decode:映射与计算重叠。decode 每迭代每请求只产出 1 个 token,下一迭代是否需要新页组是可预测的——vAttention 用后台线程在上一个迭代执行期间完成下一迭代的物理页映射。P
  • prefill:延迟回收 + 急切分配。请求 R1 完成后不急于收回物理页,而是把它的 reqId 连同已映射页面直接交给新请求 R2 复用(R2 上下文更长才需追加分配);同时常备一个「预热」的空闲 reqId,新请求到达即接管,再为下一个急切预映射。仅当缓存的页组低于 GPU 显存约 10% 时才真正触发回收。P
  • 推断:综合 P3+P4——内存增长被设计为「提前映射 + 计算期隐藏」,重映射不应阻塞服务主循环;这是本页的解读而非论文印刷声明。I(台账 I1)
核验范围提醒:本页机制描述严格限定于已核验门控(第 1 页摘要/§1;第 2 页 §1;第 6 页 VMM/step;第 8 页优化;第 9–11 页实验;第 15 页 H100;第 18–19 页附录)。门控之外的实现细节(2×N 虚拟张量布局、reqId 索引、统一内存与张量切片的备选方案讨论等)本站仅作定性转述并标 I,不复述其精确数字。

GPU / 系统数据路径

vAttention 数据路径图:客户端请求进入 vLLM API 服务器,调度器接纳请求后由 vAttention step 预留 KV 缓存空间;为请求预留一段连续对齐的虚拟地址区,经 CUDA 虚拟内存管理(cuMemCreate、cuMemMap、cuMemSetAccess 映射,cuMemUnmap 解除)按需映射 64KB 物理 GPU 页;未修改的注意力内核通过平坦虚拟地址直接访问显存;采样 token 流回客户端。右侧对比面板显示虚拟布局始终连续(V0–V7 相邻槽位),而物理页分散落在显存任意空闲处;共 7 步
图 1 · vAttention 端到端数据路径(本站据论文摘要/§1(第 1–2 页,台账 P1/P2)与 VMM 机制(第 6、8 页,台账 P3/P4)绘制;编号 ①–⑦ 对应下方文字序列)。图注说明:64KB 页为论文修改版驱动提供的分配粒度(第 2 页),CUDA 原生 API 仅支持 2MB 页;图中「映射/解除映射」的调用延迟实测见表 B2。

端到端文字序列

  1. ① 请求进入:客户端请求到达 vLLM API 服务器(论文实现以 vLLM 为承载框架,第 2 页)。P
  2. ② 调度与 step:vLLM 调度器接纳请求;框架调用 vAttention 的 step,确保各活跃请求的 KV 空间在本迭代开始前已就绪(第 6 页)。P
  3. ③ 虚拟连续预留:每个请求在虚拟地址空间中占据一段连续、对齐的 KV 区段(init 时按最大批 × 最大上下文预留,reqId 定位子区域;布局细节为正文转述)。P I(细节转述)
  4. ④ CUDA VMM 映射/解除映射:映射走 cuMemCreate + cuMemMap + cuMemSetAccess,回收走 cuMemUnmap;vMem 扩展把后两步合并以支持 64KB 页组(第 6 页 Table 3)。P
  5. ⑤ 物理页按需分配:只有当 KV 随 token 增长耗尽已映射页时,才映射新的 64KB 物理页——物理显存哪里有空就落哪里,与虚拟布局无关(第 1、2、6 页)。P
  6. ⑥ 注意力内核直接访问:FlashAttention-2 / FlashInfer / FA3 等未修改内核把 KV 当作普通连续张量,经平坦虚拟地址由 GPU MMU 完成到散布物理页的翻译——无需 Block-Table(第 1 页;内核对照见第 9–11 页)。P R
  7. ⑦ token 流式返回:采样 token 回传客户端;decode 期下一迭代所需的新页映射已由后台线程与计算重叠完成(第 8 页)。P
表 B1 · 数据路径组件与职责
组件职责证据
vLLM 调度器 + 请求池控制面请求接纳、批组合;每迭代调用 step 传入各请求上下文长度P 第 2、6 页
vAttention 库(init / alloc_reqid / step / free_reqid)显存管理面虚拟张量预留、reqId 分配、迭代前保证物理页就绪、不足时返回失败交由框架抢占P 第 6 页(step 语义;API 全集为正文转述 I
后台线程显存管理面decode 映射与计算重叠;延迟回收 + 急切分配(缓存页组 <10% 显存才回收)P 第 8 页
CUDA 驱动 / VMM(含修改版开源驱动)内核层虚拟/物理解耦的 map / unmap;原生 2MB 页 + 扩展 64KB 页组P 第 2、6 页
注意力内核(FA2 / FlashInfer / FA3,未修改)计算面按平坦虚拟地址直接读写连续 KV 张量;批组成变化时由框架更新 cache_batch_idx 映射P 第 1–2 页 R 第 9–11 页
表 B2 · CUDA VMM / vAttention 扩展 API 实测延迟(第 6 页 Table 3,台账 P3 同页门控;单位 µs,2MB 与 64KB 两档)
API作用cuMem(仅 2MB)vMem(64KB 档)备注
cuMemAddressReserve / vMemReserve虚拟地址预留218*仅框架启停时调用一次
cuMemCreate / vMemCreate分配物理内存句柄291.7vMem 支持 64–256KB 页组
cuMemMap / vMemMap物理句柄映射进虚拟缓冲28vMemMap 合并了 Map+SetAccess
cuMemSetAccess授权虚拟缓冲访问38已并入 vMemMap
cuMemUnmap解除映射34已并入 vMemRelease
cuMemRelease / vMemRelease释放物理页232合并 Unmap+Release
cuMemAddressFree / vMemFree释放虚拟缓冲135*仅框架启停时调用一次

量级感受:给 Yi-34B(60 层 → 120 个 K/V 张量)的一个请求增长一个页组 ≈ 120 次 Map+SetAccess × 约 40µs ≈ 5 毫秒——这就是必须做重叠与延迟回收的原因(第 8 页)。P

架构权衡

内核零改写 ↔ 驱动 fork 负担

注意力内核开箱即用、新内核(FA3)零改造接入(第 1–2 页),省下的是持续性的内核维护成本;但 64KB 页组要修改开源 NVIDIA 驱动,换来的是驱动 fork 的长期维护与版本跟随义务(第 2 页)。P I(维护成本判断)

prefill 大赚 ↔ decode 持平

prefill 是计算受限、分页开销无处可藏,vAttention 提升明显(192K 上下文较 FA2_Paged 1.24–1.26×,第 9–11 页);decode 是内存受限、访存停顿本就掩盖分页开销,vAttention 只是与最优分页内核打平(第 11 页)——收益结构高度依赖负载形状。R

VMM 灵活性 ↔ API 延迟

虚拟/物理解耦是能力来源,也是新成本:单次 VMM 调用微秒级、一个页组增长合计毫秒级(第 6、8 页),必须靠可预测性(decode 每迭代 +1 token)+ 后台线程 + 延迟回收来隐藏——机制复杂度从「内核改写」转移到了「分配调度」。P I(综合判断)

2MB 大页 ↔ 64KB 细粒度

默认 2MB 页零驱动改动但内部碎片大;64KB 页把分配粒度调细、碎片逼近 PagedAttention 的块粒度,代价是修改驱动 + 更多映射调用(第 2 页;页组与延迟对照见第 6 页 Table 3)。二者是同一旋钮的两档,不是免费午餐。P I(台账 I2)

物理页跨请求复用 ↔ 隔离

延迟回收把已完成请求的物理页连同 reqId 直接交给新请求(第 8 页)——性能上极佳,但「新请求读到上一请求残留 KV 页」在机制上是默认行为;多租户强隔离场景必须另加清零/分域策略,论文未涉及。P(机制) I(安全含义)

虚拟地址近乎无限 ↔ 真实显存上限

虚拟连续以「浪费虚拟地址」换「不碎片化物理显存」,前提是 64 位虚拟地址空间充裕;真正约束容量的仍是物理显存与 VMM 可映射的页数——容量规划从「碎片率」转移到「页组粒度 × 物理总量」。I(设计含义推断,台账 I3 关联)

云上部署映射

本节为部署映射:论文硬件事实标 P/R,云产品对应标 E(仅作厂商中立示例,参数与价格以云厂商文档为准,本站未联网核验),运维建议/推断标 I。

表 C · 论文配置 → 云上对应(厂商中立示例,非推荐)
维度论文配置(P/R/E)云上映射(E/I,示例非推荐)说明
GPU 实例与拓扑 Yi-6B:1× A100 80GB;Llama-3-8B / Yi-34B:2× NVLink 互联 A100(TP-2);H100 1–2 张验证可移植 R(第 9–11 页 Table 5 口径;第 15 页) 单卡实例族(A100 80GB)起步,大模型选 NVLink/NVSwitch 互联的多卡实例;H100 实例族用于 FA3 路线 E TP 度决定虚拟张量数量与页组 token 容量,拓扑带宽影响 TP 效率 I
驱动与软件栈 复现环境绑定 CUDA 12.1、Python 3.10、PyTorch 2.3.0 与修改版开源 NVIDIA 驱动;论文明言更高 CUDA 版本「可能可用也可能不可用」 E(附录第 18–19 页,台账 E1) 自定义镜像 + 固定驱动/CUDA 版本;将驱动 fork 纳入镜像构建流水线与版本清单 E I 驱动层改动是本方案最重的运维绑定项,升级窗口需专门评审 I
部署形态 vAttention 以库形态集成进 vLLM(第 2 页)P 容器化推理服务(vLLM + vAttention 镜像);单实例内生效,不要求跨节点特殊网络 E 与分离式架构(如 Mooncake 类)正交:vAttention 解决的是实例内 KV 显存管理 I
页大小策略 默认 2MB;64KB 需修改驱动;页组大小在 init 时配置 P(第 2、6 页) 按负载分型配置:延迟敏感在线服务可用默认 2MB 档,吞吐型批处理可用 64KB 档 I 页组粒度影响可支撑的最大批大小与碎片率 I
SLO / 容量口径 论文未明确披露显式 TTFT/TBT SLO;在线实验以固定 QPS(0.1–0.3)下请求执行延迟 CDF/中位数为准(第 11 页)R 云上 SLO 建议以「请求端到端执行延迟 P50/P99 + 容量 QPS」表达,压测复现论文的泊松到达 + FCFS 设定 I 与站内 TTFT/TBT 口径页对照时必须先换算口径 I
可观测 论文未披露运维指标体系 I(缺口) 指标面:同步分配延迟尖峰(未重叠时毫秒级)、最大批大小随页组策略的变化、碎片/页组缓存水位、TP 拓扑健康 I 分配延迟尖峰重现即说明重叠优化失效或配置不当 I

成本 / 性能 / SLO

SLO 与实验口径(论文定义)

表 D · 论文各实验的口径(注意:论文未明确披露 TTFT/TBT 型显式 SLO 数值)
实验SLO / 关键条件系统配置结果来源
decode 内核微基准(第 9–11 页) 初始上下文 16K;批 ≤32;按 400 次 decode 迭代均值折算吞吐 FA2_vAttention vs FA2_Paged / FI_Paged / vLLM vs vLLM 至 1.99×;与 FA2_Paged 持平 R R1
prefill 内核/端到端(第 9–11 页) 上下文 1K–192K;prefill 吞吐 = 每秒处理 prompt token 数 FA2/FI_vAttention vs 各自 _Paged 192K 时 1.24–1.26×(FA2) R R1
离线端到端(第 11 页) 427 请求;上下文 64K–192K;输出 17–5153;P:D≈356;口径 = 每分钟完成请求数 FA2_vAttention vs FA2_Paged / FI_Paged 1.13–1.18× / 至 1.23× R R1
在线端到端(第 11 页) 512 请求;输入 22K–45K(均值 29K)、输出 6–3250(均值 348)、P:D≈129;泊松到达、FCFS;接近饱和容量运行;口径 = 请求执行延迟 CDF FA2_vAttention vs FA2_Paged 中位延迟 −42%/−28%/−29% R R1
FA3 可移植性 / H100(第 15 页;数字第 2 页) FA3 发布时无 PagedAttention 支持;vAttention 零内核改动接入;1–2× H100 FA3_vAttention vs 分页 FA2 1.26–1.5× P 第 2 页 R 第 15 页

容量规划变量

  • 上下文长度与 P:D 比:论文明确「收益与上下文长度、prefill:decode token 比成正比」——prefill 占比越高,vAttention 相对分页内核越有利(第 11 页);R
  • 注意力内核选择:vAttention 的价值在「随时换上最快的非分页内核」——内核层的进步直接转化为服务层收益(如 FA3,第 2 页);P
  • 页组粒度:2MB 与 64KB 档分别面向延迟敏感与吞吐型负载,影响可支撑的最大批大小(第 6 页页组配置;具体批上限数字在台账门控外,本页不展开);P I
  • 分配延迟余量:VMM 分配带宽远高于 decode 期 KV 增长需求(摘要文件同口径记录),分配速度本身不构成瓶颈——瓶颈在单次页组增长的延迟隐藏。I

成本模型(参数化,非论文结论)

论文不含任何成本数据(仅吞吐/延迟)。架构师可用下式估算(I,价格项为参数):

每百万生成 token 成本 ≈ ( p_gpu × N_GPU ) ÷ ( T_gen × (1 − φ) ) × 10⁶ …(公式 1)

  • p_gpu:单卡时租价(A100/H100,按查询日云价代入,E);
  • N_GPU:实例卡数(论文口径 1–2 张起,TP-2 时为 2,R);
  • T_gen:实测生成吞吐(token/s)——内核选择、批上限、P:D 比、页组策略共同决定;可按论文相对收益作修正(如 prefill 主导负载对分页基线 ×1.13–1.23,R);
  • φ:显存浪费率(内部碎片 + 预留损耗)——2MB 档高于 64KB 档;64KB 需驱动支持。I

敏感项:负载 P:D 比升高 → T_gen 相对基线的收益放大(第 11 页 R);页组从 2MB 换 64KB → φ 下降但映射调用增多、依赖驱动 fork(第 2、6 页 P);换用更新内核(FA3/H100)→ T_gen 抬升 1.26–1.5×(第 2 页 P)。

安全与可运维性

论文披露范围

  • 核验门控内论文未涉及安全、隐私、多租户与故障恢复议题——以下部署要点除标注论文事实外均为编辑推断。I
  • 官方工件仓库:github.com/microsoft/vattention——论文内唯一锚点是附录(第 18–19 页);仓库自身的可用性/内容属外部事实,本次未联网核验,本页亦不提供任何其他外部链接。E(台账 E1)
  • 复现环境明确要求特权容器(docker --cap-add=SYS_ADMIN)与 HuggingFace 令牌(HF_TOKEN)访问 Llama-3-8B(第 19 页附录)。E

论文未披露、部署方必须自行覆盖的项

表 E · 安全/运维清单(论文事实 + 缺口 + 编辑建议)
维度论文状态部署建议(I)
租户隔离 / KV 残留机制默认跨请求复用物理页:完成请求的页组经延迟回收直接交给新请求(第 8 页)PKV 含用户 prompt 衍生状态,页残留是设计默认行为而非缺陷;多租户必须显式决定:按租户分域部署、或回收前清零、或默认关闭跨租户复用,并过合规评审
缓存管理语义页组缓存 <10% 显存才回收;急切预映射常备空闲 reqId(第 8 页)P把「缓存页组水位」「回收触发阈值」纳入配置审计——它们同时影响性能与残留生命周期
供应链官方仓库 microsoft/vattention(附录第 18–19 页锚定);复现绑定 CUDA 12.1 / PyTorch 2.3.0 / 修改版开源 NVIDIA 驱动;归档 DOI 10.5281/zenodo.14048692(第 18 页印刷信息,本页不作链接)E仅从官方仓库/归档 DOI 构建镜像并锁定 digest;驱动 fork 纳入 SBOM 与上游同步计划;任何「第三方优化版 vAttention」镜像视为未核验供应链
RBAC / 访问控制论文未涉及;复现流程需要 SYS_ADMIN 特权容器与 HF_TOKEN(第 18–19 页)E生产收敛特权:复现环境与生产镜像分离;模型仓库令牌走密钥管理;驱动加载、镜像推送、仓库写权限分角色授权
监控告警未披露指标体系 I(缺口)对同步分配延迟尖峰(毫秒级即异常)、step 失败/抢占率、最大批大小(随页组策略漂移)、页组缓存水位、TP 拓扑健康设告警
参数调优页组大小为 init 配置项(第 6 页)P页组粒度、回收阈值按真实负载在线调优;论文数字基于 vLLM v0.2.7 与特定模型,不能直接迁移到任意生产环境
故障恢复未披露 I(缺口)分层演练:GPU 驱动/VMM 层故障(映射失败、显存耗尽)与推理服务层故障(step 失败→框架抢占请求)分开处置;实例级自愈重建后预热页组缓存
回滚论文明言更高 CUDA 版本「可能可用也可能不可用」(附录第 18 页)E保留两条已验证回退路径:① 换回标准驱动 + PagedAttention 内核后端;② 锁定 CUDA 12.1/PyTorch 2.3.0 的旧镜像;驱动与服务版本分开变更、可独立回滚
合规提醒:「新请求复用上一请求已映射物理页」是 vAttention 的性能机制本身(第 8 页)。多租户服务若不显式处理,请求 B 可能接触请求 A 的 KV 残留。涉及个人数据或监管数据时,默认跨租户分域部署,并在合规评审中把该机制写进威胁模型。I

适用 / 不适用场景

适用(触发条件 → 理由)

  1. 长上下文 / prefill 占比高的负载:触发条件——输入数万 token 起、P:D 比高(如摘要、文档问答、代码补全的长前缀场景)。理由——论文明确收益与上下文长度和 P:D 比正相关,实测离线吞吐较分页内核 1.13–1.23×、在线中位延迟至 −42%(第 11 页)。R
  2. 注意力内核快速迭代的团队:触发条件——希望随时接入最新非分页内核(FA2 → FlashInfer → FA3)而不维护分页移植。理由——虚拟连续 KV 让未修改内核开箱即用;FA3 发布时无 PagedAttention 支持,vAttention 零内核改动接入并带来 1.26–1.5× 提升(第 1–2 页)。P
  3. A100/H100 自托管、软件栈可控的服务:触发条件——能用自家镜像管理驱动与 CUDA 版本。理由——论文在 A100 上完成主要评测并验证 H100 可移植(第 9–11、15 页),硬件路线与主流云 GPU 实例族吻合。R
  4. 被分页内核开销困住的 vLLM 类部署:触发条件——profile 显示 Block-Table/分页分支开销或块大小敏感性问题(至 1.9× 波动,第 1 页)。理由——同一框架内把分页内核换成「非分页内核 + vAttention」即可消除该层开销,decode 吞吐较 vLLM 内核至 1.99×(第 9–11 页)。P R

不适用(触发条件 → 理由)

  1. decode 主导、短上下文负载:触发条件——输出远长于输入、上下文短(闲聊式短对话)。理由——decode 是内存受限,分页开销可被访存停顿掩盖,vAttention 仅与最优分页内核持平(第 11 页),收益有限(按论文条件反推)。R I
  2. 不可修改 GPU 驱动的受管环境:触发条件——托管 K8s 节点池/托管 GPU 服务不允许替换驱动,或无驱动 fork 维护能力。理由——64KB 细粒度页依赖修改版开源驱动(第 2 页),退回 2MB 默认档则碎片与批上限受限,机制收益打折。P I
  3. 硬多租户隔离 / 强合规业务:触发条件——跨租户数据严格不可见、KV 残留须可审计清除。理由——跨请求物理页复用是机制默认(第 8 页),需关闭复用或分域部署,性能前提随之改变;论文未提供隔离机制。P(机制) I(缺口判断)
  4. 非 CUDA / 旧 CUDA 生态:触发条件——非 NVIDIA GPU,或驱动/CUDA 版本无法锁定在经验证组合(附录口径 CUDA 12.1,更高版本不保证可用,第 18 页)。理由——整套机制立在 CUDA VMM 与开源驱动改动之上。E I
  5. 期待调度/多实例优化的团队:触发条件——诉求是过载准入、prefill/decode 分离、跨实例缓存复用。理由——vAttention 只解决单实例内 KV 显存管理,不含调度器;这类诉求应对照本站 DistServe / Sarathi-Serve / Mooncake 页。I

实验与指标

复现实验的完整条件(论文核验门控内)

表 F · 实验条件口径(硬件 / 模型 / 精度 / 负载 / 基线)
条件维度论文口径来源
硬件NVIDIA A100 80GB:Yi-6B 单卡,Llama-3-8B / Yi-34B 各 2 张 NVLink 互联卡(TP-2);H100 1–2 张用于可移植性R 第 9–11 页(R1);第 15 页(R2)
模型Yi-6B(32 QHead / 4 KVHead / 32 层)、Llama-3-8B(32 / 8 / 32)、Yi-34B(56 / 8 / 60)R 第 9 页 Table 5(R1)
精度(dtype)论文未明确披露实验精度;正文尺寸计算仅以 P=2(FP16/BF16 每元素 2 字节)举例P 第 6 页 I(不臆测)
框架 / 内核版本vLLM v0.2.7 为公共框架;FlashAttention-2 v2.5.9、FlashInfer v0.4.0 作为注意力后端集成R 第 9 页(R1)
基线配置KV block size:vLLM 与 FlashInfer 取 16,FA2 分页内核取 256(各自最优配置)R 第 9 页(R1)
负载(微基准)decode:初始上下文 16K、批 ≤32(Yi-34B 批 32 时 OOM);prefill:上下文 1K–192K;吞吐按 400 次 decode 迭代均值折算R 第 9–11 页(R1)
负载(端到端)离线:arXiv-Summarization 427 请求、上下文 64K–192K、输出 17–5153、P:D≈356;在线:512 请求、输入 22K–45K(均值 29K)、输出 6–3250(均值 348)、P:D≈129、泊松到达 + FCFS、接近饱和容量R 第 11 页(R1)

关键结果(均带条件)

表 G · 评测关键数字 → 完整条件 → 定位
结论(指标)数字完整条件(硬件 / 模型 / 精度 / 负载 / 基线)来源页码
vLLM 分页 decode 内核落后 FA2至 2.8× / 1.5× / 2.5× 延迟 Yi-6B / Llama-3-8B / Yi-34B;A100;Table 7 口径(注意力内核总延迟,毫秒/迭代) P 第 1 页(Table 1);第 9–11 页(R1)
分页 prefill 内核开销FA2 −37% · FlashInfer −42% 非分页内核对照;Fig.2(图注口径:Llama-3-8B,1×A100) P 第 1 页(摘要/Table 1);R R1(Fig.2)
块大小敏感性至 1.9× vLLM 分页 decode 内核执行时间随块大小(64/128 时最差);Fig.3 P 第 1 页;R R1(Fig.3)
decode 吞吐 vs vLLM 内核至 1.99× / 1.58× / 1.53× Yi-6B / Llama-3-8B / Yi-34B;A100(1–2 卡 TP-2);初始上下文 16K、批 ≤32;FA2_vAttention 与 FA2_Paged 持平且同为最优 R 第 9–11 页(Fig.8,R1);第 2 页
prefill 吞吐 @192K1.24× / 1.26× / 1.24× FA2_vAttention vs FA2_Paged;Yi-6B / Llama-3-8B / Yi-34B;上下文 192K R 第 9–11 页(R1)
离线端到端吞吐vs FA2_Paged 1.18×/1.15×/1.13×;vs FI_Paged 1.19×/1.23×/1.14× 427 请求、64K–192K 上下文、P:D≈356;三模型同上 R 第 11 页(Fig.9,R1)
在线中位请求延迟降幅−42% / −28% / −29% QPS 0.25 / 0.3 / 0.1(Yi-6B / Llama-3-8B / Yi-34B);512 请求、均值输入 29K;主因是更快 prefill 消除排队延迟 R 第 11 页(§7.4,R1)
页组增长的同步映射代价约 5 ms Yi-34B 60 层 → 120 次 cuMemMap+cuMemSetAccess × 约 40µs;单请求 KV 增长一个页组 P 第 8 页;API 延迟第 6 页 Table 3
FA3 开箱即用(H100)1.26–1.5× FA3 无 PagedAttention 支持;vAttention 零内核改动接入;对照分页 FA2;H100 可移植性第 15 页 P 第 2 页 R 第 15 页(R2)

公平性限制与已知差异

  • 全部数字为对门控页的转述;精确引用请回查 PDF 原文(摘要文件同此声明)。P I
  • 基线时点:对照基于 vLLM v0.2.7(论文发表时点的「公平比较」口径,第 9 页);当前 vLLM 及各内核库已持续演进,绝对数字不能外推到今日版本栈。R(论文口径) I(时效判断)
  • 精度未明示:实验 dtype 论文未明确披露,本页不臆测;仅正文尺寸计算以 P=2(FP16/BF16)举例(第 6 页)。P
  • 数字不可与 Mooncake、DistServe 等其他论文横比(硬件、负载、口径均不同;本论文亦无 TTFT/TBT SLO 口径)。I

核对 / 复现路径(附录第 18–19 页,台账 E1)

论文提供完整工件附录;以下步骤均出自附录原文(E,页码 18–19),顺序编排为编辑建议(I):

  1. 克隆官方仓库 github.com/microsoft/vattention(唯一官方来源;归档 DOI 10.5281/zenodo.14048692,本页不作链接);
  2. 环境:conda(Python 3.10)+ CUDA 12.1 + PyTorch 2.3.0;或直接用预装 Docker 镜像 rnp1910/vattention:asplos_25_pytorch_run(需 --cap-add=SYS_ADMIN 特权);
  3. huggingface-cli login 提供 HF_TOKEN 以访问 Llama-3-8B;
  4. 硬件:2 张 NVLink 互联 A100 80GB、200GB 磁盘;准备约 1 小时,实验 1–2 天(Fig.2/3/11 数分钟,Fig.4/7 约 1 小时,Fig.8/9 各 12 小时以上);
  5. ./run_all.sh 或按图运行 run_figure_*.sh,输出落在 logs/plots/,图格式与论文一致但绝对数字随环境浮动。

给架构师的决策清单

需求与兼容
PoC 与容量
SLO 与成本
安全与运维
退出策略

证据台账

分级(本论文台账 schema:sources/vattention.evidence.json,schema evidence-ledger/v1):P = 论文原理/机制主张(锚定 PDF 页码/章节);R = 论文报告的实验结果(锚定 PDF 页码);E = 外部工件(官方仓库,论文附录仅作锚点,仓库内容未联网核验);I = 编辑推断(显式标注不确定性,非论文印刷主张)。编号与台账文件一致(P1–P4、R1–R2、E1、I1–I3);定位均为真实 PDF 页码。注意:本页 R 级含义为「论文实验结果」,与站内部分页面「R = 仓库声明」的用法不同,以各页台账 schema 为准。最后核验日期:2026-09-14。

表 I · 关键结论 → 级别 → 定位(真实 PDF 页码 + 章节/图号)→ 核验状态(10 条 = P 4 · R 2 · E 1 · I 3)
编号关键结论(摘要)级别定位(PDF 页码 + 章节/图号)核验状态
P1vAttention 提供虚拟连续 KV cache,用 CUDA 虚拟内存管理(VMM)把物理内存分配与虚拟地址空间解耦P第 1 页 · 摘要/§1已核验(PDF 原页,台账门控)
P2默认页大小 2MB;修改版驱动另提供 64KB 页P第 2 页 · §1已核验(PDF 原页,台账门控)
P3vAttention step 中,物理页在迭代开始前完成映射P第 6 页 · Sec.4(Table 3 VMM API 延迟同页)已核验(PDF 原页,台账门控)
P4vAttention 把 decode 期执行的映射与计算重叠P第 8 页 · Sec.6已核验(PDF 原页,台账门控)
R1实验覆盖 Yi-6B、Llama-3-8B、Yi-34B(A100),对比呈现于 Fig.2 与 Fig.3(吞吐/开销对照,含 decode vs vLLM 至 1.99×、离线 1.13–1.23×、在线中位延迟至 −42% 等第 9–11 页数字)R第 9–11 页 · Experiments;Fig.2;Fig.3已核验(PDF 原页,论文报告结果)
R2vAttention 可移植到 H100R第 15 页 · H100 portability已核验(PDF 原页,论文报告结果)
E1官方工件仓库为 github.com/microsoft/vattention;论文内仅由附录(第 18–19 页)锚定。本证据文件不对仓库作任何外部第三方断言(博客、第三方评测、采用情况均未核验)E第 18–19 页 · 附录(仅论文侧锚点);仓库本身为外部工件部分核验(PDF 附录锚点已核验;仓库存在性/可用性未联网核验,无捏造断言)
I1由 P3+P4 推断:内存增长靠「迭代前映射 + decode 期映射藏进计算」处理,即重映射被设计为不阻塞服务主循环I源自 P3(第 6 页)与 P4(第 8 页)编辑标注完成(解读,非论文印刷声明)
I2由 P2 推断:2MB 页是默认工作点;修改驱动的 64KB 选项是「更细分配粒度 ↔ 额外映射工作」的可选权衡I源自 P2(第 2 页)编辑标注完成(解读,非论文印刷声明)
I3由 R1+R2 推断:设计在 A100 上评测、演示可移植到 H100,表明方案面向跨代际的 NVIDIA 数据中心 GPUI源自 R1(第 9–11 页)与 R2(第 15 页)编辑标注完成(解读,非论文印刷声明)

数据与文件说明:本页全部性能数字与机制描述均取自论文《vAttention: Dynamic Memory Management for Serving LLMs without PagedAttention》(ASPLOS '25)已核验门控页(第 1、2、6、8、9–11、15、18–19 页),并通过 sources/vattention.summary.jsonsources/vattention.evidence.json 逐条对应;台账 fabrication_policy 明确:不捏造任何台账之外的数字、arXiv 号、作者、出处或日期。编辑推断与部署建议已用 I 标注;本页唯一外链为官方仓库 microsoft/vattention。数据路径图 assets/diagrams/vattention-data-path.svg(含 title/desc 无障碍描述)。