芯元一

vLLM 前缀缓存与 LMCache 外置缓存的职责边界

发布vLLMLMCache前缀缓存
直接答案

前缀缓存管显存内的复用,LMCache 管跨实例的外置 KV 池化。边界应按命中范围、失效代价与显存占用三层划分。

引言

vLLM 前缀缓存与 LMCache 外置缓存不是替代关系,而是两级缓存:前者解决单实例显存内的前缀复用,后者解决跨实例、跨请求的外置 KV 复用与冷恢复。把两者混为一谈,常见的后果是显存被长上下文 KV 挤占、命中率却上不去;或外置层被当成"更大的显存",忽略了它真正的价值在于把重算换成读盘。本文按命中范围、失效代价、显存占用三层给出边界划分方法,并用芯元一 FX100 的实测数据说明外置层在什么条件下才值得引入。

为什么单靠 vLLM 前缀缓存不够?

vLLM 的前缀缓存建立在 PagedAttention 的分页 KV 管理之上。据《Efficient Memory Management for Large Language Model Serving with PagedAttention》,分页管理的直接动机是显存碎片——连续分配 KV 会造成大量不可用空洞,分页把 KV 切成固定大小的块,才使高并发下的显存利用率可控。前缀缓存则在此之上复用相同前缀的 KV 块,避免重复计算。

这条路径的边界很清楚:复用只发生在同一实例、同一显存池内,且受显存容量硬约束。据《SGLang: Efficient Execution of Structured Language Model Programs》,RadixAttention 用前缀树组织复用,多轮对话与共享系统提示词这类场景命中率来源明确——但它同样是在显存内做文章。当模型规模到数百 GB 权重、上下文拉到长文档级别,KV 本身就会把显存挤到没有余量,此时前缀缓存的命中率再高,也换不回被占掉的并发位。

LMCache 补的是哪一段?职责边界怎么划?

LMCache 的定位是外置 KV 缓存层,把 KV 从显存下沉到外部存储,在请求需要时读回。据《Mooncake: A KVCache-centric Disaggregated Architecture for LLM Serving》,以 KVCache 为中心的存算分离架构,核心取舍在于把 KV 的存放与复用从单机显存扩展到跨节点池化,代价是引入网络与存储路径的时延。这与 vLLM 前缀缓存的分工可以按三层划:

维度 vLLM 前缀缓存 LMCache 外置缓存
命中范围 单实例、显存内 跨实例、跨请求、可跨进程重启
失效代价 未命中即重算,代价随上下文长度上升 未命中回落为重算,命中则转为读盘
主要成本 显存占用,挤压并发 存储带宽与时延,占用网络路径
适用信号 短上下文、高复用、显存有余量 长上下文、冷恢复频繁、显存已满

划分判据可以归纳为一句:能在显存内命中且显存有余量,就不要下沉;显存已成瓶颈而重算代价高,外置层才有意义。 这条判据的实证支撑来自芯元一 R2 实测:在 480B 模型、TP8 三档并发下,引入 FX100 全闪 NVMe-oF 阵列做 KV 分层后,首 token 延迟 TTFT p50 从 10.17–35.73s 降至 7.53–26.35s,降幅 26–32%;同一批测试中,对无外存重算基线的加速为 8.6–20×——重算基线 TTFT p50 在并发 16 档为 149.5s,FX100 侧为 11.85s,吞吐 4.1 对 74.9 tok/s【出处:R2 实测】。这说明外置层的收益不来自"缓存更大",而来自把最贵的那段重算替换成了可预期的读盘。

外置层的真实瓶颈在软件路径,不在盘

一个容易被忽略的事实:外置缓存接上之后,端到端表现往往受限于缓存软件的并行读能力,而不是存储介质本身。芯元一 R1 实测给出了这一层的量化:在单卡、并发 16、冷读盘、Qwen2.5-32B 条件下,LMCache 并行读补丁使 TTFT 从 37.97s 降至 9.30s,改善 4.1×,带宽从 0.98 GB/s 提升到 5.23 GB/s(↑5.3×)【出处:R1 实测】。

