Mooncake 专项:28 天计划
白话导读:Mooncake 单项目的 28 天计划:从 Attention 到 Store/TE 源码,再到集成与故障设计。
- 优先执行全库统一计划。
- 时间不够时按文中建议裁剪:保留核心公式、Store/TE 主路径、一条集成路线和一份设计报告;不要舍弃正确性、性能基线和失败分析。
文末有最终能力评分表,可用于自评。
这是 Mooncake 单项目深读计划。跨 vLLM、SGLang、LMCache、Mooncake 学习时,优先执行全库统一计划,用本表补充专项任务,避免重复安排公共基础。
学习前提与时间
默认已有 Python、基本 C++、Linux 进程/线程和网络基础,知道 Transformer 的基本结构。工作日每天 2 小时,周末每天 4 小时,四周共 4 × (5 × 2 + 2 × 4) = 72 小时。
每天按“概念 30 分钟、源码/实验 60 分钟、闭卷输出 30 分钟”组织。周末增加实验、复盘和面试演练。若某项基础薄弱,把当天进阶部分换成补课,不延长到一个月之外。
优先级:
- P0:必须熟练,能推导、画图、查源码、解释失败路径。KV 语义、容量、前缀缓存、Store 读写、租约、异步生命周期、TE 基础、LMCache 集成、性能评估。
- P1:能完成合理设计并分析代价。副本与放置、SSD 分层、HA、热点、TP 布局、路由、配额、RDMA 调优。
- P2:知道解决什么问题及阅读入口。TENT、Store-RS、P2P Store、EP/PG、权重重分片、RL 数据流、其他加速器后端。
第一周:从 Attention 到可计算的缓存模型
| 天 | 时间 | 学习任务 | 必须交付 |
|---|---|---|---|
| D1 | 2h | 阅读总览和知识地图;区分论文系统与开源组件;了解 TTFT、ITL、goodput | 一张包含 vLLM/SGLang、LMCache、Store、TE 的职责图 |
| D2 | 2h | 推导 Q/K/V、causal attention;理解 Prefill/Decode、MHA/GQA/MQA/MLA | 解释为什么缓存 K/V,为什么深层 KV 依赖整个前缀 |
| D3 | 2h | 计算 KV 容量、分页浪费和 TP 分片;完成实验 A | 一个容量表,明确 GiB/GB、head 数、dtype 和 rank 假设 |
| D4 | 2h | 学习 PagedAttention、block table、引用计数、copy-on-write、前缀哈希 | 画出两个请求共享前缀、尾部独立写入的物理块图 |
| D5 | 2h | 学习 HBM/DRAM/SSD 层级与 break-even;分析命中率指标 | 三个“远端命中却不值得拉取”的场景 |
| D6 | 4h | 阅读 FAST '25 论文的问题、架构、调度与评估;阅读当前架构文档 | 两页笔记:瓶颈、设计、证据、适用条件;不混用论文版本数字 |
| D7 | 4h | 做面试 Q1–Q12;完成周验收;有 Linux 时准备 TCP 环境 | 10 分钟闭卷讲解和错题表 |
第一周验收:
- 对
L=32, Hkv=8, d=128, BF16, S=8192算出每 token 128 KiB、每请求 1 GiB KV。 - 说明 TP=8 时每 rank 128 MiB 的前提,并指出
Hkv < TP时可能复制。 - 给出前缀缓存键的必要语义字段,而非仅对当前 chunk 文本求哈希。
- 区分 token 命中率、请求命中率和真正减少的计算时间。
若答不出,优先补 KV 基础,暂缓 RDMA 细节。
第二周:沿 Mooncake 数据路径读源码
| 天 | 时间 | 学习任务 | 必须交付 |
|---|---|---|---|
| D8 | 2h | 阅读 Store API 和元数据设计;理解 Master、Client、segment、replica | 标清控制面与数据面的部署图 |
| D9 | 2h | 追踪 Client::Put → PutStart → TransferWrite → PutEnd/PutRevoke |
带源文件和关键函数的写时序图 |
| D10 | 2h | 追踪 Client::Get、副本查询、租约与校验;阅读相关测试 |
解释“网络读成功但 Get 仍失败”的两个原因 |
| D11 | 2h | 阅读放置策略、回收、soft/hard pin、客户端资源贡献 | 内存满时的决策表;识别 segment 与故障域的区别 |
| D12 | 2h | 阅读 TE API、memory registration、batch、slice、完成语义 | 画出缓冲区从分配到安全释放的生命周期 |
| D13 | 4h | 完成 Linux TCP 实验 B;读批操作与内存注册;有 RDMA 则做双节点基线 | 可复现命令、配置、校验结果及时间统计 |
| D14 | 4h | 故障与租约实验;复习 Q13–Q27;讲解源码 | 一次失败路径报告和 15 分钟讲解 |
第二周验收:
- 能指出数据为什么不经过 Master,Master 又为什么仍然可能成为瓶颈。
- 能解释元数据服务与 Store Master 各维护什么状态。
- 说明
put同键行为、upsert边界、批处理部分失败,不假设批操作事务性。 - 能解释读租约与 TTL、pin 与持久性的差别。
- TCP 实验必须校验字节相等;无 Linux 时完成对应源码路径和预期结果表,并明确实验未运行。
第三周:LMCache、HiCache 与真实推理
| 天 | 时间 | 学习任务 | 必须交付 |
|---|---|---|---|
| D15 | 2h | 阅读 LMCache 架构、MP L1/L2 与旧模式;画数据所有权 | 两张架构图和版本矩阵 |
| D16 | 2h | 比较 vLLM 原生 Store Connector、TE Connector、LMCache Connector | 按需求选型的决策表 |
| D17 | 2h | 阅读 SGLang HiCache 预取、写回、TP 同步与 page-first 布局 | 解释最短可用前缀如何在多 rank 间达成一致 |
| D18 | 2h | 学习 hash namespace、LoRA、多模态、KV dtype、TP 变化、租户隔离 | 一组共享/不共享兼容性用例 |
| D19 | 2h | 设计冷/热、local-only/remote-only/combined 的消融实验 | 固定变量与指标采样表 |
| D20 | 4h | 选择一条官方集成路径完成实验 D;做冷/热请求 | 配置、原始结果、正确性检查;无 GPU 时做策略模拟 |
| D21 | 4h | 诊断 TTFT 与 ITL;复习 Q28–Q39;梳理 CacheBlend 边界 | 一页“何时关闭远程缓存”的分析 |
第三周验收:
- 能解释为什么 LMCache MP 的 L1 是主机内存时,HiCache 的 L1 却是 GPU。
- 能区分“prefix hash 查到”“Store 可读”“GPU KV 就绪”三个时刻。
- 用数据说明收益来自减少 prefill,而非误把本地前缀命中算作远程命中。
- 能解释 CacheBlend 为什么需要选择性重算,不能把它当任意 KV 无损拼接。
第四周:性能、容错与面试系统设计
| 天 | 时间 | 学习任务 | 必须交付 |
|---|---|---|---|
| D22 | 2h | 计算容量、带宽、元数据规模、复制写放大;看 Little 定律 | 一个完整容量规划表 |
| D23 | 2h | 分析热点、缓存击穿、准入、淘汰、cache-aware routing | 有代价模型的策略草案 |
| D24 | 2h | 阅读 HA、快照/OpLog、client liveness;设计丢节点恢复与降级 | 故障矩阵:发现、隔离、重试、重算、恢复 |
| D25 | 2h | 复习分位延迟、到达模型、过载与 goodput;完成 Q40–Q50 | 30 分钟模拟面试录音 |
| D26 | 2h | 浏览 TENT、Store-RS、Conductor、EP/PG;梳理未来学习路径 | 能说清每个组件的职责与主线边界 |
| D27 | 4h | 整理毕业项目:设计图、配置、实验、失败案例与结论 | 一份 6–10 页可复现报告 |
| D28 | 4h | 两轮模拟面试;闭卷画架构/读写/PD 图;按评分表查漏补缺 | 最终报告、错题清零清单、后续改进优先级 |
预算不足时如何裁剪
每天只有 1 小时、周末每天 2 小时时,总共 36 小时。保留第一周核心公式、第二周 Store/TE 主路径、第三周一条集成路线、第四周一份设计报告;舍弃多种硬件、多个推理引擎和 P2P/EP 实操。
不要舍弃正确性、性能基线、一次失败分析和面试表达。只运行一个“hello world”不足以支持“熟悉分布式 KV Cache”的面试表述。
最终能力评分
每项按 0/1/2 分:0=只能复述名词,1=能解释正常流程,2=能推导并处理异常。
| 项目 | 2 分标准 |
|---|---|
| KV 语义 | 解释前缀依赖、兼容性边界、非前缀复用代价 |
| 数量级 | 独立计算容量、网络、复制和元数据预算 |
| Store | 沿源码解释写提交、读租约、失败与回收 |
| TE | 解释注册、拓扑、异步完成、RDMA 与 GPU 同步 |
| 集成 | 画清 LMCache/HiCache/Store/推理引擎职责 |
| 评估 | 有消融、SLO、冷/热状态和尾延迟证据 |
| 容错 | 能设计失联、元数据过期、对象丢失的安全回退 |
| 表达 | 5 分钟说清一个方案和三个关键取舍 |
建议 13/16 分以上进入针对岗位的强化面试;正确性项不能为 0。没有真实 GPU/RDMA 实验时,项目经历明确写“设计/源码分析/TCP 验证”,不要描述成生产验证。