从零实现vLLM系列【0】:项目介绍
点击博客上方 【关于-赞助】,扫描第一个二维码并备注github邮箱,或者加入 QQ 群聊 1102504490 后添加群主 QQ。

什么是 vLLM ?

vLLM 是2023年提出来的推理框架,简单来说就是把 GPU 中的显存管理起来,让大模型跑的更快,硬件利用率更高。 三年过去,vLLM 基本涵盖了绝大部分主流模型架构,硬件横跨 NVIDIA、AMD 和一大批国产加速卡。

在这个推理框架之上实现了包括调度、量化、投机解码、PD 分离等多种最新的大模型加速技术。某种程度上,它已经是事实上的推理引擎领域基石。
而对我们来说,站在2026年的当下,在实习秋招甚至是社招的时候,vLLM 已经事实上是 AI Infra 的入场券。 如果你掌握了 vLLM 或许并不能说明什么,但是如果你没有掌握它,那就糟糕了。
几乎所有大厂的 AI Infra 的招聘岗位都会要求掌握 vLLM,市面上的相关项目也不算少,例如 nano-vLLM、mini-vLLM等等,还有一些 B 站知乎上免费或者付费的课程。
但是这些教程的一大特点就是会列举诸多 PagedAttention、CUDA Graph、FlashAttention 等等听起来很高大上名词。
但是对于小白或者是想要入门这个行业的同学来说,最难的是都不知道从什么地方开始看起!
能够从理论上理解 KVCache 的概念是一个 level。只需要讲明白它的原理,很简单,十几分钟就搞定了。
但能使用 Pytorch 写出没有 bug 的代码,并且使用 Triton 进行优化,甚至说在不同的机器上测出它的不同性能,那就是另外一回事了。
这也是我们 dzyy-vLLM真正要做的。
在我们的项目中,是真正意义上的从零开始,我们会从理论开始,逐步先把大模型的各个组件讲解清楚,并且使用代码完整的一步步出来,先讲解清楚什么是最简单的自回归推理。之后再逐步优化KV缓存、之后再逐步优化多并发、优化Prefill和Decode阶段的性能等等,再然后就进一步实现多卡并行、实现 MoE 和 EP 并行等等。
至于很多同学会问到的,相比较某某博主,dzyy-vLLM 项目优势在什么地方,我觉得这个问题交给屏幕前的各位,相信各位心中自有答案。
如果只是想了解大概,掌握理论知识,暂时还在观望的同学也不用担心,杜子源源是十分具有开源精神的!
后续每周我会定期更新两至三篇dzyy-vLLM项目中的文档,以便大家了解。
下边我就把项目中所有完整的目录展示给到大家。
dzyy-vLLM 版本示意图
V0 版本 跑通最小推理

- 词表嵌入与输出头
- Decoder 层
- 自回归循环
- 流式输出
- 采样策略
- safetensors 加载
- 模型下载
- 模型执行
V1 版本 KV缓存与分页显存

- V0 的核心性能瓶颈
- 为什么只有 KV 需要被缓存?
- KV 管理的设计理念
- KV 管理的效果
- 如何编写 KVCache 代码
- 显存池如何设计
- 物理页和逻辑页的设计
- 分页显存的增删查改
- Engine 与 Model 之间的契约 ForwardContext
- Prefix 的作用
- 链式哈希
- Radix 树
- None、Hash 和 Radix 的代码实现
V2 版本 并发调度

- 静态分组处理的代价
- V1 在并发下的主要问题
- 连续批处理的设计动机
- 自回归生成的两个阶段
- Chunked Prefill 的设计动机
- CB 优化哪些性能指标
- Prefill Decode 交错执行
- 共享显存池
- 引擎拆分为模型、计算、调度三层
- 代码重构与实现
V3 版本 单卡性能优化

- V2 局限与 V3 优化方向
- 控制、模型、计算层面共同优化
- V2 的性能瓶颈详解
- V2 的性能瓶颈实测
- 输入管线优化
- 面试快速计算模型显存开销
- 算子融合详解
- Attention 优化详解
- CUDA Graph 详解
- Prefill Compile 详解
- Sampler 优化详解
- 模型加载优化方案
- 手撕 FlashAttention 系列
- 手撕算子融合并注册到 Compile 中
- 优化 KVCache 读写
- CPU 与 GPU 异步优化
V4 版本 单机多卡并行

- 并行计算框架
- 三类并行策略 TP、PP、DP
- 并行的代价
- 并行学习路线
- 硬件互联的三个维度:卡数、异构性、互联方式
- NVLink、NVSwitch、PCIe、P2P、CXL 等卡间通信状态
- 单机状态完整分类
- Nvidia 通信相关命令详解
- 拓扑矩阵
- 测量方法
- 小消息延迟与带宽随消息验证
- NCCL All-Reduce 实测
- 新机快速验证流程
- V3 为什么是单卡
- 扩展到单机多卡需要修改哪些模块
- 为什么要设计多进程,以及进程之间的通信方式
- ZMQ、Gloo、NCCL 详解
- V4 版本代码设计架构
- 进程组与集合通信
- 张量并行
- 流水线并行
- 数据并行
- CUDA Graph 与并行策略
- 词表并行从原理到实现
- 线性层并行从原理到实现
- 实测性能验证
V5 版本 MoE实现与EP并行

- MoE 历史发展脉络
- 从软混合到稀疏门控
- Top-2 与 Top-1 的路由选择
- 细粒度专家与共享专家
- Qwen 系列 MoE 架构演进
- MoE 核心推理公式
- MoE 在 Transformer 中的选择
- MoE 的显存物理布局
- MoE 实现及其融合与优化
- 从"token 找专家"变到"专家找 token"
- Grouped GEMM 在 MoE 中的设计详解
- 融合计算与 CUDA Graph 优化
- All-Reduce 和 All-to-All 的区别
- TP 与 EP 的计算差异
- 单机代码实现
- 验证 TP 与 EP 的输出结果与单卡下保持一致
- 对照官方 vLLM 验证性能
- 端到端测试 V0-V5 各项性能指标
未做的工作
虽然我们从 V0 一路写到了 V5,但距离真实的生产级 vLLM 还有很大一段路。 这个系列的目标是在于把推理链路里的关键指标完整的理解并掌握,但由于个人精力有限,仍然有一些工作我们目前确实还没有做,期待大家在我们的项目上自行补充或者学习。
- 标准的 OpenAI 接口
- 模型与硬件生态
- 权重/激活量化与KV量化
- 投机解码
- 完整的前缀复用与KVCache管理
- 多机多卡的实现
- 系统化的 bench 与 profiling 自动化脚本
- 完整的日志监控与错误追踪
如果后续有机会,我们还会把这些项目加入到其中,dzyy-vLLM 期待着各位的参与。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!