Mooncake

Mooncake 是 Moonshot AI 的分离式数据底座。它最初围绕 KV-Cache 设计,但 OSDI 2026 语料显示,第三方系统也会复用 Mooncake Store 和 Transfer Engine 搬运 KV、权重或其他大块 GPU/CPU 状态。

是什么

Mooncake 的核心抽象是:不让每个 prefill/decode worker 只看自己的本地显存,而是把已计算的 KV 作为可定位、可传输、可分层存储的数据对象。常见组件包括:

  • 按 cache residency、请求负载和 prefix 命中做决策的全局调度;
  • RDMA/P2P 在 GPU memory、host DRAM 和节点之间搬数据的 Transfer Engine;
  • 为更大容量、跨进程共享和持续化提供底座的 Mooncake Store。

这些机制可以支持 prefill/decode Disaggregation,也可以单独当作数据传输与容量层。因此“使用 Mooncake”不一定表示完整采用 Mooncake serving 调度器。

关键观察 / 隐含假设

  • 复用 KV 只在加载比重算更便宜时成立。 KVCacheInTheWild-ATC25 显示真实请求的复用率、大小和生命周期并不等同于合成 trace。短 prompt、低命中或慢网络上,一次 remote load 可能比重做 prefill 更慢。
  • 全局 KV pool 能把“请求迁移”和“从头 prefill”分开。 Seer-OSDI26 用 Mooncake 搭建跨 inference node 的 DRAM/SSD 层级 KV pool,经 RDMA 拉取 active request 的 cache。它在负载相近时优先最长 prefix hit,负载差距过大时改用 load-first;这说明 cache affinity 不能单独决定路由。
  • “已命中”不等于“已就绪”。 Strata-OSDI26 使用 Mooncake tool-agent trace,观察到 38% 请求与一秒内另一请求共享至少 6K token;但分页 KV 的碎片搬运仍可让 prefill 等待。所以调度器需要知道 ready time,不能只看命中长度。
  • 完全 P/D 分离依赖网络。 EcoServe-OSDI26 在 L20/A800 普通网络上报告,减少跨实例 KV 传输的时间分段方案相对 MoonCake 基线有明显收益;到 H100+NVLink/IB 时差距缩小,个别 CodeLlama2-34B 点上 MoonCake 还会超过 EcoServe。这是 workload 和 network 的 crossover,不是对 disaggregation 的总体否定。
  • Mooncake Store 的用途已超出 KV。 RollArt-OSDI26 在 H800 trainer 与 H20 inference 的慢 Ethernet 路径上,用 Mooncake CPU store 发布约 1 GB 的权重 bucket,inference worker 按需拉取并与 rollout 重叠。因此实体页不应把 Mooncake 等同于单一 KV cache policy。

设计空间与取舍

决策好处代价 / 失效场景
搬 KV,不重做 prefill长 prefix 可节省大量 GPU 计算低命中、短 context 或慢网络上不划算
全局 pool请求可跨 worker 迁移,cache 容量可扩到 DRAM/SSDownership、版本、驱逐、失败恢复变复杂
P/D 分离两个阶段可独立扩容KV 传输、跨 rack 拥塞和负载不均可主导尾延迟
通用 Store/Transfer substrate可复用于权重、checkpoint 或其他大对象上层必须自己定义一致性和重试语义

演进时间线

相关概念

相关论文

  • Seer-OSDI26 — 用 Mooncake 层级 KV pool 保留 rollout request 迁移时的 prefix 状态。
  • RollArt-OSDI26 — 把 Mooncake CPU store 用于异构集群之间的权重更新。
  • EcoServe-OSDI26 — 给出普通 Ethernet 上 full disaggregation 的 crossover 证据。
  • Strata-OSDI26 — 从碎片 KV 传输和 ready-time 调度方面补充 Mooncake trace。
  • LMetric-OSDI26 — 在 cluster router 中同时权衡 prefix locality 与实例负载。
  • fabric-lib-MLSys26 — 比较 Mooncake Transfer Engine 与其他 GPU 通信后端。
  • Bidaw-FAST26 — 从本地 SSD 成本角度对比高速远程 KV 容量层。