原力注入

Mooncake 架构概览:以 KVCache 为中心的高效 LLM 推理系统设计

0. 资源

  1. 1. 论文介绍(视频 + ppt):https://www.usenix.org/conference/fast25/presentation/qin
  2. 2. 论文翻译:https://zhuanlan.zhihu.com/p/706109023
Image

1. 摘要

论文题目:Mooncake: Trading More Storage for Less Computation — A KVCache-centric Architecture for Serving LLM Chatbot

Mooncake 是由 Moonshot AI 为智能助手 Kimi 提供的一种分离式 LLM 推理架构。其核心在于以 KVCache 为中心的全局调度器(Conductor),并通过预填充—解码阶段解耦与分块管道并行(CPP),实现了在极长上下文场景下的高效推理服务。主要指标如下:

  • • 单会话支持高达百万级 Token 上下文,具备大规模推理能力;
  • • 显著降低 GPU 计算资源消耗;
  • • 与 vLLM 对比:吞吐量提升可达 525%,符合 SLO 的请求数提升 75%。

核心创新点:

  1. 1. 分块管道并行(CPP):将预填充阶段按层/块并行,TTFT 相较传统序列并行减少约 40%;
  2. 2. KVCache 感知全局调度:Conductor 综合缓存命中、本地队列和负载,实现在预填充阶段对 KVCache 的复用率超过 50%;
  3. 3. 预测性早期拒绝:基于系统级负载与请求输出长度预测,减少冗余计算,实现过载场景下稳定高吞吐。

2. 研究背景

LLM 推理服务面临三大挑战:

  1. 1. 长上下文处理:输入长度增十倍时,注意力计算呈二次增长,TTFT 超过秒级;
  2. 2. 资源利用矛盾:预填充阶段计算密集(MFU>90%),解码阶段内存敏感(百万 Token KVCache 占用显存逾 320 GB);
  3. 3. 过载常态:高峰请求可达平均负载 20×,集群扩容弹性受限分钟级。

现有方案通常将预填充与解码耦合,导致 TBT 延迟过高,KVCache 复用率低于 30%,且过载时被动拒绝浪费资源。Mooncake 提出分离架构,以 KVCache 为调度核心,分别优化两阶段性能和过载策略。

Image

3. 核心架构设计

Image

3.1 分布式 KVCache 池构建

  • • 多层存储:
    • • L1:GPU 显存,冷启动命中率约 42%;
    • • L2:节点 SSD,热数据命中率提升 3 倍;
    • • L3:跨节点 DRAM 池,RDMA 延迟 < 50 μs。
  • • Messenger 传输组件:基于 RDMA 的异步流水线,将 KVCache 分为 15–512 Token 块,跨节点批量拉取和推送,显著降低同步带宽压力。

3.2 双阶段分离调度

维度
预填充集群(P)
解码集群(D)
资源配置
8×A800 + 96 GB DRAM
16×A800 + 32 GB DRAM
并行策略
分块管道并行(CPP)
连续批处理(CBP)
指标目标
TTFT ≤ 10×RT
TBT ≤ 0.1 s
缓存策略
全局热点迁移(LRFU)
局部批处理优化

CPP 机制:将长上下文动态划分为默认 1 024 Token/块,预填充计算与 KVCache 传输异步重叠,显著提高 MFU 并降低网络资源争用。


4. 关键优化技术

4.1 KVCache 感知调度算法

调度评分公式:

其中  为缓存命中率, 为预估预填延迟, 为实例队列等待时间, 为负载系数。

  • • 索引结构:哈希表(精确)、前缀树(最长匹配)、语义指纹(模糊匹配)。
  • • 动态权重:高峰期优先吞吐,低负载倾向低延迟。

4.2 预测性早期拒绝

  • • 双阶段负载评估:在预填充阶段预测解码池负载,避免无效计算。
  • • 系统级预测:假设统一解码时长 ,结合当前队列与即将完成请求,计算未来 TBT 负载,并据此调整 AcceptWindow。
  • • 效果:过载场景中,与基准策略相比,拒绝请求数减少约 14%,集群 goodput 明显提升。

5. 实验验证

5.1 数据集与评估指标

数据集
类型
平均长度
热点覆盖率
ArXiv 摘要
公共论文
312 Token
67%
L-Eval
代码生成
189 Token
52%
真实日志
用户查询
478 Token
41%
  • • Effective Throughput:满足 SLO 的请求总量;
  • • Resource Utilization:实际计算量/理论峰值。

5.2 对比结果

