附录 A:推荐阅读路径
不同读者带着不同问题进入 vLLM 源码。下表按读者目标组织章节与源码入口,避免按目录顺序平铺。
我想理解"为什么它快"
| 顺序 | 材料 | 回答什么 |
|---|---|---|
| 1 | 第 1 章:定位与总体架构 | 进程模型与请求生命周期 |
| 2 | 第 6 章:调度器 | 连续批处理与统一 token 视角 |
| 3 | 第 7 章:PagedAttention 与 KV Cache | 块池、前缀缓存、淘汰 |
| 4 | 第 8 章:GPUModelRunner | 持久批次与 CUDA Graph |
配合源码:vllm/v1/core/sched/scheduler.py 的 schedule() 与开头注释;vllm/v1/core/kv_cache_utils.py 的 hash_block_tokens;vllm/v1/worker/gpu_model_runner.py 的 _update_states。
我想贡献调度或 KV 相关代码
- 先按上面路径建立模型;
- 第 5 章:AsyncLLM 与 EngineCore——搞清状态归属进程;
- 第 9 章:Attention 后端体系——KV 形状如何被后端改写;
- 测试即契约:
tests/v1/core/test_scheduler.py、tests/v1/core/test_prefix_caching.py、tests/v1/kv_offload/。
我想做服务化集成(网关、PD 分离、KV 缓存)
| 顺序 | 材料 | 回答什么 |
|---|---|---|
| 1 | 第 4 章:三类入口 | EngineClient 协议与渲染边界 |
| 2 | 第 10 章:采样与流式输出 | 流式语义与背压契约 |
| 3 | 第 13 章:扩展点全景 | KV Connector 协议 |
| 4 | 第 14 章:部署形态与可观测性 | 指标与 KV 事件流 |
源码入口:vllm/distributed/kv_transfer/kv_connector/v1/base.py(Connector 协议)、vllm/v1/distributed/kv_events.py(事件发布)、vllm/entrypoints/launchers/api_server/(服务装配)。
我想适配新硬件或新模型
- 第 9 章:Attention 后端体系——能力声明协议;
- 第 13 章:扩展点全景——Platform 与 Plugin 注册时机;
- 第 11 章:模型加载与量化——层实现与量化 config 协议;
- 源码入口:
vllm/platforms/interface.py、vllm/plugins/__init__.py、vllm/model_executor/layers/quantization/。
我想做投机解码研究
- 第 6 章 与 第 12 章:投机解码——统一调度模型如何吸收草稿 token;
- 源码入口:
vllm/v1/spec_decode/(提案者家族)、vllm/v1/sample/rejection_sampler.py(验证)、vllm/v1/worker/gpu_model_runner.py的take_draft_token_ids。
排查生产问题
直接读 第 14 章:部署形态与可观测性,再按症状跳转:吞吐低读 第 6 章(预算与抢占),延迟毛刺读 第 8 章(CUDA Graph 与 padding),KV 相关读 第 7 章。