vllm教程-00-前言与导读

仓库地址:https://github.com/hhk-png/cycle-agent

00 前言与导读

本章目标:说明这本教程要解决什么问题、适合谁读、按什么顺序读,以及如何亲手运行配套的 mini-vLLM 代码把原理变成可执行的代码。


1. 为什么写这本教程

vLLM 是目前最流行的开源 LLM 推理与 serving 引擎,但它也是一个相当复杂的系统:分页 KV cache、连续批处理、投机解码、量化、多卡并行、OpenAI 兼容服务......如果只把它当成一个"黑盒"来调用,遇到问题会无从下手。

这本教程的目标有两个,且缺一不可:

  1. 读懂原理:把 vLLM 的核心机制讲透------它为什么快、内存如何管理、调度器在做什么、服务架构长什么样。
  2. 亲手实现 :配套一个自包含、可运行、纯 NumPy 实现的 mini-vLLM,把论文和源码里最难懂的部分(PagedAttention、调度器、前缀缓存、抢占、投机解码)用几百行可读代码复刻出来。

一句话概括:"原理 + 代码"双线并行。 看懂 vLLM 不是靠背 API,而是能自己把核心机制重新造一遍。


2. 你将学到什么

读完这本教程,你应该能回答以下问题:

  • PagedAttention:KV cache 为什么会产生内存碎片?分块 + 块表(block table)如何消灭碎片?和操作系统的分页有什么区别?
  • Continuous batching:为什么静态批处理浪费 GPU?iteration-level 调度如何让 GPU 时刻满载?
  • KV cache 管理:前缀缓存、copy-on-write、recompute 抢占、chunked prefill 各解决什么问题?
  • 采样与解码参数:temperature / top-k / top-p / 惩罚项 / beam search / 引导解码各改了什么?如何调出想要的行为?(第 05 章)
  • 服务架构LLMEngine / AsyncLLMEngine / 调度器 / Worker 之间如何协作?OpenAI 兼容 server 如何把 HTTP 请求变成引擎 step?
  • 量化:weight-only 量化的原理,vLLM 的 GPTQ / AWQ / FP8 支持。
  • 投机解码:draft + verify 为何能"无损"加速?EAGLE、Medusa 等方案怎么提升接受率?
  • 部署:多卡并行(张量并行 / 流水并行)、显存调优、指标监控、生产上线。
  • 未来方向:PD 分离、MLA、MoE、长上下文等正在发生的变化(详见《12-未来方向.md》)。

3. 阅读前置要求

知识 要求 说明
Transformer / LLM 基础 必须 知道 attention、自回归解码、KV cache 是什么
Python 必须 能读懂类、装饰器、生成器、asyncio 基本用法
NumPy 建议 本教程代码用纯 NumPy,熟悉 np.einsum、广播即可
PyTorch 建议 知道 nn.Module.state_dict(),便于对照 vLLM 源码
CUDA 可选 不写 CUDA 内核也能读懂;了解即可提升源码阅读体验

如果你完全不懂 Transformer,建议先花半天过一遍 Transformer 的基本结构(embedding、多头注意力、前馈网络、LayerNorm)再回来。


4. 章节地图

标题 一句话摘要
00 前言与导读 教程目标、阅读方法、配套代码怎么跑(本章)
01 认识 vLLM vLLM 是什么、解决什么问题、与其它框架对比
02 核心原理 prefill/decode、KV cache、PagedAttention、连续批处理、前缀缓存、抢占、投机解码、量化
03 架构设计 LLMEngine、Scheduler、BlockManager、ModelRunner、并行执行、数据流
04 快速上手 安装、LLM 离线推理、vllm serve 在线服务、OpenAI API
05 采样与解码参数 温度/top-k/top-p、惩罚项、beam search、logprobs、引导解码/结构化输出
06 从零实现 mini-vLLM 用纯 NumPy 复刻核心机制,逐模块精读配套代码
07 调度与连续批处理 迭代级调度、token 预算、分块 prefill、抢占与状态机
08 性能优化 PagedAttention kernel、CUDA graphs、显存调参、并行策略、benchmark
09 量化 weight-only vs W8A8、GPTQ / AWQ / FP8 / GGUF、KV cache 量化
10 生产部署 OpenAI 兼容服务、Docker、Kubernetes、可观测性、结构化输出、多 GPU
11 生态与集成 HF 生态、OpenAI SDK、LangChain/LlamaIndex、Ray、自定义模型接入
12 未来方向 PD 分离、MoE 优化、注意力架构演进、长上下文
13 常见问题与 FAQ 安装、加载、显存、性能、服务的速查手册
14 分布式推理与多卡部署 TP/PP/EP/DP 原理与通信代价、Ray 集群、多机部署、并行策略选型
15 多模态与 LoRA 推理 视觉语言模型的多模态输入、LoRA 适配器推理
16 附录 A:环境变量与参数参考 环境变量、CLI 参数按主题分组速查,EngineArgs ↔ 配置对象映射
17 附录 B:内存估算与容量规划 显存三大部分、KV 预算公式、从目标并发反推参数的完整实例
18 附录 C:mini-vLLM 完整工程参考 完整 API 参考、关键数据约定、验证矩阵、9 个练习(含 1 个热身)、调试指南
19 模型架构基础 MHA/MQA/GQA/MLA、RoPE/ALiBi、RMSNorm/SwiGLU、MoE,vLLM 支持的架构速查
20 端到端部署案例 从零把一个模型跑成生产服务:选型→容量规划→部署→接入→压测→监控
21 附录 D:性能基准测试与调优指南 压测方法论:指标定义、工具链、负载设计、结果解读与调优循环
22 附录 E:术语表 全教程关键词速查:十个主题分组 + 拼音/字母索引,随手定位术语与章节

