ECHO:以无损预取实现原生稀疏注意力大模型的高效 KV cache 卸载(OSDI 2026)

原题:ECHO: Efficient KV Cache Offloading with Lossless Prefetching for Serving Native Sparse Attention LLMs

一句话总结:原生稀疏注意力减少计算,却仍受完整 KV cache 的 HBM 容量约束;ECHO 用兼容 CUDA Graph 的逐层缓存管理、索引器内预取与精确补取扩大并发,在 8×H20、DeepSeek-V3.2-Exp AWQ、80K–100K 输入且固定输出 256 token 的解码测试中,吞吐最高达到 SGLang 的 2.15 倍,但预取本身的端到端增益最高仅 4%。

问题与动机

训练时引入的原生稀疏注意力让模型学习只使用选中 token 的 KV,避免推理时临时剪枝带来的额外精度损失。DeepSeek Sparse Attention(DSA)使用轻量索引器计算所有历史 token 的重要性,选择最高的 2048 个,再执行多头潜在注意力(MLA,即缓存低维潜在向量的注意力机制)。完整的 KV cache 仍须保留,而且索引器还增加了一份 K cache。

HBM 因而限制长上下文请求的并发。论文测得,DeepSeek-V3.2 AWQ 在 8×H20 上使用注意力 DP8、MoE TP8 时,每个工作进程实际最多容纳约 380K token,只能同时处理 3–4 个约 100K token 的请求。稀疏 FlashMLA 的非连续访存又使小批量效率偏低,减少注意力运算并未自动转化为高吞吐(§2.4,图 1–2)。

将 MLA KV 卸载到主机内存能扩大容量,但每层动态分配、驱逐和取回可能打断 CUDA Graph,并暴露 PCIe 传输延迟。InfiniGenFreeKV 等方法利用跨层或跨步相似性提前选取 KV;ECHO 希望只用预测决定传输时机,最终仍保留原模型精确 top-k 的注意力输入。

关键观察 / 隐含假设

  • 观察 1:容量限制让稀疏内核无法获得足够批量。 图 2 中,64K 上下文、批量 8 的稀疏 FlashMLA 硬件利用率只有约 53%;图 12 中扩大有效批量后,吞吐随之提升。
    • 依赖假设:系统有足够多的并发长请求,且增加批量能改善当前算子效率。
    • 可能失效场景:低请求率、少量超长输出、DP 负载不均或容量已充裕。图 14 的 Code.Run 已出现 ECHO 平均吞吐比 SGLang 低 1.74% 的反例。
  • 观察 2:相邻解码步的第 k 高索引分数可预测。 图 7–8 使用一条 20K token 的 ShareGPT 请求,展示第 3、50 层的分数轨迹;平滑系数 0.5 的指数移动平均(EMA)预测使预取候选数多数时候接近 2048。
    • 依赖假设:阈值波动不会导致大量无效预取或补取。该证据只展示有限请求和层,尚非跨任务统计保证。
    • 可能失效场景:查询语义突然变化、其他索引器或选择预算变化。预测变差影响性能;精确补取负责避免遗漏最终选中的 KV。
  • 观察 3:实际需要跨 PCIe 取回的 KV 很少。 InfiniteBench 中,多数层的 GPU 缓存命中率为 97%–99%,第 12、17 层分别约 95%、88%(图 17)。图 4 表明,在约 100K 上下文、90% 命中率时,索引计算已可能比取回更慢,提供重叠窗口。
    • 依赖假设:GPU 缓存能维持局部性,主机内存与 PCIe 不被其他请求耗尽。
    • 可能失效场景:多租户相互驱逐、预填充集中写回、低局部性的长序列。此时取回可能超过可隐藏的计算时间。
  • 假设 4:完整主机副本和常驻索引器 K cache 的成本可接受。 实验使用 1.5TB DRAM,其中主机 KV 池消耗约 1000GB;索引器 K 始终留在 GPU。卸载放宽了 MLA KV 容量限制,但没有消除全部随上下文增长的 HBM 用量。

