Mooncake:Kimi 背后那套「以 KVCache 为中心」的推理基建

AI
开源
Mooncake
Moonshot
KVCache
LLM 推理
vLLM
SGLang
2026/9/30
·

阅读时间: 大约 11 分钟

Mooncake:Kimi 背后那套「以 KVCache 为中心」的推理基建

Mooncake 的全栈架构:上层是 SGLang/vLLM/RTP-LLM 等推理与 RL 引擎,中间是 Mooncake P2P / EP-PG / Store,底层 Transfer Engine 统一 RDMA/TCP/CXL/NVLink 等多种传输

当一个国产大模型聊天服务要扛住成百上千路并发对话时,瓶颈往往不在「单次推理算得多快」,而在「上下文重复计算太多、KV Cache 跨机器搬不动」。Mooncake 就是月之暗面(Moonshot AI)为 Kimi 自研、后于 GitHub 开源(kvcache-ai/Mooncake,Apache-2.0)的那套基础设施。它的论文《Mooncake: Trading More Storage for Less Computation — A KVCache-centric Architecture for Serving LLM Chatbot》发表于 USENIX FAST 2025(pp. 155–170)。本文基于其官方仓库与文档,梳理它到底解决了什么问题、由哪几块组成,以及哪些数字是 Kimi 自家生产口径。

一、背景:LLM 推理的两个老问题

LLM 服务在真实负载下有两个结构性痛点。其一,prefill(处理提示词)与 decode(逐词生成)对资源的需求不同:prefill 是计算密集、吃算力,decode 是内存带宽密集、吃显存带宽——把两者混在同一批 GPU 上调度,会互相拖累。其二,多轮对话与长提示词里存在大量重复前缀(系统提示、历史对话、RAG 文档),如果每个请求都重新 prefill,等于把 GPU 算力反复花在早已算过的 token 上。

Mooncake 的思路一句话概括:用更多存储换更少计算——把 GPU 集群里平时闲置的 CPU、DRAM、甚至 SSD 利用起来,搭一个分布式的 KVCache 池,让 prefill 结果可以跨实例复用;同时把 prefill 集群和 decode 集群拆解开(PD 分离)。官方称,在 Kimi 的真实工作负载下,这套架构让 Kimi 在满足 SLO 的前提下多处理了 75% 的请求——注意这是 Moonshot 自己生产环境的口径,没有第三方审计。

二、三大组件:Transfer Engine、Store、EP/PG

根据仓库 README,Mooncake 由三块组成,自下而上:

  1. Transfer Engine(TE,传输引擎):核心。一个高性能数据传输框架,对上提供统一的批量传输接口(zero-copy、感知 tensor/KVCache),对下屏蔽多种网络与加速器——RDMA(RoCE、InfiniBand、eRDMA、AWS EFA)、TCP、CXL/SHM/NVMe-oF、多机 NVLink、昇腾 HIXL。特性包括拓扑感知路由、多网卡带宽聚合、自动故障切换。
  2. Mooncake Store:建在 TE 之上的分布式 KVCache 与模型权重存储引擎,负责对象存储、副本、淘汰(eviction)与高带宽搬运。
  3. Mooncake EP 与 PG:把能力从「数据搬运」延伸到「容错的分布式执行」,面向大规模 MoE 推理。EP 做专家并行的 dispatch/combine,PG 是一个 PyTorch 分布式 process-group 后端,能探测失败 rank、上报并在不重启整个服务的前提下恢复 rank。

它已经和 SGLang、vLLM 深度集成:vLLM 官方在 2026 年 5 月专门介绍了 Mooncake Store 作为跨实例 KV Cache 共享后端;SGLang 则用它做 PD 分离下的 KV 传输、多级缓存 HiCache、容错专家并行,以及 RL 训练里的权重同步。

三、关键数据:官方性能图与生产数字

最值得看的官方图是 Transfer Engine 的传输时延对比(下图):在固定缓存规模下,TE 相对 TCP、Gloo 的时延优势随网卡带宽放大而急剧拉大。

Transfer Engine 传输时延对比:左 4×200Gbps、右 8×400Gbps 网卡,横轴缓存规模、纵轴时延;在约 40GB 处,TE 分别比 TCP 快 2.4×/4.6×、比 Gloo 快 7.5×/16.2×

把仓库里可核对的数字汇总如下:

指标官方数字口径
Kimi 生产吞吐提升满足 SLO 下多处理 75% 请求Moonshot 真实工作负载自述,非第三方
TE vs TCP(4×200Gbps,~40GB)时延低约 2.4×仓库官方 benchmark 图
TE vs Gloo(4×200Gbps,~40GB)时延低约 7.5×同上
TE vs TCP(8×400Gbps,~40GB)时延低约 4.6×同上
TE vs Gloo(8×400Gbps,~40GB)时延低约 16.2×同上
Kimi-K2(1T)权重更新53s → 7.2s(约 7×)SGLang + Mooncake TE 跨数千 GPU 零拷贝 RDMA

工程交付物方面:pip install mooncake-transfer-engine(区分 CUDA 12 / 13 / NPU / ROCm / MUSA / EFA 等多个 wheel),Docker 镜像 kvcacheai/mooncake:0.3.14;仓库共 32 个 release、约 370 位贡献者,C++ 占 79.3%。官方还开源了脱敏后的真实请求 trace(请求到达时间、输入/输出 token 数、重映射后的 block 哈希),以及两个工具:KV Cache Size Calculator(估算各模型族的缓存容量)和 KV Cache Hit Rate Simulator(规划缓存容量)。

四、评测口径与需要警惕的地方

  • 「75% 更多请求」:写在 README 首页,属于 Kimi 自家生产负载下的结论,SLO 阈值、负载构成、对比基线都未公开,适合作为「量级参考」而非可复现结论。
  • TE 性能图的偏向:对比对象是 TCP 与 Gloo。Gloo 是 PyTorch 生态里的 CPU collective 通信库,并非为跨机大缓存搬运设计,在大缓存规模下时延近乎线性爆炸——选它做对照天然放大了 TE 的优势;真正生产里的对手是 NCCL、自研 RDMA 栈,那张图里并未出现。
  • 硬件门槛高:TE 的 2.4×~16× 优势建立在多张 200/400Gbps RDMA 网卡、NVLink、NVMe-oF 之上;在普通 TCP 局域网、单台机器上,这些数字基本不成立。
  • 迭代极快、版本尚未稳定:README 的 updates 列表排到 2026 年 8 月,仍在频繁接入新场景(AgentX/InferenceX v3、Miles、Speculators、TorchSpec),API 与部署形态可能快速变动。

五、适用与不适用

适合:

  • 已经有多机 GPU 集群、跑 SGLang/vLLM、做 PD 分离或跨实例 KV 复用的中大型推理团队;
  • 做大规模 RL 训练/rollout,需要在推理 worker 与 trainer 之间高速搬 hidden-state、同步权重;
  • 需要 MoE 大模型的容错专家并行(单点 rank 挂掉不重启整个服务)。

不适用:

  • 个人开发者、单卡或小机器跑模型——这是数据中心级基建,不是 Ollama 式本地工具;
  • 没有 RDMA/高速网络、又想白嫖那十几倍传输提升的团队——网络不达标时收益大打折扣;
  • 追求开箱即用、不愿读部署文档的小团队——它需要 master/store/worker 一整套组件。

六、客观分析:优势与局限

优势:它把 LLM 推理里「被浪费的存储」和「被闲置的 CPU/DRAM/SSD」变成了可复用的 KVCache 资产,并用一个统一的传输引擎把 GPU、CPU、NVM、RDMA 网卡拧成一张网;背靠 Kimi 日活级真实流量打磨,又被 vLLM/SGLang 收编为主流后端之一,生态位很扎实。对国产算力(昇腾、寒武纪、摩尔线程、平头哥、沐曦)的适配广度,在同类项目里少见。

局限:复杂度与门槛高,是「基建队」的工具而非「应用开发者」的工具;核心亮眼数字多为厂商自测或自家生产口径;且项目仍在高速演化,API 稳定性与文档成熟度需要持续跟进。

七、它意味着什么

Mooncake 代表了超大规模 LLM 服务的一个共识方向:推理优化的重心正从「把单张 GPU 算得更快」转向「把 KV Cache 与跨节点数据流动管好」。它把月之暗面在 Kimi 上踩出来的工程经验开源出来,客观上也成了国产大模型 infra 对外输出的一张名片。对做推理系统、尤其要做多机 PD 分离或 RL 的团队,Mooncake 已经是绕不开的参照实现。

参考来源