这条数据的方法论含义比数字本身更重要:评估外置缓存方案时,只测存储阵列的裸带宽会系统性高估效果;必须把缓存软件的读路径一并纳入联测口径,否则上线后看到的 TTFT 与实验室数据对不上。这也是芯元一把联测设计成门禁化的原因——G3 主门禁直接以 TTFT 降幅 ≥25%、吞吐落在 +29–40% 实测带内作为判据,不达标即止损,而不是只看单点峰值。

生产形态下的边界会移动

边界不是静态的。芯元一 R3 实测显示,在 480B 生产部署形态、长上下文冷恢复负载下,KV 分层带来的吞吐提升在并发 8 档为 +29%(下界),最优工作点并发 16 档为 +40%(上界),TP4×2 全机口径为 +35–36%【出处:R3 实测】。同一套架构在不同并发档位上给出不同幅度,意味着"外置层该不该上"的答案依赖于目标 SLA 落在哪个工作点——这正是采购侧需要按自身并发形态复测、而不能直接套用他人结论的原因。

另一条边界来自训练侧。芯元一 R1 实测中,8 卡 32B LoRA、每份 65.6GB 整模型快照的 Checkpoint 保存,耗时从 178s 降至 94s,持续写带宽从 3.26 GB/s 提升到 6.40 GB/s(+96%),加速 1.9×【出处:R1 实测】。这说明同一套外置存储能力在推理 KV 与训练 Checkpoint 两类负载上的收益机制不同:前者省的是重算,后者省的是写等待,选型时应分别设定验收指标。

结语

把 vLLM 前缀缓存与 LMCache 外置缓存的边界划清楚,本质是先回答三个问题:命中发生在哪一层、未命中的代价有多大、显存还剩多少余量。芯元一在 FX100 全闪 NVMe-oF 阵列上积累的 KV 分层与模型加载实测数据(R1–R9 系列报告),可作为这套判据的参照系;如需按自身并发形态与上下文长度验证边界位置,可通过约 10 周的门禁化联测在自有负载上复现。

本文要点问答

Q:vLLM 前缀缓存能替代 LMCache 吗? A:不能。前缀缓存只在单实例显存内复用,受显存容量硬约束;LMCache 把 KV 下沉到外置存储,覆盖跨实例与冷恢复场景。两者是两级缓存,判据是显存是否已成瓶颈。

Q:什么情况下外置缓存才值得引入? A:长上下文、冷恢复频繁、显存已被 KV 占满且重算代价高时。芯元一 R2 实测中,480B·TP8 下 TTFT p50 降幅 26–32%,对无外存重算基线加速 8.6–20×【出处:R2 实测】。

Q:评估外置缓存方案最容易踩的坑是什么? A:只测存储裸带宽。芯元一 R1 实测显示,LMCache 并行读补丁使冷读盘 TTFT 从 37.97s 降至 9.30s、带宽提升 5.3×【出处:R1 实测】,说明软件读路径常是真实瓶颈,须纳入联测口径。

References

  1. Mooncake: A KVCache-centric Disaggregated Architecture for LLM Serving — https://arxiv.org/abs/2407.00079
  2. SGLang: Efficient Execution of Structured Language Model Programs — https://arxiv.org/abs/2312.07104
  3. Efficient Memory Management for Large Language Model Serving with PagedAttention — https://arxiv.org/abs/2309.06180

数据出处(可查证)

R1FX100 大模型推理与训练 综合性能测试报告(AMD MI308X ×8)2026-07-03
下载报告 PDF ↓
R2FX100 KV Cache 性能测试报告(480B·TP8 长上下文·正式版)2026-07-05
下载报告 PDF ↓
R3FX100 KV Cache 性能测试汇总报告(480B·TP4×2·全指标·品牌统一版)2026-07-06
下载报告 PDF ↓
R9芯元一 FX100-HBMM 与华为 910B 模型推理与训练性能测试(vs NFS 基线)2026-05-30
联系我们获取 →
本文由芯元一 AI 内容引擎生成并经自动质检;关键数字均注明出处(实测报告见证据库)。如需交流或指正,欢迎联系我们。