系统
架构
吞吐量提升
SLO 达标率
存储利用率
vLLM
耦合
0%
89%
43%
FlexGen
分布式
152%
92%
58%
Mooncake
分离
498%100%显著高于 43%
  • • 公共数据集:Mooncake-[3P+1D] 在 ArXiv/L-Eval 上分别超越 vLLM 20%/40%。
  • • 模拟场景:长上下文推理增幅 50%–525%。
  • • 真实负载:Mooncake-[10P+10D] 在相同 SLO 下,比 vLLM-[20M] 多处理 75% 请求。

6. 工程实践启示

Mooncake 架构的成功落地,提供了多个值得泛化的工程经验:

  1. 1. 存储优先原则:重构推理资源配置逻辑
    传统 LLM 推理系统通常围绕计算资源(如 GPU 核心数、FLOPs)进行扩展,但在长上下文场景下,KVCache 占据了显存与网络的主要带宽瓶颈。Mooncake 以 KVCache 为中心,强调容量优先、热度感知、层级分布的缓存体系建设策略,为服务稳定性和可扩展性提供了更坚实的基础。
  2. 2. 解耦调度机制:独立缓存调度器带来的系统灵活性
    将 KVCache 管理权从解码服务中剥离出来,使得系统能按阶段、按数据局部性进行最优决策。例如,Conductor 在预填充阶段可以基于缓存命中率、跨节点开销等维度调度至最优节点,而无需依赖单一计算流程。此设计理念可推广至所有“状态重用”场景,如上下文学习、图数据库缓存等。
  3. 3. 预测性运维体系:让 LLM 服务从“响应式”转向“前馈式”
    Mooncake 构建了包括请求 Token 长度、热点查询模式、解码资源消耗在内的多维特征库,结合 LSTM 等轻量预测模型,在 200ms 级别内完成是否接受请求、是否迁移缓存的决策。这种预测驱动的策略不仅提升了吞吐,还显著降低了错误调度与资源浪费,是构建高可用 LLM 服务的新范式。

7. 未来方向

Mooncake 当前的技术实现虽已成熟,但在更广泛的部署场景和系统异构化趋势下,仍有诸多潜在优化路径:

  1. 1. 异构加速器融合:打破 GPU 单一计算瓶颈
    当前解码主要依赖 GPU 并行执行,但在 KV 访问、前向计算、KVCache 维护等子任务中,可探索引入 CPU 处理批量序列调度逻辑、FPGA 加速 KV 编码与压缩、TPU 参与矩阵运算 等多种硬件协同方式,构建真正异构的多阶段流水线系统。
  2. 2. 内存内计算(In-Memory Compute)与 CXL 架构融合
    KVCache 容量与访问延迟的矛盾限制了进一步的上下文增长。未来可借助 CXL(Compute Express Link)标准下的共享内存模型,实现 DRAM 和持久化内存(如 PMem)之间的统一编址与调度,缓解数据迁移成本,并在必要时引入 Processing-in-Memory(PIM)方案提升算存带宽匹配度。
  3. 3. 联邦化 KVCache:向跨地域部署和多租隔离演进
    面向企业客户和多边数据协作场景,支持 区域间共享 KVCache 且保护数据隐私 的机制将成为重要趋势。通过联邦学习技术、同态加密、数据驻留控制等手段,实现跨集群、跨数据中心的缓存共享而不泄露用户上下文,为全球化部署和行业定制大模型服务提供关键能力支撑。

8. 技术价值总结

Mooncake 的设计不仅是对现有推理架构的优化,更代表了一种新的服务范式,其系统性价值体现在:

  1. 1. 架构创新价值:
    首次将 KVCache 从模型推理流程中抽象为“一级公民”,形成了以缓存驱动计算的解耦模型,极大提升了对超长上下文的支撑能力与资源调度灵活性。
  2. 2. 系统优化价值:
    通过分块管道并行(CPP)机制,结合跨节点缓存感知调度,打通了算力瓶颈与带宽瓶颈间的转换通道,在现有硬件体系下实现性能成本的帕累托最优。
  3. 3. 工程复用价值:
    该架构具备良好的模块化与可移植性,Conductor 调度器、Messenger KV 传输组件、LRFU 热点管理策略等均可独立集成至其他 LLM 服务系统,具备高度实用价值。
  4. 4. 落地验证价值:
    Mooncake 已经支撑 Kimi 智能助手在真实生产环境中实现大规模 Token 推理任务,证明了其可扩展性、鲁棒性与经济性,为未来 LLM 服务基础设施演进提供了坚实的技术支点。