Skip to content
xp2001-coderPublic

About

llm-inference

Resources

Contributing

Stars

80 stars

Watchers

5 watching

Forks

Repository files navigation

zero2vllm:理解推理,手写算子

zero2vllm

简体中文 English

📚《从零手搓 vLLM》

从理解大模型如何生成,理解其推理过程中的缓存与调度,到手写算子以及对应的优化手段,让我们更能彻底地理解vLLM。

GitHub stars GitHub forks GitHub 项目 中英文 README Python 3.11+ GPU 实验目标:A100 与 C500 课程导航 CC BY-NC-SA 4.0

推理原理 · 量化算子 · 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 路径;最低显存要求会随具体模型和实验的实测结果公布。

快速开始

1. 完成第一课:从 token 到下一步预测

需要 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 实测。

2. 继续观察 KV Cache

下载并解压仓库,或克隆到本地后,在包含 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 前后是否计算一致,或查看已运行的结果。

3. 保存结果与运行检查

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 或输出长度,先预测重复计算量,再检查结果。

4. 量化方向:运行 INT4 Linear

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 集成待完成。

5. 准备 GPU 路径

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 引导实验:KV Cache 前后是否计算一致

✅ 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 ⭐!

📄 License

License: CC BY-NC-SA 4.0

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.


帮助更多人系统学习大模型推理引擎

Made with ❤️ by zero2vllm

About

llm-inference

Resources

Contributing

Stars

80 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages