课程索引 · nano-vllm → vLLM → DeepInfer

从 Transformer 的一行计算
走到推理引擎的每一步

32 节课,两条互相连接的线:手算 Transformer 的张量与公式,再沿 nano-vllm、vLLM V1、DeepInfer 追踪请求、缓存和执行。用图例、即时练习和真实源码把概念接起来。

14 节原课 + 18 节深入课 46 张 SVG · 维度逐格交互 · CPU本地验证 固定源码版本 · 56份在线摘录

怎么用这套课

原课提供全景;深入课核心阅读约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回退与确定性条件。

+配套材料

+源码版本

网页可直接阅读源码摘录;本地读码请先按下载与准备指南获取固定版本。

建议的学习顺序:15–23补齐Transformer细节 → 01–06结合24–26读nano → 08–11结合27–29读vLLM → 12–14结合30–32读DeepInfer。07课用于WSL真实实验;完整安排见复习路线。