第 06 章是全书"动手"的高潮:它会带着你逐行阅读 mini-vllm/ 下的源码,并把每个模块映射回 vLLM 的真实文件。

第 14、15 章是两个"进阶专题"(分布式并行、多模态与 LoRA),按需选读;第 16、17、18、21、22 章是五份"参考手册" (参数 / 显存 / 工程 / 压测 / 术语),适合在实操时按需翻阅,不需要顺序精读。其中第 18 章(附录 C)是 mini-vLLM 的"工程手册"------想让实现"会改、能扩展",读它;第 21 章(附录 D)是"压测手册"------想给服务建立一套可复现的基准测试与调优流程,读它;第 22 章(附录 E)是"术语手册"------被陌生词绕晕时随手查它。

第 19 章(模型架构基础)与第 20 章(端到端部署案例)是本教程的"纵深补充":前者把 MHA/GQA/MLA、RoPE、MoE 等决定 KV cache 与内核的架构知识讲透,后者给出一条可以照做的完整部署路线。读完主干之后,这两章分别回答"模型为什么是这样"与"怎么把它跑成产品"。

4.1 教程内容全景图

把整本教程放在一张图上,主线是 原理 → 实现 → 工程 → 生态 → 未来 → 参考

复制代码
 ① 原理地基      00 导读 → 01 认识 vLLM → 02 核心原理 → 03 架构设计
                             │
 ② 亲手实现      04 快速上手 → 05 采样与解码参数 → 06 从零实现 mini-vLLM → 07 调度与连续批处理
   (mini-vLLM)              │                                  │
                             ▼                                  ▼
 ③ 工程纵深      08 性能优化 → 09 量化 → 10 生产部署 ──────────► 20 端到端部署案例
                             │
 ④ 生态与前沿    11 生态与集成 → 12 未来方向 → 13 常见问题 FAQ
                             │
 ⑤ 进阶专题      14 分布式多卡 / 15 多模态与 LoRA / 19 模型架构基础
                             │
 ⑥ 参考手册      16 附录A 参数 / 17 附录B 显存 / 18 附录C 工程 / 21 附录D 压测 / 22 附录E 术语

读图要点:

  • ①② 是主干:必须读。02 讲机制、06 把机制变成可跑代码。
  • ③ 是工程纵深:想让部署有谱,至少过一遍 08 与 20。
  • ④⑤ 按需:生态集成(11)、未来方向(12)、进阶专题(14/15/19)互不依赖。
  • ⑥ 是字典:遇到具体问题再翻,不必顺序读。21 章(附录 D)放在这里,因为压测是为"性能调优"服务的,需要在 08 章之后读效果最好。

4.2 本教程如何覆盖"现状与未来"

vLLM 是快速演进的项目,教程刻意把"现在能跑的东西"和"正在发生的变化"分开讲,避免把临时的实现细节当成长久标准:

层次 教程内容 对应章节
当下的真实实现(mini-vLLM) 纯 NumPy 复刻的骨干机制:分页 KV、连续批处理、前缀缓存、抢占、投机解码、int8 量化 第 06 章逐行精读 + 第 18 章附录 C 工程手册
当前 vLLM 的真实功能 V0/V1 引擎、调度器、OpenAI 兼容服务、量化、TP/PP/EP、多模态、LoRA、引导解码 第 01--11 章(以 2024--2025 年稳定特性为主线)
未来方向(演进中) PD 分离、MLA、MoE 优化、长上下文、更强的投机方案 第 12 章 + 第 19 章架构基础

一句话:mini-vLLM 是"原理的骨架",真实 vLLM 是"完整的血肉",第 12 章是"看它往哪长"。 三者对照阅读,既不会被细节淹没,也不会把过时行为当成现状。


