课程索引 · nano-vllm → vLLM → DeepInfer
32 节课,两条互相连接的线:手算 Transformer 的张量与公式,再沿 nano-vllm、vLLM V1、DeepInfer 追踪请求、缓存和执行。用图例、即时练习和真实源码把概念接起来。
原课提供全景;深入课核心阅读约12–18分钟,再做10–20分钟练习。先预测 → 看图推导 → 核对数值 → 跟源码。建议从15课补基础,隔1、3、7天闭卷复习;卡住直接在对话里追问。
完整下载、WSL实验、固定版本源码与课程说明
维度转换:看清每个元素去了哪里10张详细矩阵图 · 4组可点击实验 · reshape与transpose反例
4070 Ti 本地实验台WSL调度模拟报告 + CPU数值验证 + GPU实验脚本
先补 Transformer 底座15 → 23 · 形状、mask、RoPE、KV等价
直接进入源码细节24 → 32 · 三框架状态、缓存与执行
打开图解索引46张离线图,含10张逐格维度拆解
实验与复习路线CPU验证、WSL测量、自评与小作品
第一部分 · nano-vllm:把引擎拆开
01 90 行,一个推理引擎 45 min generate() 的三段循环、prefill/decode 的分工、num_tokens 的正负号。 02 显存里的那本「页表」 50 min 分页、引用计数、前缀哈希链——112 KiB/token 到底花在哪。 03 谁上 GPU,谁在等 50 min 双队列、三种 break、抢占的代价、那个 while...else。 04 KV 到底写到了哪一格 60 min slot_mapping 的构造与消费、FlashAttention 两种调用、指数竞赛采样。 05 两张卡,一次前向 55 min 列并行/行并行、all-reduce 的位置、共享内存指令通道。 06 把整个 decode 录成一张图 45 min kernel launch 开销、图池复用、为什么 prefill 不录图。 07 你自己的第一组数字 90 min WSL 实跑、三组对照实验、把吞吐曲线画出来。第二部分 · vLLM v1:工程化带来什么
08 从 1450 行到 20 万行 55 min 三层结构、EngineCore、异步调度、与 nano-vllm 的映射表。 09 预算、抢占、淘汰 60 min token 预算取代阶段、先 running 后 waiting、LRU 块池、KV group。 10 一张图的三种录法 55 min Executor / Worker / attention backend、CUDAGraphMode 的五种取值。 11 同一套调度,五种玩法 60 min 投机解码、PD 分离、结构化输出、异步调度、睡眠唤醒。第三部分 · DeepInfer:为单一模型做到极限
12 把调度器下沉到 C++ 50 min SM100/Ascend 950、C++ Scheduler、FlopsEstimator、内核三件套。 13 当 8 个专家里 3 个被挤爆 55 min EP 的 all-to-all、冗余副本、峰值最小化的贪心排布。 14 猜五个,验证几个? 55 min 置信度头、可变长验证、SWA 有界重放、batch invariance。深入篇 · Transformer 逐步拆解
15从一个 token 到一个词表:先把形状算对12–18 min + 练习独立画出 Qwen3 的 token → embedding → decoder → logits,并算出 Q/K/V 的真实宽度。16亲手算一次 Attention:分数、权重、加权和12–18 min + 练习从小矩阵算出 attention 输出,区分 QKᵀ 分数、softmax 权重和最终向量。17因果遮罩:训练能并行,生成为什么要等12–18 min + 练习为 prefill、单步 decode 和带缓存的 chunk 写出正确的可见区间。18MHA、MQA、GQA:头共享了什么12–18 min + 练习给 query head 找到它使用的 KV head,并算清 GQA 节省哪一部分显存。19RoPE:旋转的是向量,保留的是相对位置12–18 min + 练习手算一个二维旋转,并证明 Q/K 共同平移后点积为何不变。20一个 decoder block:残差、RMSNorm 与 SwiGLU12–18 min + 练习把简洁的数学残差公式还原到 nano-vllm 的双变量 hidden_states / residual 实现。21KV cache:用等价实验理解“只算新 token”12–18 min + 练习解释为什么存 K/V 不存历史 Q,并验证完整前向与增量前向在误差容限内一致。22FlashAttention:不存整张分数表,如何仍然精确12–18 min + 练习用在线 softmax 的三个累积量解释 tiling,区分省 IO 与减少数学运算。23从 logits 到 token:温度、过滤与随机性12–18 min + 练习区分 logits、概率、top-p 和随机采样,解释相同种子为什么还不足以保证批不变。深入篇 · nano-vllm 源码追踪
24跟踪一个请求:token 数、已缓存数与下一次计算12–18 min + 练习用状态表走完 chunked prefill 和两次 decode,定位每一次计数器更新。25从逻辑 token 到物理槽:块生命周期与前缀命中12–18 min + 练习手算 block_table / slot_mapping,并区分空闲、可复用缓存、正在被引用这三个状态。26Runner 是翻译层:变长 batch、静态地址与 CUDA Graph12–18 min + 练习从两条变长请求构造输入元数据,并说清 graph replay 固定什么、允许什么变化。深入篇 · vLLM V1 运行时细节
27vLLM 调度账本:预算、在途工作与投机回退12–18 min + 练习正确计算一次混合调度的token预算,并在拒绝draft后修正computed计数。28vLLM KV 管理:hash 身份、free队列与淘汰12–18 min + 练习解释“已算hash”不等于“可共享KV”,并手算一次前缀命中与块池回收。29vLLM 执行层:六个token怎样变成三条请求的结果12–18 min + 练习手算GPU runner的关键数组,并建立不会混淆输入、输出、draft的测量口径。深入篇 · DeepInfer 专项精读
30DeepInfer:公开引擎边界与 C++ 调度链12–18 min + 练习从Python请求跟踪到C++ batch,并区分公开离线引擎与完整线上服务所需组件。31MoE 与 EPLB:token 去哪里,专家副本放哪里12–18 min + 练习走通gate→dispatch→专家计算→combine,并手算一个冗余副本的放置与映射更新。32DSpark:验证预算、接受前缀与可复现边界12–18 min + 练习从逐位置置信度算累计接受率,再解释验证预算、KV回退与确定性条件。网页可直接阅读源码摘录;本地读码请先按下载与准备指南获取固定版本。
vendor/nano-vllm @ bb823b3(1,450 行)vendor/vllm @ ef9339e(v1 目录 208,340 行)vendor/deepinfer @ a679bb8建议的学习顺序:15–23补齐Transformer细节 → 01–06结合24–26读nano → 08–11结合27–29读vLLM → 12–14结合30–32读DeepInfer。07课用于WSL真实实验;完整安排见复习路线。