核心方法

图内逐层缓存管理

ECHO 基于 SGLang 和 DeepGEMM 实现。每个注意力 DP 工作进程维护主机、GPU 两级缓存池:主机保存完整 MLA KV,GPU 只缓存部分 token,索引器 K 常驻 GPU。由于不同层选中的 token 不同,GPU 池及元数据逐层管理;主机池仍按模型统一管理(§3–4,图 5–6)。

管理器预分配固定长度的空闲位图、驱逐优先级、索引缓冲区和双向主机/GPU 映射。分配通过并行扫描与原子计数选择空闲槽位;释放先保护当前选中 token,再按低优先级选择槽位并更新映射。操作避免动态张量切片和拼接,使整个解码路径可以被单张 CUDA Graph 捕获。淘汰不必再传回数据,因为 KV 生成时已备份到主机。

取回操作先从映射中找出缺失项,再分配槽位,由 GPU 内核直接访问主机内存并复制 KV。这里省去的是逐层 CPU 控制,不是所有主机端调度与图启动开销。元数据成本为每层 4N_H + 13N_G 字节;论文以主机池 2M、GPU 池 200K token 为例,给出约 10MB/层、全模型约 610MB 的开销。

解码:先预测传输,再做精确补取

每个解码步使用历史第 2048 高分数的 EMA 作为预取阈值。索引器计算某块分数后,就能预取其中超过阈值且尚未缓存的 KV,无须等待全局 top-k 完成。全局计数器限制预取量,上限随上下文长度增长,防止过量传输阻塞索引器(§5.1、§5.3)。

索引器结束后,系统仍执行精确 top-k,并取回其中所有尚未驻留的 KV,然后才进行稀疏注意力。论文所谓“无损”依赖这一步兜底;阈值预测没有替代最终选择,也没有证明预测永远准确。该保证相对于同一个原生稀疏模型,不表示 AWQ 量化模型与未量化或稠密模型等价。

预填充:跨查询块重叠取回

预填充阶段有多个查询块。计算第 i+1 块分数时,可以传输第 i 块已识别候选的 KV。为避免在融合内核中执行完整 top-k,ECHO 用 256 桶的粗粒度直方图选出严格高分区间,留下阈值桶稍后处理;再通过减去预测的第 k 高分数,让选择边界附近的桶更细,从而选出更多有效候选(§5.2,图 9)。最终精确补取仍覆盖漏项。

将预取并入索引器流水线

融合内核把线程束分成数据加载、矩阵运算、预取三个角色,用异步屏障构成流水线。解码沿索引器 K 维度划分工作,预填充沿查询块划分工作。额外预取流水级缓冲传输延迟,避免每次取回直接阻塞下一块分数计算(§5.3,图 10–11)。

设计取舍

  • 容量换延迟与主机成本:完整主机副本扩大并发,但每个新 token 都要写回,缓存未命中时还需经 PCIe 取回。约 1TB DRAM 的预算不能当作免费资源。
  • 整图执行换固定元数据与专用内核:固定长度结构避免 CPU 动态控制,但逐层维护双向映射、优先级和并发更新,增加显存开销及实现验证成本。Triton 管理内核有一定可移植性,融合索引器仍依赖特定 GPU 能力。
  • 精确语义换尾部补取:预测错误不会直接删去注意力输入,但无效预取会占用带宽和缓存,漏取则延长注意力前的等待时间。
  • 优先采用预填充/解码分离:混合部署中,预填充多个查询选中 KV 的并集可能覆盖全部历史,还会集中向主机写入 KV,干扰其他请求。分离部署时 ECHO 在预填充实例上关闭卸载,只让解码实例按需加载(§3)。

实验与结果