5. 如何使用本教程

5.0 按目标选路线:四条学习路径

这本教程信息量很大,按你的目标选一条主线最有效率:

路线 目标 必读章节 怎么走
🧭 原理路线 真正理解 vLLM 为什么快 00 → 01 → 02 → 03 → 07 → 12 第 2 章是地基;第 7 章讲吞吐的灵魂;第 12 章看趋势
🛠️ 工程路线 看懂 / 改写 serving 引擎代码 00 → 02 → 03 → 06 → 18 第 6 章逐行读 mini-vLLM,然后立刻做第 18 章附录 C 的扩展练习 0--3
🚀 实战路线 快速部署到生产 00 → 04 → 05 → 08 → 10 → 13 → 16 → 17 → 20 先第 4 章跑起来;遇到问题翻第 13 章 FAQ 和 16/17 章两个附录;最后用第 20 章跑一遍完整部署
🎯 进阶路线 跑多卡 / 多模态 / 量化 09 → 14 → 15(配合 05、19) 按需选读,不必按顺序;第 14、15 章是独立专题,架构基础见第 19 章

新手如果拿不准,走原理路线 ,它能给你最稳的地基;想动手改代码,随时跳到工程路线

5.1 顺序阅读(推荐)

如果你是从零开始的读者,按 00 → 01 → 02 → ... → 13 的顺序读:前四章建立理论,05 章掌握采样与解码参数,06 章动手实现,07--10 章看工程细节,11--13 章看生态、前沿与实战;14、15 两章是进阶专题(分布式并行、多模态与 LoRA),16、17、18、21、22 五章是参考手册(参数、容量、mini-vLLM 工程手册、压测、术语)在实操时按需查阅,19 章(模型架构基础)在遇到架构术语时查阅,20 章(端到端部署案例)在准备上线时作为完整范本照做。

5.2 跳读

如果你已经有 vLLM 使用经验,可以:

  • 直接读 06 章,对照代码看实现;
  • 想调好生成质量,读 05 章采样与解码参数
  • 遇到具体报错,直接翻 13 章 FAQ
  • 查环境变量 / CLI 参数,翻 16 章附录 A
  • 算显存 / 规划并发,翻 17 章附录 B
  • 想弄懂模型架构(GQA/MLA/RoPE/MoE),读 19 章模型架构基础
  • 想完整部署一个真实服务,照 20 章端到端部署案例做一遍;
  • 想了解趋势,读 12 章未来方向
  • 想上多卡 / 多机,读 14 章分布式推理与多卡部署
  • 想跑多模态 / LoRA,读 15 章多模态与 LoRA 推理
  • 想给 mini-vLLM 加特性 / 查它完整 API / 做扩展练习,翻 18 章附录 C
  • 想系统化地压测 / 调优一个服务的性能,读 21 章附录 D 性能基准测试与调优指南(先读完 08 章效果更佳);
  • 被术语绕晕 / 想快速复习,翻 22 章附录 E 术语表------每个词条都标注了对应章节,是阅读时的"随身词典"。

5.3 一边读一边跑代码

原理文字难免抽象,强烈建议边读边跑。所有代码位于:

复制代码
vllm-toturial/
  00-前言与导读.md  01-认识vLLM.md  ...  13-常见问题与FAQ.md
  mini-vllm/                          # 可运行的迷你实现
    minivllm/                         # Python 包(engine / scheduler / kv_cache / api_server...)
    scripts/train.py                  # 训练 tiny GPT 并保存 checkpoint
    tests/                            # 单元测试(engine / paged-attention / server)
    artifacts/tinygpt/                # 训练产物(config.json / model.npz / tokenizer.json)

先安装依赖并进入目录:

bash 复制代码
git clone git@github.com:hhk-png/cycle-agent.git   # 或直接进入已有的 vllm-toturial/
cd vllm-toturial/mini-vllm
pip install numpy fastapi uvicorn httpx pytest   # 或 pip install -e .[test](见 pyproject.toml)

依赖极简:运行时只需 numpyfastapiuvicorn,测试还需 httpxpytest;无需 CUDA、无需 PyTorch,普通 CPU 笔记本即可跑通(Python ≥3.10 即可,教程撰写环境为 Python 3.14 + NumPy 2.x)。

依次运行:

bash 复制代码
# 1) 训练一个小型 GPT 模型(纯 NumPy,约 6 分钟),输出到 artifacts/tinygpt/
python scripts/train.py --steps 400 --embd 96 --layers 3 --out artifacts/tinygpt
#    (省略参数会产出更小的模型,几十秒即可完成)

# 2) 运行端到端测试,验证引擎正确性(确定性、批处理等价、chunked prefill、前缀缓存、抢占)
python tests/test_engine.py

