从零实现vLLM系列【0】:项目介绍

2848 字
14 分钟
从零实现vLLM系列【0】:项目介绍
如何获取完整项目

点击博客上方 【关于-赞助】,扫描第一个二维码并备注github邮箱,或者加入 QQ 群聊 1102504490 后添加群主 QQ。

如何获取项目
如何获取项目

什么是 vLLM ?#

vLLM
vLLM

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

vLLM V1 架构图(官方文档)
vLLM V1 架构图(官方文档)

在这个推理框架之上实现了包括调度、量化、投机解码、PD 分离等多种最新的大模型加速技术。某种程度上,它已经是事实上的推理引擎领域基石。

而对我们来说,站在2026年的当下,在实习秋招甚至是社招的时候,vLLM 已经事实上是 AI Infra 的入场券。 如果你掌握了 vLLM 或许并不能说明什么,但是如果你没有掌握它,那就糟糕了。

几乎所有大厂的 AI Infra 的招聘岗位都会要求掌握 vLLM,市面上的相关项目也不算少,例如 nano-vLLMmini-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 版本 跑通最小推理#

V0版本文件树
V0版本文件树

v0 跑通最小推理
(1) Qwen3 模型架构
  • 词表嵌入与输出头
  • Decoder 层
(2) 自回归循环
  • 自回归循环
  • 流式输出
  • 采样策略
(3) 权重加载与执行
  • safetensors 加载
  • 模型下载
  • 模型执行
(4) 超参数配置

V1 版本 KV缓存与分页显存#

V1版本架构示意
V1版本架构示意

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

V2 版本 并发调度#

V2版本代码架构
V2版本代码架构

v2 并发调度
(1) 连续批处理
  • 静态分组处理的代价
  • V1 在并发下的主要问题
  • 连续批处理的设计动机
(2) Continuous Batching 概念
  • 自回归生成的两个阶段
  • Chunked Prefill 的设计动机
  • CB 优化哪些性能指标
  • Prefill Decode 交错执行
(3) 多请求的 KVCache
  • 共享显存池
  • 引擎拆分为模型、计算、调度三层
  • 代码重构与实现

V3 版本 单卡性能优化#

V3 版本代码示意图
V3 版本代码示意图

v3 单卡算子优化
(1) 性能瓶颈的类型
  • V2 局限与 V3 优化方向
  • 控制、模型、计算层面共同优化
  • V2 的性能瓶颈详解
  • V2 的性能瓶颈实测
(2) 分组优化
  • 输入管线优化
  • 面试快速计算模型显存开销
  • 算子融合详解
  • Attention 优化详解
  • CUDA Graph 详解
  • Prefill Compile 详解
  • Sampler 优化详解
  • 模型加载优化方案
(3) 代码实现
  • 手撕 FlashAttention 系列
  • 手撕算子融合并注册到 Compile 中
  • 优化 KVCache 读写
  • CPU 与 GPU 异步优化

V4 版本 单机多卡并行#

V4代码架构示意图
V4代码架构示意图

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

V5 版本 MoE实现与EP并行#

V5 版本代码示意图
V5 版本代码示意图

v5 MoE 接入
(1) MoE 概述
  • MoE 历史发展脉络
  • 从软混合到稀疏门控
  • Top-2 与 Top-1 的路由选择
  • 细粒度专家与共享专家
  • Qwen 系列 MoE 架构演进
  • MoE 核心推理公式
(2) MoE 路由与融合计算
  • MoE 在 Transformer 中的选择
  • MoE 的显存物理布局
  • MoE 实现及其融合与优化
  • 从"token 找专家"变到"专家找 token"
  • Grouped GEMM 在 MoE 中的设计详解
  • 融合计算与 CUDA Graph 优化
(3) 专家并行 EP
  • All-Reduce 和 All-to-All 的区别
  • TP 与 EP 的计算差异
  • 单机代码实现
(4) 性能验证
  • 验证 TP 与 EP 的输出结果与单卡下保持一致
  • 对照官方 vLLM 验证性能
  • 端到端测试 V0-V5 各项性能指标

未做的工作#

虽然我们从 V0 一路写到了 V5,但距离真实的生产级 vLLM 还有很大一段路。 这个系列的目标是在于把推理链路里的关键指标完整的理解并掌握,但由于个人精力有限,仍然有一些工作我们目前确实还没有做,期待大家在我们的项目上自行补充或者学习。

  • 标准的 OpenAI 接口
  • 模型与硬件生态
  • 权重/激活量化与KV量化
  • 投机解码
  • 完整的前缀复用与KVCache管理
  • 多机多卡的实现
  • 系统化的 bench 与 profiling 自动化脚本
  • 完整的日志监控与错误追踪

如果后续有机会,我们还会把这些项目加入到其中,dzyy-vLLM 期待着各位的参与。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
从零实现vLLM系列【0】:项目介绍
https://dlog.com.cn/posts/offer01/vllm介绍/
作者
杜子源
发布于
2026-08-25
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
杜子源
都是风景,幸会
公告
如需vLLM项目,请点击赞助第一个二维码并备注github邮箱,或者加我Q:402555241私发我截图
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
30
分类
9
标签
12
总字数
101,496
运行时长
0
最后活动
0 天前

目录