实验设置。 单节点 8×H20,每卡 96GB HBM、主机连接为 64GB/s PCIe Gen5,224 核 Xeon Platinum 8480+、1.5TB DRAM。模型为 4 位 DeepSeek-V3.2-Exp AWQ,索引器和第 0、1、2、60 层未量化。基线为 SGLang 0.5.4、vLLM 0.11.1,全部开启解码 CUDA Graph,分块预填充大小为 2048。ECHO 与 SGLang 使用注意力 DP8、MoE TP8;vLLM 受版本能力和显存限制,使用全 TP8(§6.1)。

  • 饱和解码吞吐:318 条 InfiniteBench 请求、输入 80K–100K token、固定输出 256 token、所有请求同时送达时,ECHO 吞吐为 SGLang 的 2.15 倍、vLLM 的 4.1 倍。图 12(a) 标注的总有效批量分别约为 102、28、1.5。测试预先计算 KV,只测解码实例,不是完整在线预填充/解码集群吞吐(§6.2)。
  • 容量受限时收益更大:同样固定 256 token 输出,将 GPU KV 池限制为 200K、110K token 后,对 SGLang 的吞吐优势分别达到 3.10 倍、4.12 倍(图 13)。这是人为收紧容量后的条件性结果。
  • 自然输出长度显著削弱收益:不限制输出长度的分任务测试中,Code.Debug、En.MC、En.QA 平均吞吐分别提高 27.07%、2.83%、7.11%,Code.Run 降低 1.74%。请求较少与长尾输出导致 DP 失衡,较低的逐 token 延迟可让 SGLang 抵消批量劣势(图 14)。
  • 轻载延迟并非无成本:100 条 ShareGPT 请求的混合部署中,平均 TTFT 最多增加 7.9%,逐 token 延迟(ITL)增加 2.7%–27.8%;请求率 0.1–0.2 时端到端平均延迟增加 15.9%–19.2%,请求率至少 0.5 时增幅低于 4.6%(图 15)。
  • 管理开销较小但仍有其他开销:ShareGPT 全量同时到达时,分配、释放、取回、写回的全层耗时合计约 1.15ms,占全层解码延迟 0.28%;总解码延迟仍比 SGLang 高 2.8%,差异还来自图启动及 DP 同步。该测试的 MoE 约占全层耗时 70%(图 16)。
  • 预取消融:解码微基准在命中率 50%、90% 时,索引加取回总延迟最高分别获得 1.29 倍、1.51 倍加速,但完整服务吞吐增益最高 4%(图 18–19)。预填充微基准使用 256/512 个查询 token,最高加速约 1.1 倍;论文没有独立的预填充预取端到端消融(图 20)。

论断—证据表

论断证据评测边界置信度
卸载扩大并发,改善容量受限的长上下文解码吞吐图 12(a)、图 13:对 SGLang 为 2.15 倍,收紧容量后最高 4.12 倍单模型、8×H20、预计算 KV、固定 256 token 输出、饱和请求强,限该配置
整图缓存管理压低逐层动态管理成本图 3(b) 分配加释放由约 12µs 降至 6–8µs;图 16 卸载相关操作合计 1.15ms分配器微基准与高命中率 ShareGPT;缺少管理器独立端到端消融
预取不改变最终 top-k 注意力输入§3、§5:精确选择后补取所有缺失项算法路径保证;未报告逐 token 输出一致性或任务精度对照中,机制证据强于实测证据
索引器内预取能缩短取回等待,但不是主要吞吐来源图 18 最高 1.51 倍局部加速;图 19 端到端最高增加 4%InfiniteBench 多数层命中率 97%–99%,MoE 主导端到端时间
卸载适合吞吐优先,不能泛化为延迟不变图 14 Code.Run 降低 1.74%;图 15 低请求率平均端到端延迟增加 15.9%–19.2%小任务集合、自然输出长度或短上下文轻载强,未覆盖 P99

批判性分析

论证链条