# 3) 启动 OpenAI 兼容服务
python -m minivllm serve --model artifacts/tinygpt --port 8000
# 另开一个终端测试:
curl http://localhost:8000/v1/completions \
  -H "Content-Type: application/json" \
  -d '{"prompt":"vLLM is","max_tokens":32}'

其它可玩命令:

bash 复制代码
python -m minivllm chat   --model artifacts/tinygpt   # 交互聊天
python -m minivllm demo   --model artifacts/tinygpt   # 连续批处理演示(打印每一步)
python -m minivllm spec   --model artifacts/tinygpt   # 投机解码演示(打印接受率)
python -m minivllm quant  --model artifacts/tinygpt   # int8 权重量化前后对比

6. 配套代码:mini-vLLM 是什么

mini-vllm/ 是一份自包含、可运行、纯 NumPy 写的 vLLM 迷你复刻(约 3000 行,含测试)。它不是玩具:它真正实现了 vLLM 的骨干机制,只是把 GPU 内核换成了可读的 NumPy 数组运算:

mini-vllm 文件 对应 vLLM 真实模块 内容
minivllm/kv_cache.py vllm/core/block_manager_v1.py + vllm/worker/model_runner.py 分页 KV store、块分配器、前缀缓存、块表、copy-on-write
minivllm/scheduler.py vllm/core/scheduler.py 连续批处理、chunked prefill、recompute 抢占
minivllm/attention.py vllm/attention/ops/paged_attn.py 纯 NumPy 版 PagedAttention
minivllm/engine.py vllm/engine/llm_engine.py 引擎主循环:add_request / step / generate
minivllm/api_server.py vllm/entrypoints/openai/api_server.py FastAPI + /v1/completions/v1/chat/completions
minivllm/speculative.py vllm/spec_decode/ 投机解码(bigram draft + target verify)
minivllm/quantize.py vllm/model_executor/layers/quantization/ int8 weight-only 量化

这份代码本身就是教材的一部分:第 06 章会带着你逐行读它 ,每份文件都有详尽的中文注释和与真实 vLLM 的对照说明。读完第 06 章后,第 18 章(附录 C)提供完整 API 参考、关键数据约定、验证矩阵与 9 个由浅入深的练习(含 1 个热身)------它是把"读懂"升级为"会改"的工程手册。


7. 学习建议与约定

  • 先跑起来,再深挖 :能跑通 python scripts/train.pypython tests/test_engine.py 后,你对该系统就有"手感"了。
  • 善用测试tests/test_*.py 既是回归测试也是文档------test_chunked_prefill_matches_full 验证"分块 prefill 不改变输出",test_paged_attention 把分页注意力与稠密注意力对拍。
  • 对照真实源码:每个 mini-vllm 模块顶部都标注了对应的 vLLM 真实路径,读 mini 版时遇到疑问就翻真实源码。
  • 示例命令 统一在 mini-vllm/ 目录下执行;教程中的路径均为相对 vllm-toturial/mini-vllm/ 的相对路径;版本以 vLLM 2024--2025 年稳定特性为主线。

8. 小结

  • 本教程 = 原理 + 动手,配套一份可运行的纯 NumPy mini-vLLM。
  • 核心议题:PagedAttention、连续批处理、KV cache 管理、OpenAI 兼容服务、量化、投机解码、部署、未来方向。
  • 前置要求:Transformer 基础 + Python + 一点 NumPy/PyTorch;CUDA 可选。
  • 打开第一章的姿势:先 python scripts/train.pypython tests/test_engine.py 把代码跑起来,再按章节顺序读。

准备好了就开始:下一章《01-认识vLLM.md》带你认识这个引擎本身。

相关推荐
AI情绪识别开源20 分钟前
检信AI高一分班分科智选评估系统 v2.0测试报告
开发语言·数据结构·人工智能·科技
陆枫Larry25 分钟前
修复问题复盘prompt 分享
人工智能
IT毕设实战小研31 分钟前
电影数据可视化推荐系统
大数据·后端·爬虫·python·算法·信息可视化·课程设计
且随疾风前行.35 分钟前
从驱动来分析服务的添加过程
算法
晚风醉蝶40 分钟前
DeepSeek 大模型落地应用与场景实践指南
大数据·人工智能
缘友一世1 小时前
GLM-5.3-NVFP4 部署实战系列[二]Docker 镜像选择与补丁镜像构建:纯 Python overlay,不重编一行 CUDA
python·docker·容器·vllm
CoderYanger1 小时前
A.每日一题:输入单词需要的最少按键次数 Ⅰ+Ⅱ
java·数据结构·算法·leetcode·面试
武子康1 小时前
把生产 Agent 事故 Trace 变成可重放的回归测试集
人工智能·llm·agent