跳到正文
芯元一

洞察

KV Cache 放本地 NVMe 还是外置 NVMe-oF 阵列?

发布于

问题

KV Cache 应该存在服务器本地的 NVMe 盘上,还是存在外置的 NVMe-oF 全闪阵列上?

结论

两者都能避免整段重算,但在高并发回读下外置阵列更快:480B 模型、TP=8 的实测里,FX100 相对本地 NVMe 单盘吞吐高 29–40%、TTFT p50 低 26–32%R2。外置阵列还能让多个推理实例共享同一份缓存R3。

对照是怎么设的

本地方案是一块 NVMe 盘(PCIe Gen4,2 TB)。外置方案是 FX100 全闪 NVMe-oF 阵列:4 盘 RAID0(14 TB,XFS),通过 RoCEv2 走单口 100 GbER2。

需要说明的是,这不是同等盘数的对比,对照组是单盘。如果你的服务器本地已经配了多盘阵列,差距会和这里不同,需要用自己的配置实测。

三档并发的逐档读数

模型是 Qwen3-Coder-480B-FP8,部署在 8 × AMD MI308X 上,负载为长上下文冷恢复。箭头左边是本地 NVMe 单盘,右边是 FX100。

  • 并发 8:TTFT p50 10.17 s → 7.53 s,吞吐 43.9 → 56.6 tok/s(+29%)R2。
  • 并发 16:TTFT p50 17.31 s → 11.85 s,吞吐 53.6 → 74.9 tok/s(+40%)R2。
  • 并发 32:TTFT p50 35.73 s → 26.35 s,吞吐 53.9 → 71.6 tok/s(+33%)R2。

为什么走网络反而更快

直觉上本地盘离 GPU 更近。但决定首 token 延迟的不是协议多出来的那一点时延,而是并发回读时能不能把数据足够快地送回显存。多盘全闪池加上 RDMA 网络,能提供的并发读带宽高于单块本地盘。

软件也有份:LMCache 并行读补丁把单卡冷读带宽从 0.98 GB/s 提高到 5.23 GB/sR1。没有这个补丁,再快的盘也会被串行读路径卡住。

外置阵列多出来的两件事

一是共享。本地盘上的缓存只有这台服务器能用;外置池里的缓存,被调度到任何一个实例的会话都能读到。fs:// 共享池的跨实例热共享已经验证通过R3。

二是配比。生产口径是每台 FX100 服务 8 个推理节点,依据是 100 GbE 支撑 8 节点 KV 回读的实测锚点R1R2R3。

什么时候本地盘就够了

单台服务器、并发不高、会话不需要跨实例迁移的场景,本地 NVMe 盘已经能拿到「不重算」这个最大的收益。外置阵列的优势出现在并发回读压力大、或者多个实例需要共享缓存的时候。

相关实测报告

外部参考资料

  1. 01
    NVM Express Specifications · NVM Express, Inc.

    NVMe 与 NVMe over Fabrics 的官方规范

  2. 02
  3. 03
    LMCache (GitHub repository) · LMCache Project

    LMCache 的源码、架构与存储后端说明

延伸阅读

全部文章

先联测,后决策

先联测,后决策

合作从一次约 10 周的门禁化联测开始。四道门禁逐级放行,任何一道不达标就在那里停下,不必为没有被证实的收益买单。

联系人
王利民
电话
13161818898
邮箱
mingxin@agentmail.to

邮箱由 AI 自动接收与分拣,7×24 小时在线