“HBM 限制并发—卸载扩大批量—吞吐上升”的链条有容量测量、有效批量与吞吐曲线共同支撑。更强的结果出现在人为缩小 GPU 池后,也符合容量瓶颈解释。整图管理让这种逐层卸载可以进入实际服务框架,但论文没有把缓存管理设计与容量扩张的端到端收益完全分离。

预取的贡献需要单独看待。标题强调预取,端到端消融却只有最高 4%;主结果不能全部归因于预取。高缓存命中率既使系统可用,也压缩了预取的获益空间。MoE 占比高进一步限制了局部内核加速对整体吞吐的影响。

假设压力测试

阈值预测的稳定性只在少量轨迹中直观展示;其他模型、层和任务的误差分布没有系统评测。可以推断,预测恶化时仍能靠精确补取维持选择语义,但无法据此保证延迟稳定。低命中率、突发到达和多租户共享 PCIe 的组合尤其需要测量。

索引器 K 常驻 GPU 意味着上下文继续增长时仍可能触及 HBM 上限。作者讨论 GQA、块稀疏注意力的适配路径,但调整元数据粒度、增加 KV 头维度并不等于已经验证其他模型。更快的主机互连也只是未来部署讨论,不能将普通 GPU 间 NVLink 带宽直接视作本实验的主机取回带宽。

实验可信度

SGLang 与 ECHO 的并行配置一致,是主结论最有说服力的对照。vLLM 使用不同并行策略且重复存储 MLA KV,4.1 倍差距包含版本和部署能力差异,不应视作卸载机制本身的净收益。

固定输出 256 token 便于测饱和吞吐,却减少了真实输出长度偏斜;作者补充的自然长度和分任务结果揭示了收益边界。预计算 KV 的主实验没有覆盖预填充计算、跨实例传输、排队及完整集群成本。延迟报告以平均值为主,尚不能判断同时满足 TTFT、ITL 和 P99 SLO 的有效吞吐。

附录提供容器、脚本和数据的复现入口,但本页只核验论文及图示,未运行研究产物。论文未提供无损性的任务精度表或输出一致性测试,故应将“无损”理解为设计上的选择集合保持,而非已经实测所有数值行为一致。

系统性缺陷

逐层映射与融合预取引入额外并发状态;其正确性依赖槽位分配、保护、映射更新和传输完成的同步顺序。论文介绍了操作路径,但未系统讨论请求取消、主机池耗尽、故障恢复或多租户隔离。完整主机副本也不等于持久化恢复机制。

共享带宽和主机容量可能把瓶颈从 HBM 转移到 CPU 内存子系统。论文未报告 NUMA 放置、主机带宽竞争、能耗或每 token 成本,也没有多节点规模实验。采用预填充/解码分离缓解了混合负载干扰,但同时引入另一套实例配置与传输管理,不能从单解码节点结果推断部署总收益。

局限与后续工作

  • 输出偏斜与 SLO:用保留原始输出分布的长上下文到达轨迹,比较 ECHO 和同配置 SGLang 的 P50/P99 TTFT、ITL、排队时长及 SLO 内输出吞吐,检验固定输出场景的 2.15 倍能保留多少。
  • 预测失效与无损验证:跨模型和任务记录阈值误差、无效预取字节数、最终补取数;在突变查询、请求取消和高驱逐压力下,逐步比较最终 top-k 索引及注意力输入与无卸载基线是否一致。
  • 更接近生产的成本边界:在真正的预填充/解码分离集群中计入预填充 GPU、KV 传输、DRAM 容量和带宽成本,同时扫描 GPU 池大小与租户数,报告每 token 成本及尾延迟。
  • 作者提出的扩展:预填充可去重不同查询的 KV 取回,其他稀疏方法可暴露提前选择信号;应分别报告取回字节减少量和端到端消融,避免只展示局部内核加速(§6.4.3、§7)。

相关