推理原理 · 量化算子 · CPU 入门 · NVIDIA CUDA / 沐曦 MACA
从最小实验出发,逐步构建教学推理引擎,再深入真实 vLLM 源码。
第一次来 · 快速开始 · 课程大纲 · 特性与优化地图 · 学习路线 · 框架阅读地图 · 当前进度 · 参与贡献
课程建设中。 Part 1 的 1.1—1.6 已提供完整正文、CPU 代码、操作命令、练习答案和统一检查入口;另有 INT4 Linear 实验、7 篇专题导读和双后端配置模板。2.1—2.7 的模型构建、真实权重加载、请求生命周期、迭代调度、CPU 张量分页、前缀共享与 HTTP 流式服务已完成 CPU 验证,3.1—3.5 已提供固定版本源码阅读、调度/KV 与执行张量实验、Runner 演进、配置解析及 CPU 静态核验。9.1 已提供含 zero-point 的量化/反量化/重量化、模型 Passport、6 张中文图与 17 个 CPU 案例。9.2 进一步提供非方阵分组 Q/DQ、FP8/FP4 表示、尾组补零与有效位宽计算,含 20 个 CPU 案例和 7 张中文图。9.3 已补充校准协议、Observer、有效 token 预算及权重/层/任务误差对照。9.4 已补充量化误差控制推导、GPTQ 核心参考、缩放/旋转与 STE 实验。第13篇面向工程师,12节规划覆盖P/D性能建模、SLO配比、Mooncake/KV系统、Dynamo与llm-d控制面,以及生产运维验收。全部 135 节已有独立目录;后续引擎功能逐节推进,A100/C500 的 GPU 实验尚待实机验证。
根据已有基础选一个入口,完成后再沿学习路线深入。课程的完整范围保留在后面的 19 篇、135 章大纲中。
| 你的起点 | 第一份材料 | 做完后得到什么 |
|---|---|---|
| 会 Python,想理解推理 | 第一课:从 token 到下一步预测 | 手算一次 Attention,解释最后一行 logits 怎样选出下一个 token |
| 已用过模型部署,想读源码 | 请求、状态与张量 | 一张请求调用链,分清调度决策与模型执行 |
| 做量化或想写算子 | CPU INT4 Linear 实验 → 量化导读 | 一份位布局、误差和存储报告,再推进到 GPU 内核 |
| 已有可用 GPU 环境,想做优化 | 实验规范 → Profiling 导读 | 一份固定负载的实验设计,区分正确性、质量与性能 |
首次学习可按现有材料的短路线推进。算法统一在 9.4 量化算法与误差控制,量化主线重点是策略、数据布局、算子实现、内核调优与 vLLM 接入。
完整学习第一篇:Part 1 学习与命令总表,从生成原理走到缓存、性能指标、模型结构和采样正确性。
继续第二篇:2.1 构建最小 PyTorch 模型,在 CPU 上运行两层 Decoder,逐层对齐 RMSNorm、RoPE、Attention 与 SwiGLU。
接着学习 2.2 加载真实模型权重:加载固定版本的 SmolLM2-135M,理解权重布局、GQA、RoPE 和共享参数,在 CPU 上与 Transformers 逐层对齐。
再通过 2.3 请求与缓存生命周期处理完成、取消与异常,观察独立缓存和运行额度如何回收。 随后在 2.4 静态与连续批处理中让调度器选择每轮工作,比较补位、等待与输出间隔。 在 2.5 分页缓存中把物理块池接到 K/V 张量,验证地址映射、因果读取和释放复用。 继续在 2.6 前缀缓存中让请求复用真实 K/V,用冷暖对照、分叉请求与内存压力解释命中、共享和逐出。 在 2.7 HTTP 与流式输出中,从 HTTP 和异步编程基础开始,把引擎接到真实本机服务,检查客户端慢读、断连、超时与错误收尾。
继续阅读 3.1 vLLM 请求旅程与 3.2 调度与 KV 管理:沿固定源码追踪请求,再手算和回放逐轮调度、块分配、共享引用与抢占。随后在 3.3 模型执行与注意力后端把计划变成张量,核对数值和输出归属。继续在 3.4 Runner 演进理解状态组织与图模式,再用 3.5 配置解析追踪最终参数。这些基础部分不依赖 GPU。
其余学习入口见七篇专题导读。导读表示已有材料,目录中的 🧩 不等于完整章节或 GPU 验收完成。
调用模型生成一句话,是理解推理系统的起点。继续往下看,还会遇到许多具体问题:
- 为什么读入一段长文本,与逐个生成 token,表现出不同的性能瓶颈?
- 历史 token 的 K/V 应该怎样保存?并发请求增加时,显存又该如何分配?
- 一个请求提前结束后,新的请求怎样进入正在运行的批次?
- 同一份模型切换到另一种 GPU,哪些逻辑可以共用,哪些算子和依赖需要适配?
- 怎样用正确性检查和性能数据判断一次修改是否有效?
zero2vllm 围绕这些问题组织课程,以 vLLM 为主要源码学习对象。 我们从可手算的小例子开始,逐步实现模型前向、生成循环、KV Cache、调度和服务,再把教学实现与真实推理框架对应起来。
课程采用“问题 → 原理 → 最小实现 → 实验 → 源码对应”的学习方式。各章围绕可以运行、观察或检查的结果组织,进阶部分再讨论性能与平台差异;已交付的内容以各章状态为准。
以下是完整课程的建设目标,已完成内容见当前进度。
- 理解推理过程:串起 Tokenizer、Attention、Prefill、Decode 与逐 token 生成。
- 构建教学引擎:从简单循环走到缓存管理、连续批处理、分页缓存和流式服务。
- 阅读 vLLM 源码:追踪请求入口、调度器、KV 管理、模型执行与注意力后端。
- 系统学习优化策略:APC、FlashAttention、编译与图执行、权重/激活/KV 量化、推测解码和 DBO。
- 掌握分布式设计:TP、PP、DP、EP、CP、PCP、DCP、SP,以及 MoE、KV 传输与分离式部署。
- 认识完整服务能力:多模态、Pooling、LoRA、结构化输出、工具调用、推理输出、权重更新与运维。
- 设计可信的实验:比较输出正确性,测量首响应、生成速度、吞吐与尾延迟。
- 理解跨平台适配:在 CUDA 与 MACA 两条路径中辨认公共逻辑、运行环境和算子差异。
- 学习工程协作:固定实验版本,整理最小复现,阅读补丁并验证改动。
学生与初学者:会写基础 Python,希望理解推理系统如何工作。可以从 CPU 实验开始,沿基础路线学习;矩阵乘法、PyTorch 与 Transformer 的必要知识会在课程中补充。
有基础的工程师:已了解 PyTorch 或模型部署,希望进一步掌握调度、缓存、源码、性能分析和国产 GPU 适配。可以按问题进入相应章节的工程进阶部分。
前置知识:
- 必需:Python 的函数、类、列表和基本调试。
- 建议:了解矩阵运算、神经网络前向计算;进入真实模型章节前熟悉基础 PyTorch。
- 按需学习:CUDA/GPU 编程、C++ 和底层算子,在后端与优化专题中逐步引入。
| 路线 | 从哪里进入 | 主线与阶段产出 |
|---|---|---|
| 学生 | CPU 引导实验,0.1/0.3 与 Part 1 | 数学参考 → 请求/缓存模拟 → 真实小模型 → vLLM 映射;逐步交付可解释的教学引擎 |
| 工程师 | 固定一种平台基线,提前使用 Part 17 的测量方法 | 调用链与瓶颈 → 单项优化 → 组合回归 → 平台与分布式扩展 |
| 量化方向 | 建立基线后,从 9.1/9.2 契约与 9.5 策略进入 | 张量契约 → Q/DQ 与打包 → 量化 GEMV/GEMM → 调优 → vLLM 接入与服务消融 |
具体章节顺序、阶段交付物、GPU 条件与交叉章节分工见学习路线。每章共用基础正文,附工程进阶与平台说明;完整技术范围见课程目录。
**现在就能做:**完成 Part 1 六节与 2.1—2.7 CPU 实验,继续运行 INT4 Linear 实验,阅读专题导读、检查逻辑块分配和配置模板。2.2 的真实权重实验不需要 GPU;0.2 的 vLLM 生成体验可后置。
| 手头的环境 | 可以从哪里开始 | 后续实践 |
|---|---|---|
| 普通电脑 CPU | 当前的因果 Attention、KV Cache 实验与逻辑块模拟,完成 CPU 代码练习 | 学习基础原理,分析已有实验记录 |
| 可用的 NVIDIA GPU | 在所选版本与显存允许时运行小模型 | 沿 CUDA 路径完成 GPU 章节 |
| 沐曦 C500 | 使用对应的官方软件栈 | 沿 MACA 路径完成 GPU 章节 |
A100 和 C500 是我们首批计划验证的设备。 学生可以只选择一种 GPU 路径;最低显存要求会随具体模型和实验的实测结果公布。
需要 Python 3.11+。在仓库根目录执行,不需要第三方包、模型下载或 GPU:
python -m zero2vllm next-token-demo --output .local/runs/part-01-inference/01-next-token/default.json从五个教学词项和二维向量开始,逐项观察 Embedding、Q/K/V、因果 Attention、logits 和生成循环。默认输入“我 喜欢”,第一步选中 ID 2;verification.passed 应为 true。权重是为手算设置的,没有训练语言能力。
阅读第一课正文与五道练习,对照实际运行结果。预计 60—90 分钟完成手算、实验和自查。
整篇六节的命令、参数说明和练习见 Part 1 总表。一次运行 28 个案例、全套测试与文档检查:
python -m scripts.experiments.part01结果保存在 .local/runs/part-01-inference/summary.json 及各案例文件中。性能指标使用标明来源的模拟时间线,容量/Roofline 为假设估算,均不代表 GPU 实测。
下载并解压仓库,或克隆到本地后,在包含 pyproject.toml 的根目录执行。需要 Python 3.11+,无需下载模型或安装第三方包。
python -m zero2vllm demo这个实验使用固定随机权重的单头 Attention 模型,分别运行“完整重算”和“使用 KV Cache”的生成过程,比较每一步整个词表上的输出分数(logits)。
默认输入 4 个 token,生成 8 个新 token。检查结果:
| 检查项 | 预期 |
|---|---|
| 生成的 token ID | 两条路径一致 |
| 最大 logits 误差 | 不超过 1e-12 |
| Q/K/V 投影处理的位置数 | 完整重算 60,缓存路径 11 |
这是用于学习计算过程的小模型,token ID 没有自然语言含义;投影位置计数也不能直接换算为 GPU 加速倍数。
继续阅读引导实验:KV Cache 前后是否计算一致,或查看已运行的结果。
python -m zero2vllm demo --output .local/runs/part-01-inference/03-kv-cache/cpu-kv-cache.json
python -m unittest discover -s tests -v试着改变 prompt 或输出长度,先预测重复计算量,再检查结果。
python -m zero2vllm quant-demo --output .local/runs/part-09-quantization/08-bit-packing-serialization-and-repack/cpu-int4-linear.json实验实现沿 K 分组的 Q/DQ、有符号 INT4 打包及两条量化 Linear 参考路径。默认包含尾组和奇数打包,分别报告实现误差与量化误差,并把 scale 计入存储。详见实验教程;它是 CPU 数学参考,GPU 融合内核与 vLLM 集成待完成。
python -m zero2vllm doctor --output .local/environment/host.json
python -m zero2vllm profile configs/platforms/cuda/a100.toml
python -m zero2vllm profile configs/platforms/maca/c500.toml这一步用于整理环境信息和检查配置。模板会列出尚未填写的实际版本;配置完整后可预览容器内的启动参数。正式部署步骤随 A100、C500 实机验证补齐,见双后端环境与配置。
本版共 19 篇、135 个正式章节规划,每篇、每节都有独立目录;未完成小节先提供教学骨架,两个 CPU 实验已归入对应篇。目录齐全不表示正文全部完成;前置知识、练习产出、设备条件见详细课程目录。
状态:✅ 已完成并有本地验证;🧩 有部分材料或代码;📋 已规划、正文待编写。 功能已被上游收录也不等于本项目已经实测。
✅ CPU 量化实验:INT4 打包、分组缩放与 Linear
| 篇 | 专题范围 | 章节数 |
|---|---|---|
| Part 0 | 开始之前 | 3 |
| Part 1 | 理解大模型推理 | 6 |
| Part 2 | 从零构建教学推理引擎 | 7 |
| Part 3 | 走进真实 vLLM | 5 |
| Part 4 | CUDA 与 MACA 单卡基线 | 3 |
| Part 5 | KV Cache、Prefix Cache 与长上下文 | 9 |
| Part 6 | 调度、批处理与重叠执行 | 6 |
| Part 7 | Attention 与高性能算子 | 7 |
| Part 8 | 编译、CUDA Graph 与执行优化 | 7 |
| Part 9 | 量化算法、格式、算子与推理系统 | 14 |
| Part 10 | Speculative Decoding 推测解码 | 9 |
| Part 11 | 并行切分与分布式执行 | 10 |
| Part 12 | MoE 与通信优化 | 6 |
| Part 13 | 分布式推理工程:PD 分离、KV 系统与集群调度 | 12 |
| Part 14 | 模型类型、多模态与适配器 | 7 |
| Part 15 | 服务接口与生成能力 | 7 |
| Part 16 | 权重加载、内存与 RL 推理生命周期 | 6 |
| Part 17 | 评测、性能分析与优化方法 | 6 |
| Part 18 | 平台扩展、部署生态与开源贡献 | 5 |
Part 0 · 开始之前(3 章)
| 章节 | 必须覆盖的知识点 | 状态 |
|---|---|---|
| 0.1 读者路线与环境准备 | Python、Linux、容器、驱动/运行时/框架版本、CPU 与双后端路线 | 🧩 |
| 0.2 第一次模型生成 | 离线 LLM、在线服务、流式请求、Tokenizer 与 chat template | 📋 |
| 0.3 实验与源码工作方法 | 固定 revision、阅读配置/日志/调用链、最小复现与原始数据 | 📋 |
来源与阅读入口:Datawhale zero-to-sglang · vLLM Quickstart · GPU 安装与设备条件。
Part 1 · 理解大模型推理(6 章)
| 章节 | 必须覆盖的知识点 | 状态 |
|---|---|---|
| 1.1 从 token 到下一步预测 | Tokenizer、Embedding、Transformer、因果 Attention、LM Head | ✅ |
| 1.2 Prefill 与 Decode | 计算密集/带宽密集、HBM/SRAM、Roofline、算术强度 | ✅ |
| 1.3 KV Cache 的作用 | 缓存更新、位置偏移、MHA/MQA/GQA、每 token 显存 | ✅ |
| 1.4 如何读性能结果 | TTFT、TPOT、ITL、吞吐、Goodput、P50/P95/P99、排队 | ✅ |
| 1.5 模型结构与长上下文基础 | RoPE、ALiBi、Sliding Window、MLA、稀疏/线性 Attention、SSM | ✅ |
| 1.6 采样与数值正确性 | Greedy、temperature、top-k/top-p/min-p、penalty、seed、EOS/stop | ✅ |
来源与阅读入口:模型支持与任务 · Generative Models · Benchmark CLI。
Part 2 · 从零构建教学推理引擎(7 章)
| 章节 | 必须覆盖的知识点 | 状态 |
|---|---|---|
| 2.1 构建最小 PyTorch 模型 | 模型前向、生成循环、RMSNorm/RoPE/MLP、与 CPU 参考对齐 | ✅ |
| 2.2 加载真实模型权重 | 配置与 revision、safetensors、权重映射与共享、Tokenizer、GQA/RoPE 布局、逐层对齐 | ✅ |
| 2.3 请求与缓存生命周期 | 请求状态、准入额度、取消边界、异常回收、独立 KV 与共享模型 | ✅ |
| 2.4 从静态批处理到连续批处理 | 静态组与逐轮补位、三种预算、FIFO 阻塞、轮转公平性、首项与输出间隔 | ✅ |
| 2.5 分页缓存 | 块表与 slot 映射、CPU KV 张量、有效前缀、整块准入、隔离与回收 | ✅ |
| 2.6 前缀缓存 | 完整前缀匹配、末块重算、真实 KV 共享、引用计数、哈希隔离与 LRU 逐出 | ✅ |
| 2.7 HTTP 与流式输出 | HTTP/SSE 基础、异步输出、有界队列、背压、断连取消与错误收尾 | ✅ |
来源与阅读入口:Transformers · nano-vllm · mini-sglang · 架构设计。
Part 3 · 走进真实 vLLM(5 章)
| 章节 | 必须覆盖的知识点 | 状态 |
|---|---|---|
| 3.1 vLLM 中一次请求的旅程 | 固定 v0.8.5 请求路径;输入、进程/线程/任务、消息结构、模型迭代、输出合并与取消回收 | ✅ |
| 3.2 vLLM 调度与 KV 管理 | 固定 v0.8.5;token 缺口与预算、混合调度、块分配、前缀引用、队首阻塞、抢占重算与执行反馈 | ✅ |
| 3.3 模型执行与注意力后端 | 固定 v0.8.5;模型加载、权重方向与融合 QKV、输入打包、RoPE/GQA、注意力元数据、后端与候选过滤 | ✅ |
| 3.4 V1 与 ModelRunner 演进 | V0/V1 与 MRV1/MRV2;稳定槽位、增量写入、拷贝寿命、GPU 元数据、采样数学与图模式分派 | ✅ |
| 3.5 配置与能力的解析流程 | CLI/SDK 到 EngineArgs;None 与 False、V1 默认/强制规则、配置来源、预算约束与平台/运行时验证 | ✅ |
3.1—3.5 已完成固定版本源码阅读、CPU 实验与练习。3.4 比较 v0.8.5 与 v0.17.1,其余主线固定 v0.8.5;状态、张量与配置实验不代表 GPU 执行通过。
来源与阅读入口:架构设计 · Model Runner V2 · Hugging Face 集成 · vLLM Features 与兼容性入口 · OpenAI-compatible Server。
Part 4 · CUDA 与 MACA 单卡基线(3 章)
| 章节 | 必须覆盖的知识点 | 状态 |
|---|---|---|
| 4.1 CUDA 路径与 A100 基线 | 上游 vLLM、CUDA/PyTorch、显存规格、eager 起步、离线/在线 | 🧩 |
| 4.2 MACA 路径与 C500 基线 | vLLM-MetaX、MACA、mcoplib、官方镜像、版本关系 | 🧩 |
| 4.3 两个平台上的同一个实验 | 同权重/输入/采样/负载、dtype、后端差异、误差容限 | 📋 |
来源与阅读入口:GPU 安装与设备条件 · vLLM-MetaX · MetaX 安装 · MetaX Quickstart。
Part 5 · KV Cache、Prefix Cache 与长上下文(9 章)
| 章节 | 必须覆盖的知识点 | 状态 |
|---|---|---|
| 5.1 PagedAttention 与缓存布局 | 页大小、block table、slot mapping、NHD/HND 与新布局、碎片 | 🧩 |
| 5.2 Automatic Prefix Caching | APC 完整块匹配、未命中后缀计算、prefill 节省、最后 token/logits 边界;Radix 对照 | 🧩 |
| 5.3 缓存键与共享隔离 | 链式哈希、token/多模态/LoRA 标识、cache salt、哈希算法 | 🧩 |
| 5.4 缓存生命周期与路由 | 引用计数、LRU、逐出、抢占重算、reset、KV events、亲和路由 | 🧩 |
| 5.5 混合模型缓存管理 | Full/SWA/SSM 分组、Hybrid KV Cache Manager、页对齐、共享层 | 📋 |
| 5.6 Mamba 与线性模型状态缓存 | Mamba1/2、GDN、卷积/SSM 状态、检查点、ReplaySSM/RecoverSSM | 📋 |
| 5.7 KV Offloading 与分层缓存 | 原生/LMCache、GPU↔CPU、异步换入换出、存储与连接器;对象/字节命中与远端读取成本,衔接13.5/13.8 | 📋 |
| 5.8 上下文扩展与 KV Sharing | RoPE scaling/YaRN、模型长度、滑窗、跨层 KV sharing/fast prefill | 📋 |
| 5.9 IndexCache 与稀疏索引缓存 | DSA top-k 索引跨层复用、复用频率、稀疏注意力精度 | 📋 |
来源与阅读入口:Automatic Prefix Caching · Prefix Caching 设计 · 缓存配置与 dtype 清单 · Hybrid KV Cache Manager · KV Offloading · Context Extension · IndexCache。
Part 6 · 调度、批处理与重叠执行(6 章)
| 章节 | 必须覆盖的知识点 | 状态 |
|---|---|---|
| 6.1 连续批处理与调度策略 | FCFS、priority、等待/运行队列、公平性、抢占与饥饿 | 🧩 |
| 6.2 Chunked Prefill | 分块预填充、混合 prefill/decode、长请求阈值、部分 prefill 预算 | 🧩 |
| 6.3 Token 预算与显存预算 | max_num_seqs、max_num_batched_tokens、版本中的 scheduled-token 上限、max_model_len、KV/encoder/推测预算 | 🧩 |
| 6.4 异步调度与输出处理 | CPU/GPU overlap、输入准备、采样反馈、异步输出、取消边界 | 📋 |
| 6.5 DBO 与 TBO 对照 | vLLM Dual Batch Overlap、ubatch、计算/通信重叠;SGLang TBO/SBO 对照 | 🧩 |
| 6.6 调度功能组合与演进 | async scheduling × spec decode × graphs × PP/LoRA;旧 multi-step/best-of;混部与PD同预算对照,批处理/排队对阶段容量的影响 | 📋 |
来源与阅读入口:Optimization and Tuning · 调度配置 · Dual Batch Overlap · SGLang EP:TBO/SBO。
Part 7 · Attention 与高性能算子(7 章)
| 章节 | 必须覆盖的知识点 | 状态 |
|---|---|---|
| 7.1 FlashAttention 原理 | IO-aware tiling、online softmax、SRAM 复用、精确注意力 | 🧩 |
| 7.2 FlashAttention 版本与接入 | FA1/FA2/FA3/FA4、varlen、prefill/decode、设备与 dtype 条件 | 📋 |
| 7.3 注意力后端选择 | FlashInfer、Triton、SDPA/FlexAttention、CPU/ROCm/XPU、自动选择 | 🧩 |
| 7.4 MLA 与稀疏 Attention | FlashMLA、CUTLASS MLA、FlashInfer MLA、DSA/MSA、模型专用后端 | 📋 |
| 7.5 Decode 与共享前缀注意力 | 分区归约、split-K、变长/分页、cascade attention、共享前缀 | 🧩 |
| 7.6 线性层与融合算子 | Triton vector add→reduction/Softmax→Matmul→Attention;GEMM/GEMV、RMSNorm、RoPE、SwiGLU、CUDA/CUTLASS/CuTeDSL | 🧩 |
| 7.7 Kernel 选择与调优 | Marlin、Machete、DeepGEMM、Humming、FlashInfer、b12x、autotune/JIT | 🧩 |
来源与阅读入口:Attention 后端注册表 · Attention Backend 支持矩阵 · FlashAttention 官方实现与版本 · Linear/MoE Kernel 配置 · CustomOp · Triton Fused Attention 教程。
Part 8 · 编译、CUDA Graph 与执行优化(7 章)
| 章节 | 必须覆盖的知识点 | 状态 |
|---|---|---|
| 8.1 torch.compile 集成 | Dynamo/FX/Inductor 与 Triton TTIR/TTGIR/目标代码;guards、断图、动态 shape、piecewise compile | 🧩 |
| 8.2 CUDA Graph 执行模式 | NONE/PIECEWISE/FULL/FULL_DECODE_ONLY/FULL_AND_PIECEWISE | 🧩 |
| 8.3 形状特化与编译缓存 | capture sizes、padding、warmup、缓存键、recompile、启动成本 | 🧩 |
| 8.4 计算融合 Pass | Norm+Quant、Act+Quant、Attention+Quant、QK Norm+RoPE、RoPE+KV | 🧩 |
| 8.5 通信融合与 Async TP | GEMM/collective overlap、all-reduce+RMSNorm、SP、对称内存 | 📋 |
| 8.6 优化级别、CustomOp 与 vLLM IR | 优化预设、pass 优先级、算子 dispatch/lowering、平台覆盖 | 📋 |
| 8.7 多模态图与编译排错 | ViT CUDA Graph、encoder compile、动态输入、回退、DBO/Spec 组合 | 📋 |
来源与阅读入口:torch.compile 集成 · 编译模式与融合 Pass · CUDA Graphs · Optimization Levels · vLLM IR · ViT CUDA Graphs。
Part 9 · 量化算法、格式、算子与推理系统(14 章)
| 章节 | 必须覆盖的知识点 | 状态 |
|---|---|---|
| 9.1 量化系统全景与术语分层 | 算法/方案/表示/格式/布局/算子分层;含 zero-point 的 Q/DQ/RQ、repack 区别、Linear 手算与模型 Passport | ✅ |
| 9.2 数值表示、量化公式与张量契约 | INT2/3/4/8 与 E4M3FN/E5M2/E2M1;MX/NV 块缩放;含 zero-point 的分组 Q/DQ、非方阵/尾组/scale 精度;effective bpw | ✅ |
| 9.3 Calibration、Observer 与误差测量 | Calibration Protocol、有效 token/mask 与独立评测;MinMax/EMA/Histogram/Percentile/MSE 搜索;权重/层/block/任务误差与输入主干 | ✅ |
| 9.4 量化算法与误差控制 | RTN/裁剪/舍入目标;GPTQ 的 Hessian、补偿、Cholesky、damping 与分组;AWQ 启发式缩放、rotation、FakeQuant/STE 与 PTQ/QAT | ✅ |
| 9.5 Activation Quantization 与混合精度策略 | 静态/动态激活 scale、per-token/per-block、outlier 与变换;层/通道/专家敏感度;W4A16→INT8 W8A8→条件化 FP8/W4A8/FP4 | 🧩 |
| 9.6 量化框架、导出流程与生态 | MQBench/PPQ、LightCompress、AutoRound、LLM Compressor、ModelOpt;算法/导出格式解耦;两条独立生产路径 | 📋 |
| 9.7 Checkpoint Format 与 Quantized Weight ABI | GPTQ/AWQ/compressed-tensors/GGUF;qweight/qzeros/scales/g_idx;shape/dtype/axis/stride;容器、磁盘契约与执行契约 | 📋 |
| 9.8 位打包、序列化与 Repack | INT4 byte/word packing;INT3/5/6/7 bit-stream/padding/block-word;序列化/读取;repack/逆变换;字节序、奇数尾部与非对齐 | 🧩 |
| 9.9 Weight-only GEMV / GEMM 与调优 | W4A16/W8A16、显式/融合 DQ、实际乘法类型;prefill/decode shape sweep;tiling/scale/L2/共享内存/流水线/寄存器/split-K/autotune | 🧩 |
| 9.10 激活量化、低精度 GEMM 与融合 | INT8 W8A8 优先;FP8/W4A8/FP4 条件化路径;statistics/Q/GEMM/scale/DQ/epilogue 分项计时;Norm/Act+Quant 等融合 | 🧩 |
| 9.11 KV Cache 量化与 Attention 协同 | 动态状态、写入 Q/读取 DQ、scale 生命周期;per-tensor/head/token;FP8/INT8/INT4/FP4;KIVI/KVQuant/MiKV;长上下文质量;KV量化后的线上字节/QDQ成本与PD布局契约,衔接13.5/13.9 | 📋 |
| 9.12 MoE、并行切分与量化 | TP qweight/scale/zp/g_idx 切分与 group boundary;fused QKV;专家敏感度/负载;Router/Dispatch/Grouped GEMM/Combine;EP | 📋 |
| 9.13 量化路径接入 vLLM | quantization_config/QuantizationConfig/get_quant_method/create_weights/load/process_weights_after_loading/apply;repack/dispatch/回退;固定源码追踪 | 🧩 |
| 9.14 从算子收益到端到端推理加速 | 数值/模型质量/kernel/model/serving 五层验收;PPL/显存/TTFT/TPOT/ITL/吞吐/Goodput/尾延迟;预处理摊销与双平台报告;量化如何改变P/D曲线与容量配比,避免只按压缩倍率估速 | 🧩 |
每节维护 Quantized Model Passport,区分算法、数值契约、checkpoint、repack、kernel 与运行时证据。CPU 小矩阵 → 少量层 → Qwen3-8B;CNN/MQBench 为经典支线。见 Part 9 v1.0 总设计。
来源与阅读入口:量化与硬件矩阵 · vLLM 量化方法与配置接口 · Linear/MoE Kernel 配置 · Triton 矩阵乘教程 · Marlin 量化内核实现 · Quantized KV Cache · 量化方法注册表 · Online Quantization · LLM Compressor。
Part 10 · Speculative Decoding 推测解码(9 章)
| 章节 | 必须覆盖的知识点 | 状态 |
|---|---|---|
| 10.1 Draft、Verify 与拒绝采样 | 目标/草稿分布、接受率、回退、额外 token、分布保持条件 | 🧩 |
| 10.2 N-gram 与 Suffix | ngram、ngram_gpu、prompt lookup、suffix matching、自适应深度 | 📋 |
| 10.3 独立 Draft Model | 草稿模型、词表对齐、draft TP、显存预算、投机 token 数 | 📋 |
| 10.4 EAGLE 与 EAGLE3 | 特征预测、draft tree/验证、hidden state extraction、模型配套 | 📋 |
| 10.5 MTP 与模型原生多 token 预测 | MTP 模块、权重、共享状态、多模型家族、混合模型回滚 | 📋 |
| 10.6 其他草稿与并行提案 | MLP speculator、Medusa、PARD、DFlash/DSpark、speculators、custom proposer | 📋 |
| 10.7 动态推测与自适应验证 | Dynamic Speculative Decoding、负载感知、置信度、Adaptive Verification | 📋 |
| 10.8 推测的缓存与执行组合 | KV 分配/回滚、CUDA Graph、异步调度、LoRA/量化/多模态/CP | 🧩 |
| 10.9 接受率与真实收益 | 每请求/每位置接受率、accepted tokens、草稿成本、有效吞吐 | 🧩 |
来源与阅读入口:Speculative Decoding · 推测方法与模型类型 · EAGLE · MTP · Dynamic Speculative Decoding · Adaptive Verification。
Part 11 · 并行切分与分布式执行(10 章)
| 章节 | 必须覆盖的知识点 | 状态 |
|---|---|---|
| 11.1 并行维度与通信基础 | TP/PP/DP/EP/CP/PCP/DCP/SP、rank/group、all-reduce/all-gather/reduce-scatter/all-to-all | 🧩 |
| 11.2 Tensor Parallelism | TP、column/row parallel、vocab parallel、Attention heads、KV 复制 | 🧩 |
| 11.3 Pipeline Parallelism | PP、层切分、不均匀分层、microbatch、流水线气泡 | 🧩 |
| 11.4 Data Parallelism | DP、副本、内部/外部/混合负载均衡、dense 与 MoE 差异 | 🧩 |
| 11.5 Context Parallelism 概念 | CP 沿上下文切分、长序列、Q/KV 分布、ring/all-gather 算法 | 🧩 |
| 11.6 Prefill Context Parallelism | PCP、prefill token 切分、rank 扩展、TP/PCP 组合、缓存布局 | 🧩 |
| 11.7 Decode Context Parallelism | DCP、decode KV 分片、复用进程组、MLA/GQA、ag_rs/a2a、Q replicate | 🧩 |
| 11.8 Sequence Parallelism 与 Async TP | SP 激活切分、TP 配合、融合 pass、序列并行 MoE 路径 | 📋 |
| 11.9 组合并行与拓扑规划 | TP×PP×DP×PCP、DCP/EP 组复用、NVLink/PCIe/RDMA/NUMA;P/D资源组、卡数与节点数分开核算,衔接13.4/13.9 | 🧩 |
| 11.10 分布式启动与排错 | mp/Ray/external launcher、节点发现、通信超时、NCCL/P2P、故障 | 📋 |
来源与阅读入口:Parallelism and Scaling · 并行配置与度数校验 · Context Parallel Deployment · Data Parallel Deployment · Expert Parallel Deployment · 编译模式与融合 Pass。
Part 12 · MoE 与通信优化(6 章)
| 章节 | 必须覆盖的知识点 | 状态 |
|---|---|---|
| 12.1 MoE 计算链路 | Router、top-k、shared/routed experts、dispatch、专家计算、combine | 🧩 |
| 12.2 Expert Parallelism | EP、专家切分、Attention DP/TP 与专家组、placement、冗余专家 | 🧩 |
| 12.3 Fused MoE Kernel | Modular Kernel、prepare/finalize、量化布局、batched/mega MoE | 📋 |
| 12.4 All-to-All 后端 | allgather/reducescatter、DeepEP、MoRI、NIXL EP、FlashInfer NVLink | 📋 |
| 12.5 EPLB 与弹性专家并行 | EPLB、重排/冗余、异步均衡、Elastic EP、扩缩容与故障恢复 | 🧩 |
| 12.6 MoE 重叠与综合调优 | DBO、shared expert overlap、通信融合、量化、分离式部署组合 | 📋 |
来源与阅读入口:Expert Parallel Deployment · 并行配置与度数校验 · Fused MoE Modular Kernel · MoE Kernel Features · Linear/MoE Kernel 配置 · Dual Batch Overlap。
Part 13 · 分布式推理工程:PD 分离、KV 系统与集群调度(12 章)
| 章节 | 必须覆盖的知识点 | 状态 |
|---|---|---|
| 13.1 PD 分离的收益、代价与适用边界 | 混部与 Chunked Prefill 基线;P/D 干扰;TTFT/TPOT/ITL 与 goodput;独立扩展与首 token 归属 | 🧩 |
| 13.2 P-only / D-only 测量与负载协议 | 模型与硬件指纹;ISL/OSL 联合分布;P 输出 1 token 基线;D fake transfer 上下文核验;request_rate/request_num/max_concurrency;预热与稳态窗口 | 📋 |
| 13.3 性能曲线、SLO 查表与不确定性 | 长度/并发/速率性能表;可选 scan 与绝对速率 sweep;固定 q_ref;分位数与联合 SLO;重复测量;插值边界与不可行点;Roofline解释与实测拟合/留出残差;Dynamo Profiler 的测量/估算来源与适用范围 | 📋 |
| 13.4 P/D 配比、卡数与集群容量规划 | req/s 与 token/s 换算;SLO 合格 qP/qD;目标流量与容量余量;整数实例数;TP/PP/EP/CP 资源组;网络/显存/成本约束;离线容量建议与在线 Planner 的分工及 GPU 预算 | 📋 |
| 13.5 KV 字节预算、传输成本与关键路径 | MHA/GQA 与模型专用状态;逻辑/分片/线上字节;KV dtype 与 scale;注册/打包/网络/重排;分层流水与重叠;网络争用 | 📋 |
| 13.6 vLLM KV Connector 协议与生命周期 | scheduler/worker 职责;metadata 与物理 block 映射;异步存取/完成通知;可读状态;引用持有与释放;KV events | 🧩 |
| 13.7 Mooncake:Transfer Engine、Store 与 KV 调度 | 论文架构与开源组件边界;Segment/Buffer/BatchTransfer;内存注册与异步完成;RDMA/TCP 与拓扑;Store 元数据/副本/回收;重算或传输 | 📋 |
| 13.8 连接器生态与分层 KV 存储 | NIXL/Mooncake/LMCache/MoRIIO/FlexKV/HF3FS 分层职责;HBM/DRAM/SSD;缓存准入/驱逐/预取;对象/字节命中;网络热点与缓存污染;Dynamo KVBM 与 NIXL 的层次及版本能力矩阵 | 📋 |
| 13.9 异构并行、KV 重分片与拓扑放置 | P/D 不同 TP/PP/PCP/DCP;GQA 分片或复制;模型/adapter/tokenizer 身份;block/layout/dtype 契约;重排与跨厂商边界 | 🧩 |
| 13.10 集群控制面:Dynamo、llm-d 与弹性调度 | 请求级路由与资源池控制的时间尺度;Dynamo Frontend/Router/Profiler/Planner/Operator;llm-d Gateway/EPP/InferencePool;Production Stack 对照;缓存收益与传输/排队成本;准入/背压/公平;扩缩容预热/滞回/排空;Little定律边界与trace replay | 📋 |
| 13.11 Encoder 分离与 E/P/D 资源规划 | 多模态 encoder 与 renderer 边界;EC transfer/embedding cache;图像/音频负载;E/P/D 依赖与缓存身份;三阶段容量 | 📋 |
| 13.12 生产运维、故障恢复与端到端验收 | push/pull 生命周期与失败回收;同请求跨组件 trace 与 SLO 告警;超时/重试/取消与输出去重边界;缓存事件滞后与网络故障;滚动升级/排空/回滚;联合 SLO/goodput 与单位合格请求成本;预测残差与 N-1 容量 | 🧩 |
来源与阅读入口:Disaggregated Prefilling · Disaggregated Encoder · KV Connector 注册表 · NIXL 兼容性矩阵 · KV Offloading · DistServe — SLO-aware PD resource allocation · Mooncake — KVCache-centric serving architecture · Mooncake Transfer Engine · vLLM MooncakeConnector · NVIDIA Dynamo 架构 · NVIDIA Dynamo Profiler · NVIDIA Dynamo Planner 设计 · NVIDIA Dynamo KVBM 配置与存储层级 · llm-d 架构 · vLLM Production Stack。
Part 14 · 模型类型、多模态与适配器(7 章)
| 章节 | 必须覆盖的知识点 | 状态 |
|---|---|---|
| 14.1 模型注册与执行任务 | generative/pooling、runner/task、原生实现/Transformers backend、encoder-decoder | 🧩 |
| 14.2 文本生成与评分 | 生成、logprobs/prompt logprobs、score、generative scoring、beam search 版本差异 | 📋 |
| 14.3 Pooling 全任务 | Embedding、token embedding、分类/token classification、reward、rerank/score | 📋 |
| 14.4 多模态输入管线 | 图像/视频/音频、processor cache、输入预算、placeholder、MM embeddings | 📋 |
| 14.5 多模态执行优化 | encoder batching/DP、ViT attention/FP8、encoder compile/graphs、EC cache | 📋 |
| 14.6 LoRA 与多租户适配 | Multi-LoRA、混合 batch、动态装卸、CPU 缓存、resolver、默认多模态 LoRA | 📋 |
| 14.7 Prompt Embeddings 与特殊架构 | prompt embeds、custom I/O、MLA/混合 SSM、离散扩散 dLLM canvas/denoising、Omni 扩展边界 | 📋 |
来源与阅读入口:模型支持与任务 · Pooling Models · Multimodal Inputs · LoRA Adapters · Prompt Embedding Inputs · ViT CUDA Graphs · 离散扩散语言模型配置。
Part 15 · 服务接口与生成能力(7 章)
| 章节 | 必须覆盖的知识点 | 状态 |
|---|---|---|
| 15.1 离线与在线入口 | LLM/AsyncLLM、chat/complete/serve/run-batch、OpenAI Batch、流式 SSE | 🧩 |
| 15.2 API 能力地图 | Completions/Chat/Responses、Embeddings/Score/Rerank、音频/实时接口、tokenize/detokenize | 📋 |
| 15.3 Structured Outputs | JSON Schema、regex、choice、grammar、structural tag、XGrammar/Guidance | 📋 |
| 15.4 Tool Calling | tool_choice、自动/指定/required、parallel tools、parser、chat template | 📋 |
| 15.5 Reasoning 与 Interleaved Thinking | reasoning parser、内容分离、思考预算、工具轮次与交错推理 | 📋 |
| 15.6 自定义采样与处理器 | Custom Logits Processors、logit bias、允许/禁止 token、custom arguments/I/O | 📋 |
| 15.7 服务治理与扩展 | 前端进程扩展、限流/背压、取消、健康检查、指标、集成框架 | 🧩 |
来源与阅读入口:OpenAI-compatible Server · Structured Outputs · Tool Calling · Reasoning Outputs · Interleaved Thinking · Custom Logits Processors。
Part 16 · 权重加载、内存与 RL 推理生命周期(6 章)
| 章节 | 必须覆盖的知识点 | 状态 |
|---|---|---|
| 16.1 模型解析与权重加载 | 本地/Hugging Face/ModelScope、revision、safetensors、sharded state、lazy loading | 🧩 |
| 16.2 高效加载与启动 | fastsafetensors、Run:ai Streamer、Tensorizer、InstantTensor、加载并发、JIT warmup | 📋 |
| 16.3 权重 Offload 与内存预算 | CPU weight offload、prefetch/UVA 路径、KV offload、pinned memory、图内存 | 📋 |
| 16.4 Sleep、Wake 与 Pause/Resume | sleep levels、权重/KV 释放、wake tags、暂停恢复、缓存重置 | 📋 |
| 16.5 权重更新与传输 | Weight Transfer、IPC/NCCL/Sharded RDT、逐层 reload、版本一致性 | 📋 |
| 16.6 强化学习推理集成 | RLHF/async rollout、训练-推理交替、distribution replay、routed experts、TRL | 📋 |
来源与阅读入口:Model Resolution · Conserving Memory · Sleep Mode · Weight Transfer · Async Reinforcement Learning · Layerwise Reloading。
Part 17 · 评测、性能分析与优化方法(6 章)
| 章节 | 必须覆盖的知识点 | 状态 |
|---|---|---|
| 17.1 基准测试工具与负载 | bench latency/throughput/serve/startup/mm-processor、trace replay、合成/真实数据;配置/实际到达/完成速率,供压窗口与测量充分性 | 🧩 |
| 17.2 延迟目标与参数搜索 | SLO/Goodput、并发、输入输出分布、sweep、Pareto、冷/热缓存;P/D单阶段性能表与联合SLO,scan可选,sweep拐点加密 | 🧩 |
| 17.3 Profiling 全链路 | PyTorch Profiler、Nsight/厂商工具、CPU/GPU timeline;语义/shape/dtype 对齐、次数与单次耗时、关键路径 | 🧩 |
| 17.4 观测与请求级指标 | Prometheus/Grafana、OpenTelemetry、KV/调度/Spec/MoE 指标、per-request metrics | 📋 |
| 17.5 质量、复现与 Batch Invariance | 数值容差、模型质量、长上下文、seed、批次不变性、确定性代价 | 📋 |
| 17.6 系统消融与综合项目 | APC×Chunked Prefill×Graphs×Quant×Spec、双平台成本、容量规划;P/D容量预测残差、等卡数/等成本消融,衔接13.12 | 🧩 |
来源与阅读入口:Benchmark CLI · Parameter Sweeps · Profiling vLLM · Production Metrics · Per-Request Metrics · Batch Invariance。
Part 18 · 平台扩展、部署生态与开源贡献(5 章)
| 章节 | 必须覆盖的知识点 | 状态 |
|---|---|---|
| 18.1 平台与插件机制 | out-of-tree platform、模型/算子/量化/LoRA/I/O 插件、能力检测 | 📋 |
| 18.2 C500 适配专题 | MACA/mcoplib、Attention/量化/图执行能力、配置迁移、数值和性能排查 | 📋 |
| 18.3 其他硬件与框架对照 | ROCm/XPU/CPU/TPU/其他插件,SGLang、TensorRT-LLM、llama.cpp、vLLM-Omni 边界 | 📋 |
| 18.4 部署与周边生态 | Docker/Kubernetes/Helm/Ray/Nginx 与应用接入;镜像/驱动/设备插件/网络依赖与版本固定;Production Stack 部署入口;Dynamo/llm-d 控制面与生产运维主讲见13.10/13.12 | 📋 |
| 18.5 从问题到贡献与版本维护 | 单元/集成/性能检查、最小复现、PR、废弃迁移、功能台账更新 | 📋 |
来源与阅读入口:Plugin System · CustomOp · vLLM-MetaX · MetaX 模型列表 · Kubernetes 部署 · vLLM Features 与兼容性入口 · SGLang Hyperparameter Tuning。
课程按 2026-09-15 查阅的 vLLM 官方功能文档、设计说明与源码注册表扩展。详细的术语、设备条件、组合实验和注册项见完整特性地图;14 组、233 个注册/配置命名条目用于后续检查遗漏,其中包含别名、模型映射与占位项。
| 专题 | 已纳入的内容 |
|---|---|
| 量化 | 算法统一比较、W/A/KV 策略与混合精度;手写 Q/DQ、INT4 打包、weight-only GEMV/GEMM、低精度矩阵乘、融合/流水线/访存优化、KV/专家量化、vLLM 算子接入与端到端消融 |
| 缓存 | Paged KV、APC/Prefix Cache、哈希/盐/隔离、逐出/reset、KV events、prefix match 粒度、Hybrid/SWA/Mamba/GDN、检查点、KV sharing、KV offload、IndexCache |
| Attention 与算子 | FlashAttention 1/2/3/4、FlashInfer、Triton、SDPA/FlexAttention、FlashMLA/CUTLASS MLA、稀疏/分页/变长/cascade attention、GEMM/GEMV、融合算子与 autotune |
| 调度与重叠 | Continuous Batching、FCFS/priority、Chunked Prefill、token/显存预算、抢占、async scheduling、DBO、TBO/SBO 对照、shared expert overlap、Async TP |
| 编译与图执行 | torch.compile、动态 shape、特化、编译缓存、JIT warmup、所有 CUDA Graph 模式、计算/通信融合 Pass、优化级别、CustomOp、vLLM IR、ViT graphs |
| 推测解码 | Draft Model、N-gram/GPU N-gram、Suffix、EAGLE/EAGLE3、MTP、MLP/Medusa/PARD、DFlash/DSpark、自定义 proposer、动态推测、自适应验证、接受率与回滚 |
| 并行切分 | TP、PP、DP、EP、CP、PCP、DCP、SP;进程组、张量布局、组合度数、collectives、拓扑、mp/Ray/多机排错 |
| MoE | Router/top-k、专家 placement、dispatch/combine、Fused/Modular/Mega MoE、DeepEP/MoRI/NIXL、EPLB、Elastic EP、负载均衡与通信重叠 |
| 分离式部署 | PD、KV Connector、NIXL/Mooncake/LMCache/FlexKV/HF3FS、异构并行映射、分层缓存、Encoder/EC 分离、租约/通知/失败恢复 |
| 模型与服务 | 离散扩散 dLLM、多模态、Pooling/Embedding/分类/Reward/Rerank、LoRA、Prompt Embeddings、Structured Outputs、Tool Calling、Reasoning/Interleaved Thinking、Batch/流式/音频接口 |
| 生命周期与运维 | 高效权重加载、weight offload、Sleep/Wake、Pause/Resume、权重传输/reload、RL rollout、bench/sweep、SLO/Goodput、profiling、监控、Batch Invariance、平台插件 |
| 名称 | 切分对象 | 需要记住的区别 |
|---|---|---|
| TP | 一层内的张量/权重 | 与 head、MLP、词表和 collective 对应 |
| PP | 模型层/阶段 | 要分析流水线气泡与负载 |
| DP | 请求/副本 | dense 与 MoE 的组关系不同 |
| EP | MoE 专家 | token 路由与 All-to-All;不机械增加一个独立乘数 |
| CP | 上下文维度 | 本课程写全称 Context Parallelism |
| PCP | prefill 序列计算 | 本次源码会扩展进程维度;是否能运行仍看模型和后端 |
| DCP | decode 上下文 KV | 复用进程组,不额外乘一次 GPU 数 |
| SP | 部分中间激活的序列维度 | 配合 TP/编译及 MoE 路径,不等同于 PCP/DCP |
Chunked Prefill 也曾被缩写为 CP,但它属于调度策略,单卡即可学习。 PCP/DCP 的合法度数、Q/KV 分布与模型限制见并行策略详解和上游并行配置。
TBO 已纳入对照专题,vLLM 侧使用官方名称 DBO(Dual Batch Overlap)。 课程分别讲 DBO、异步调度、Async TP,以及 SGLang 的 TBO/SBO,避免混用参数。vLLM DBO 设计
- 单卡 A100/C500:先做模型基线,再逐项验证缓存、调度、Attention、编译、量化、推测和服务能力。
- 多卡/多机:TP/PP/DP/EP/PCP/DCP/SP/DBO 与分离式部署都有正式章节、推导和实验设计;真实通信性能需要额外设备。
- 硬件/模型专用功能:FP8/FP4、特定 FlashAttention 代际、稀疏模型与专用 kernel 全部收录,并注明支持条件。
- 功能组合:单独设计 APC×Chunked Prefill、Quant×KV dtype、Graph×Spec、EP×DBO、PD×并行映射等消融实验。
当前新增章节为教学规划,A100/C500 的 GPU 实测状态仍为待验证。完整支持矩阵随固定版本和实机记录逐项建立。
学习 vLLM 时,也可以借助其他项目理解不同层次的设计。下表给出课程计划采用的阅读视角;具体代码以各项目的固定版本为准。
| 项目 | 在课程中的角色 | 带着什么问题阅读 |
|---|---|---|
| Transformers | 模型定义、权重加载与生成的参考 | 模型怎样定义和加载?生成循环怎样调用前向计算? |
| nano-vllm | 精简 vLLM 风格实现的阅读材料 | 缓存、调度、模型执行怎样组合成一个小型引擎? |
| mini-sglang | 模块化教学实现的阅读材料 | 分块 prefill、前缀缓存和调度如何协作? |
| vLLM | 核心源码与正式服务实验 | PagedAttention、连续批处理与模型执行怎样落地? |
| SGLang | 缓存与运行时设计的比较阅读 | RadixAttention 如何组织前缀复用?与 vLLM 的缓存管理如何对应? |
| llama.cpp | 本地推理与资源受限场景的扩展阅读 | C/C++ 执行、量化与 CPU/GPU 协同怎样影响部署选择? |
| TensorRT-LLM | NVIDIA 平台优化的扩展阅读 | 运行时与专用算子如何配合?性能结论依赖哪些硬件条件? |
| vLLM-MetaX | MACA 路径的正式插件与源码 | 平台插件、适配算子和软件版本如何协同? |
学生先按课程完成自己的小实现,再按章节阅读对应项目;工程师可以围绕同一个问题比较实现。框架介绍和阅读材料的覆盖范围,与本工程已经实测的平台范围分别记录。
公共课程和实验口径共用,运行环境按后端分别管理:
| 路径 | 正式运行栈 | 首批验证目标 | 当前状态 |
|---|---|---|---|
| NVIDIA CUDA | 上游 vLLM 与对应 CUDA/PyTorch 环境 | 单卡 A100 | 配置模板已有,待实测 |
| 沐曦 MACA | vLLM + vLLM-MetaX + 配套 MACA/算子库 | 单卡 C500 | 配置模板已有,待实测 |
模型、输入、dtype、采样参数和负载方法尽量统一;驱动、镜像、注意力后端与实际版本分别记录。先在每个平台建立正确性和性能基线,再分析两套系统的差异。环境说明 · 实验记录规范
教学引擎先完成可检查的参考实现,再逐步接入优化算子。当前的 CPU 数学实验与逻辑块模拟,是后续 PyTorch 和 GPU 实现的起点。
第一篇已补充讲解、图解和短示例,重点加强 1.4—1.6;见学习入口。
当前代码版本:v0.1.0.dev0。
| 已有成果 | 验证或阅读入口 |
|---|---|
| 工程设计、课程分层和迭代验收标准 | 工程设计、开发路线 |
| 19 篇、135 章大纲与特性/优化索引 | 详细目录、特性地图、一致性检查 |
| Part 1 全六节:正文、CPU 代码、参数命令、练习答案与统一运行 | 整篇学习入口、运行器、验证记录 |
| 2.1 最小 PyTorch 模型:逐层对齐、7 个案例、6 组练习 | 正文与实验、运行记录 |
| 2.2 真实权重加载:4 张原创图、3 个真实输入、8 组练习 | 正文与实验、运行记录 |
| 2.3 请求生命周期:4 张原创图、11 个基础案例、8 组练习 | 正文与实验、运行记录 |
| 2.4 迭代调度:4 张原创图、6 组双策略回放、8 组练习 | 正文与实验、运行记录 |
| 2.5 张量分页:4 张原创图、11 个 CPU 案例、8 组练习 | 正文与实验、运行记录 |
| 2.6 前缀共享:5 张中文原创图、12 个 CPU 案例、12 组练习 | 正文与实验、运行记录 |
| 2.7 HTTP 与流式输出:6 张中文原创图、14 个基础案例与 1 个前缀后端案例、14 组练习 | 正文与实验、运行记录 |
| 3.1 请求旅程:固定 v0.8.5、5 张中文图、源码核验与 12 组练习 | 正文与实验、源码记录 |
| 3.2 调度与 KV:6 张中文图、10 个计数案例、固定源码核验与 14 组练习 | 正文与实验、运行记录 |
| 3.3 模型执行:7 张中文图、12 个 CPU 案例、27 个固定源码函数与 16 组练习 | 正文与实验、运行记录 |
| 3.4 Runner 演进: 6 张中文图、10 个 CPU 案例与 14 组练习 | 正文与记录 |
| 3.5 配置解析: 6 张中文图、12 个 CPU 案例与 14 组练习 | 正文与记录 |
| 因果 Attention、KV Cache 与贪心生成 | 参考代码、引导实验 |
| 独立的逻辑块分配与回收模拟 | 块管理代码;尚未接入 Attention |
| 环境采集、A100/C500 配置检查 | 环境工具与配置说明 |
| CPU 数学参考与本地检查结果 | 验证记录、KV 实验、INT4 实验 |
| 7 篇专题导读:概念、手算与实验设计 | 专题导读、公开参考资料 |
| 三条学习路线、章节分工与目录同步检查 | 学习路线、维护方法、框架审查记录 |
**接下来:**Review 并试学 3.4—3.5,再进入第四篇,分别建立 A100/CUDA 与 C500/MACA 的环境和小模型基线。量化 GPU 算子与 vLLM 接入按开发路线推进;每阶段以代码、正文和验证记录共同验收。
zero2vllm/
├── docs/
│ ├── chapters/ 19 篇、135 节
│ │ └── part-02-engine/
│ │ └── 01-pytorch-model/
│ │ ├── README.md 正文
│ │ ├── lab.md 实验命令
│ │ ├── exercises.md 练习答案
│ │ ├── examples/ 本节示例
│ │ └── results/ 已验证结果
│ ├── platforms/ 平台说明
│ ├── engineering/ 架构与实验规范
│ ├── references/ 参考资料入口
│ ├── maintenance/ 维护说明和写作模板
│ └── assets/ 共享图片
├── metadata/
│ ├── course/parts/ 按篇拆分的中文课程数据
│ ├── translations/en/parts/ 对应英文大纲
│ └── upstream/ 功能清单
├── zero2vllm/ 共享 Python 实现
├── tests/{reference,modeling,integration,maintenance}/
├── scripts/{docs,experiments,environment}/
├── configs/{platforms,templates}/
├── reports/{quality,platforms,history}/
└── .local/{runs,checks,archive}/ 本地区,不上传
完整目录约定和后续填充方法见目录管理。
代码沿单一源码树演进,后续通过阶段标签对应课程进度。具体模块职责见工程设计。
没有 GPU,能学到哪一步?
现在即可完成 Part 1、2.1 PyTorch、2.2 真实权重加载、2.3 请求生命周期、2.4 调度回放、2.5 张量分页、2.6 前缀共享、2.7 HTTP 流式服务、CPU KV Cache、INT4 打包和 Linear 实验,阅读 7 篇导读,修改逻辑块模拟,并完成调度、切分、通信预算的手算。GPU 内核与实际服务性能需要对应设备验证。
需要先掌握 CUDA,或同时拥有 A100 和 C500 吗?
可以先从 Python 和基础实验开始。GPU 实践选择一条路径即可,底层编程知识在后端和优化章节中按需补充。
“手写 mini-vLLM”与当前代码是什么关系?
它是课程的阶段目标。目前已完成数学参考和部分缓存逻辑,2.1 已交付最小 PyTorch Decoder,2.2 已完成真实权重加载与参考对齐,2.3 已实现同步请求管理和取消回收,2.4 已加入静态/连续准入与三种预算检查,2.5 已连接 CPU 物理块池、KV 张量与 Attention,2.6 已加入跨请求完整前缀共享、引用计数与逐出,2.7 已接入本机 HTTP、SSE、背压和断连取消;真实模型增量 KV、张量批执行与 GPU 服务继续逐节推进。
多卡专题需要我现在就有多张卡吗?
可以先完成张量切分、进程组和通信成本的 CPU 推导/模拟,再阅读源码。真正的通信、DBO、EP 与多机性能需要相应设备;单卡结果不能代替这部分验证。
这里的“完整”如何维护?
以查阅日期对应的官方公开功能和配置为覆盖目标,保留注册表清单和章节映射。模型、后端、插件和组合持续变化,更新时同时记录新增、废弃及平台条件,不把一个大纲描述成永久完整的支持矩阵。
课程会跟随所有框架的最新版本吗?
当前导读注明查阅来源与适用范围。进入完整源码实验和 GPU 验收时再锁定 tag/commit、插件和环境版本;新版本通过独立验证后更新。其他框架也保留各自的版本和实验条件。
可以从一个小问题开始:
- 改进概念解释、公式推导或练习。
- 补充正确性测试,复现并修复缓存和调度问题。
- 提交 A100/C500 的实际环境与实验记录。
- 整理框架源码阅读笔记、性能分析或环境排查过程。
章节采用统一的“基础内容 + 动手实验 + 工程进阶”结构。提交内容应注明运行条件和真实状态;代码改动附相关检查,性能结论附原始数据。
贡献说明 · 章节模板 · 实验记录规范 · 维护者上传说明
课程组织方式受到 Datawhale zero-to-sglang 的启发:让基础理解、逐步实现和真实源码阅读形成连续的学习过程。感谢 vLLM、SGLang、nano-vllm、mini-sglang、Transformers、llama.cpp、TensorRT-LLM 与 MetaX 社区提供的公开源码和技术资料。
本项目的设计与当前代码独立编写。各参考项目的角色与来源见上方阅读地图及参考资料。
If this project helps you, please give it a Star ⭐!
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
帮助更多人系统学习大模型推理引擎
Made with ❤️ by zero2vllm
