vLLM 学习手册

Pages Site vLLM

一份面向大模型推理岗的工程笔记。 46 章 · 14K+ 行,从 PagedAttention 论文到 K8s 生产部署,覆盖整条链路。 每章都对照 vLLM 源码(file_path:line_number),可以"读笔记 ↔ 跳源码"无缝切换。

📖 在线阅读:jwzheng96.github.io/vllm-learning-book


这份手册解决什么问题

如果你正在做下面这些事,这是为你写的:

  • 求职准备:刷面试题前想真把 vLLM 啃一遍,不再背"PagedAttention 解决了什么"。
  • 业务接入:要上线 LLM 推理服务,要选 v0/v1、调度策略、量化方案、部署架构。
  • 性能优化:TTFT/TPOT 不达标,需要从架构层定位到内核层逐级排查。
  • 底层贡献:想给 vLLM 提 PR,先得知道 scheduler / kv manager / attention backend 怎么咬合。

适合:完全没接触过 LLM 推理 → 先看 01-overview/00-prerequisites.md 把前置概念铺平;纯 prompt engineer 不碰服务侧 → 这本太工程。


怎么用这份资料

两种打开方式:

方式 入口 适合
Markdown 直接读 本 README.md → 按章节文件名跳转 IDE 内阅读、对照源码、想在 GitHub 上读
HTML 在线版 python3 build_html.py 后开 vllm-learning-html/index.html 想要侧栏 + 全文搜索 + Mermaid 渲染 + 暗色主题 + 阅读时间提示

所有跨章链接、内嵌 Mermaid、代码块都在两种模式下都能用。HTML 版额外有 lunr.js 全文搜索和阅读时间估算。

每章统一的结构:

谁该读这一篇? ... 前置阅读: ... 耗时: N 分钟 学完能: ...

正文(含 mermaid / 表格 / 代码引用)

## 小结
## 自检(3-5 题,自答)
## 下一步(跳转推荐)

按这个节奏走,刷完整本约 25-35 小时(不含动手实验)。


学习路径

flowchart LR
    A[Week 1<br/>建立直觉<br/>~6h] --> B[Week 2<br/>吃透核心算法<br/>~8h]
    B --> C[Week 3<br/>啃源码<br/>~10h]
    C --> D[Week 4<br/>优化 / 分布式 / 生产<br/>~12h]

    A -.-> A1[01-overview]
    B -.-> B1[02-core-concepts]
    C -.-> C1[03-code-walkthrough]
    D -.-> D1[04-optimizations]
    D -.-> D2[05-distributed]
    D -.-> D3[08-production-deployment]
    D -.-> D4[09-advanced-features]

    classDef phase fill:#eff5ff,stroke:#2563eb,color:#1a1f29;
    classDef topic fill:#f7f8fa,stroke:#5b6573,color:#1a1f29;
    class A,B,C,D phase;
    class A1,B1,C1,D1,D2,D3,D4 topic;

按章节顺序读最系统。时间紧时用"最短路径":

投入时间 推荐路径
零基础 先读 01-overview/00-prerequisites.md(前置概念)再走任何一条路径
1 天(~5h) 01-what-is-vllm02-architecture01-paged-attention06-interview/01-common-questions
1 周(~15h) 精读 01-overview/ + 02-core-concepts/,跑通 vllm repo 的 examples/offline_inference/basic.py
3-4 周(~35h) 顺序读 01 → 09,每章配合源码对照(每章都标 file_path:line_number
面试速成(~8h) 01-what-is-vllm02-core-concepts/ 全部 → 06-interview/ 两篇
生产部署速成(~10h) 01-overview/02-architecture08-production-deployment/ 全部

章节索引(带钩子)

每章后面一句话告诉你为什么要读。

1. 总览 · 01-overview/ — 6 章

2. 核心概念 · 02-core-concepts/ — 5 章

3. 源码走读 · 03-code-walkthrough/ — 8 章

4. 优化 · 04-optimizations/ — 4 章

5. 分布式 · 05-distributed/ — 4 章

6. 面试 · 06-interview/ — 2 章

7. 实操 · 07-hands-on/ — 4 章

8. 生产部署 · 08-production-deployment/ — 8 章

9. 应用特性 · 09-advanced-features/ — 5 章


vLLM 仓库地标速查

想知道什么 去哪里看
用户怎么调用 vLLM vllm/entrypoints/llm.pyvllm/entrypoints/openai/api_server.py
引擎主循环 vllm/v1/engine/core.pyvllm/v1/engine/llm_engine.py
调度器(决定本步跑哪些请求) vllm/v1/core/sched/scheduler.py(2300+ 行,全核心)
KV cache 块管理 vllm/v1/core/kv_cache_manager.pyblock_pool.py
Prefix caching hash vllm/v1/core/kv_cache_utils.py:541 (hash_block_tokens)
Model runner(前向) vllm/v1/worker/gpu_model_runner.py
Attention 后端选择 vllm/v1/attention/backends/(FlashAttn / FlashInfer / Triton / MLA)
PagedAttention CUDA csrc/attention/
模型实现 vllm/model_executor/models/(llama.py、qwen.py … 共 292 个)
张量并行 / 集合通信 vllm/distributed/parallel_state.py
量化 vllm/model_executor/layers/quantization/
投机解码 vllm/v1/spec_decode/
采样 vllm/v1/sample/csrc/sampler.cu
KV transfer(disaggregated) vllm/distributed/kv_transfer/vllm/v1/kv_offload/

完整地图见 01-overview/04-project-structure.md


学习方法(5 条铁律)

  1. 概念落到代码。 不看博客的二手解读,源码才是唯一真相。
  2. 先看数据契约,再看内部。 读 Scheduler 之前先看 SchedulerOutput 的字段;读 KV manager 之前先看 KVCacheBlocks 的形状。
  3. 打 print 比读注释快。LLM("facebook/opt-125m").generate(...) 给 Scheduler、KVCacheManager 各加一句 print,跑一次就懂。
  4. 三张图刻进脑子。 请求生命周期、KV 物理↔逻辑映射、Scheduler 一步内的决策流。每张都自己画一遍。
  5. 永远做对比。 讲 vLLM 的优势,必须能讲清"HF Transformers 是怎么做的、为什么慢"。

面试自检清单

读完整套笔记后,下面每个问题应该能在 1-2 分钟内讲清,并指出对应源码位置:

  • 为什么 PagedAttention 能把吞吐提升 24×?瓶颈在哪?
  • vLLM 的 KV block 默认 16 token 是怎么选的?太大太小各有什么问题?
  • Continuous batching 和 static batching 的本质区别?为什么 GPU 利用率提升?
  • Prefix caching 的 hash 怎么算?怎么避免冲突?多模态怎么处理?
  • Chunked prefill 解决了什么?为什么 V1 默认开启?
  • Tensor parallel 在 MLP 用 column → row 的原因?AllReduce 落在哪?
  • Speculative decoding 的接受率怎么算?拒绝采样的数学推导写一遍。
  • FP8 / INT8 / INT4 各自的精度损失主要发生在哪?
  • V0 → V1 重构的三个最大改变是什么?为什么这么改?
  • KV 不够时怎么处理?V1 默认 recompute 还是 swap,为什么?

每题都有专门展开,见 06-interview/


必读资料

按阅读顺序:

  1. PagedAttention 论文 — Kwon et al., Efficient Memory Management for LLM Serving with PagedAttention, SOSP 2023。先读这篇,再读代码。
  2. Continuous Batching 博客 — Anyscale, How Continuous Batching Enables 23× Throughput
  3. vLLM 官方文档 — https://docs.vllm.ai/ ,重点看 design / kernel 章节。
  4. FlashAttention v1/v2/v3 — 理解 SRAM tiling 的关键。
  5. Speculative Decoding 论文 — Leviathan et al., 2023, Fast Inference from Transformers via Speculative Decoding
  6. EAGLE / MTP — 当下最强的投机方案系列。

构建与部署

把这份手册转成 HTML 网站、PDF、EPUB,或者部署到 GitHub Pages,看 DEPLOY.md。一键命令(脚本会自动用项目相对路径,不再依赖固定位置):

python3 build_html.py      # → ../vllm-learning-html/  (含搜索 + 暗黑切换 + Mermaid + 阅读时间)
python3 build_pdf_epub.py  # → ../vllm-learning-html/vllm-learning.pdf + .epub
./deploy_gh_pages.sh <repo-url>

如果你想把材料放别处,设环境变量 VLLM_LEARNING_SRC / VLLM_LEARNING_DST 即可。


贡献与扩展

发现 file_path:line_number 失效了?vLLM 主分支变化快,欢迎 PR 修正。

想新加一章?沿用每章统一的"章首导读 + 正文 + 小结/自检/下一步"模板(任意章可作范例)。


开始读 01-overview/01-what-is-vllm.md 或者从 00-prerequisites.md 铺前置。