vLLM 专项:28 天计划
这是 vLLM 单项目深读计划。跨项目学习优先执行全库统一计划,本表用于补充引擎方向的专项任务。
1. 时间、目标与取舍
总周期 28 天,建议每天 3 小时,共约 84 小时。 每天按“正文学习 60 分钟、源码或实践 75 分钟、复述与习题 45 分钟”推进。所有必修内容在一个月内完成,不再附加前置学习周。
本月完成四个目标:
- 理解模型生成、GPU 成本和 vLLM V1 的完整主链路。
- 能从真实类与函数追踪请求、调度、KV、执行和输出。
- 能解释 vLLM、LMCache、Mooncake 的分工与缓存正确性。
- 形成一份有依据的分析报告,完成推理 Infra 核心面试题。
“完整资料”指覆盖核心知识和可学习正文,不代表一个月内精通每个后端与高级特性。复杂 CUDA kernel、跨节点 RDMA、非对称 TP 的 PD、CacheBlend 深度调优属于月内选修,按岗位替换相应练习,不延长主计划。
如果每天只有 1~2 小时,保留 28 天安排:完成正文、CPU 实验和核心面试题,将 GPU 参数扫描减到一组对照。报告要明确哪些是实测、哪些是手算。
2. 学习资料如何配合
| 资料 | 承担的作用 | 本月要求 |
|---|---|---|
| 07 推理基础教材 | 从张量、生成与 KV 到显存、带宽、指标 | F1~F8 全部必修 |
| 08 vLLM 源码教材 | 当前源码的入口、函数、状态和执行链路 | R1~R10 全部必修,进阶分支选读 |
| 09 性能与分布式教材 | Profiling、GPU 优化、并行、服务与扩展 | P1~P10,选一个方向动手 |
| 10 实践、推演与参考答案 | CPU 可运行实验、GPU 使用步骤、源码作业及答案 | L1~L3 无 GPU 也能完成 |
| 02 知识地图与设计图 | 架构总览和图形索引 | 阅读对应章节时对照 |
| 04 KV Cache 专题 | LMCache、Mooncake、多级复用、PD 和失败处理 | 基础与生命周期必修,高级优化选读 |
| 03 面试问答 | 60 题复述与查漏 | 每日按主题选题,最后集中模拟 |
| 05 实验设计 | E1~E9 的变量、指标和结果模板 | 做一份完整对照,不要求全部运行 |
| 06 本地官方资料与论文 | 与源码同版本的官方文档、外部资料 | 用于查证,不要求全部通读 |
F/R/P/L 编号分别对应四本新增教材中的章节标题。先学正文、做题,再沿链接查源码,不能把“打开过所有链接”作为完成标准。
3. 28 天逐日安排
第一周:推理基础、环境与架构
| 天 | 具体阅读 | 当日任务 | 验收产出 |
|---|---|---|---|
| D01 | 07:F1~F2;10:L1 | 画 Transformer 张量形状,完成环境与知识自测 | 区分 batch、序列、head、hidden 维度 |
| D02 | 07:F3~F4;10:L2 | 运行 CPU Attention/KV 教学实验 | 解释有 KV 与全量重算为何结果一致 |
| D03 | 07:F5~F6;10:L3 | 手算 GQA KV、权重与 block 取整 | 完成容量表,不混用 GB/GiB |
| D04 | 07:F7~F8;03:Q07~Q08、Q19 | 计算 TTFT/TPOT、带宽下界和 Goodput | 给出假设明确的瓶颈判断 |
| D05 | 08:R1~R2;10:L4 | 固定源码版本;有 GPU 则完成离线生成 | 标出 LLM.generate 的下一层调用 |
| D06 | 08:R3~R4;02:D02~D05 | 追踪 input、EngineCore、output | 画请求时序并区分进程边界 |
| D07 | 第一周复习;03:Q01~Q10 | 闭卷讲解 Prefill、Decode、KV、进程分工 | 10 分钟讲解与错误清单 |
第二周:读通引擎、调度、KV 和执行
| 天 | 具体阅读 | 当日任务 | 验收产出 |
|---|---|---|---|
| D08 | 08:R5;10:L2 的调度实验 | 手推三请求的 token budget 与进度 | 调度表和一个公平性问题 |
| D09 | 08:R6;04:第 3~5 节 | 跟踪查前缀、分配、引用和释放 | 一张 block 生命周期表 |
| D10 | 08:R7~R8 | 将调度 token 转成 packed inputs 和位置 | 推导 query_start_loc 与 slot_mapping |
| D11 | 08:R9;03:Q18、Q21~Q22 | 追踪采样、输出、停止与异步状态 | 解释“已生成”与“已算 KV”的区别 |
| D12 | 08:R10;04:第 6~8 节 | 对照 connector 调度侧与执行侧接口 | 解释 hit、allocated、loaded、usable |
| D13 | 09:P1~P2;10:L5 | 有 GPU 做 E1;无 GPU 完成指标案例 | 基线配置或可复核的计算报告 |
| D14 | 第二周复习;03:Q11~Q18、Q35~Q37 | 从入口追到 GPU,再回到输出 | 架构图 + 5 个真实符号的职责 |
第三周:性能、并行与 KV 系统
| 天 | 具体阅读 | 当日任务 | 验收产出 |
|---|---|---|---|
| D15 | 09:P3~P4 | 区分 FlashAttention、融合、launch 和带宽瓶颈 | 说明每种优化减少的实际成本 |
| D16 | 09:P5;本地 CUDA Graph/MRV2 文档 | 对比 eager、compile、graph 和 CPU/GPU overlap | 一个 buffer 生命周期风险案例 |
| D17 | 09:P6;03:Q27~Q32 | 比较 TP/PP/DP/EP 与 context parallel | 固定总 GPU 数的方案对照 |
| D18 | 09:P7;04:第 12~13 节 | 手算 PD 的 KV 传输与重算成本 | 正确的完成通知与回收时序 |
| D19 | 04:第 5~8、16 节;10:L6 | 设计本地/APC/CPU/L2 四组缓存对照 | 明确各命中分母和质量条件 |
| D20 | 04:第 9~15 节;03:Q38~Q50 | 比较 Mooncake P2P、Store 与 LMCache 后端 | 三框架职责图与失败回退步骤 |
| D21 | 第三周复习 | 讲解“命中率高却更慢”“PD 不一定更快” | 两份带定量依据的解释 |
第四周:工程实践、项目与面试
| 天 | 具体阅读 | 当日任务 | 验收产出 |
|---|---|---|---|
| D22 | 09:P8 | 学量化、投机解码,选择一个收益条件推演 | 区分精确性、质量和性能 |
| D23 | 09:P9 | 看模型实现、LoRA、多模态、结构化生成接入点 | 模型接入检查表和 forward 路径 |
| D24 | 09:P10;10:L7 | 设计取消、过载、路由和缓存故障处理 | 一份 SLO 与容量约束明确的设计 |
| D25 | 05:E3 或 E4;10:L5 | 选择调度或本地缓存做一次对照 | 原始结果、解释、无收益情况 |
| D26 | 05:E5 或源码/CPU替代任务;10:L6 | KV 方向做分层复用,其他方向深入一个瓶颈 | 完整分析报告初稿 |
| D27 | 03:Q43~Q60;10:L8 | 30 分钟系统设计 + 15 分钟项目讲解 | 修正未经证据支持的说法 |
| D28 | 按错误清单复习 | 完成最终报告和闭卷自测 | 达到下述毕业标准 |
4. 本月必须掌握与可以暂缓的内容
| 级别 | 内容 |
|---|---|
| P0 必须能计算/推演 | Prefill/Decode、KV shape/容量、连续批处理、分页、前缀身份、核心执行链路、指标与基线 |
| P1 必须能解释取舍 | Chunked Prefill、Graph/compile、并行、LMCache/Mooncake、PD、取消与回退 |
| P2 按岗位选做 | kernel 手写调优、多节点 RDMA、非对称 PD、复杂 MoE、CacheBlend 质量扫描、全部后端兼容 |
基础薄弱时,在 D01~D04 多投入正文和 CPU 实验,减少 D22~D26 的选修实验规模。不要跳过张量与状态语义去背配置参数。
5. 岗位分支:只替换 D25~D26 的实践
| 方向 | 两天重点任务 | 最终作品 |
|---|---|---|
| 引擎 | 调度或 block 生命周期对照 | 源码追踪 + 可验证行为解释 |
| GPU 性能 | 已有算子的 trace 与瓶颈分析 | 正确性、实际耗时和端到端影响 |
| 分布式 | TP/副本对照;无硬件则做通信与容量估算 | 假设和瓶颈明确的部署方案 |
| KV/存储 | LMCache 或 Mooncake 一条路径 | 命中、取回、完成和回退的分析 |
| 平台 | 混合负载、限流与路由 | SLO 下的容量与过载策略 |
6. 28 天毕业标准
- [ ] 能闭卷画出请求从输入到执行、输出、释放的全过程。
- [ ] 能解释当前代码中的
Request、SchedulerOutput、KV manager 和 runner。 - [ ] 能手算每 token KV、block 取整、传输下界和 TP 假设。
- [ ] 能区分模型已输出的 token 与已完成 forward 的 token。
- [ ] 能区分缓存命中、内存分配、加载完成和计算可用。
- [ ] 能说明 vLLM、LMCache、Mooncake 的不同集成路线。
- [ ] 能解释一次性能优化的收益条件与退化情况。
- [ ] 能用数据或明确标注的手算完成一份报告。
- [ ] 面试题中 P0 主题能独立回答,其他问题能给出分析方法。