vLLM 架构总览
源码版本v0.25.1
一句话
vLLM 是一个高吞吐 LLM 推理引擎,v0.25 已切到 v1 架构:LLMEngine 是薄壳,真正核心是 EngineCore(可跑在 ZMQ 后台进程 EngineCoreProc 里),通过 EngineCoreClient(Inproc/MP/AsyncMP)对外暴露;运行时 Scheduler 做 waiting/running 队列与连续批处理、抢占,GPUModelRunner.execute_model 在 Worker 上跑前向,KVCacheManager + BlockPool 实现 PagedAttention + prefix caching,AttentionBackend 多后端抽象注意力。
分层
每层一句话
- 启动与配置:EngineArgs 解析全部启动参数,派生 VllmConfig;LLM 是离线推理类,AsyncLLM 是异步入口。
- 引擎主线 v1:LLMEngine 是薄壳,EngineCore 才是核心(组合 scheduler+worker),EngineCoreProc 把它包成 ZMQ 后台进程。
- EngineCoreClient:InprocClient(同进程)/MPClient(多进程)/AsyncMPClient,统一对上层暴露 add_request/abort 等接口。
- 调度器:Scheduler 维护 waiting/running 队列,schedule 决定这一步跑哪些请求,支持抢占和 prefill throttle。
- 执行器:Executor 抽象执行后端,UniProc/Multiproc/Ray 三种,负责起 Worker 和分布式环境。
- Worker 与 ModelRunner:Worker 持有模型和 KV cache,GPUModelRunner.execute_model 跑一次前向,ubatch 做微批,cudagraph 加速。
- 模型加载:DefaultModelLoader 加载权重,TP 线性层(ColumnParallel/QKVParallel/RowParallel)做切分,quant 层处理量化。
- KV Cache:KVCacheManager 管 block 生命周期,KVCacheCoordinator(Hybrid/Unitary/NoPrefix)定策略,BlockPool 做分配+prefix cache 索引。
- Attention 后端:AttentionBackend 抽象,FlashAttention/FlashInfer/Triton/MLA/Mamba 多后端可切换。
- 采样:Sampler forward/sample 把 logits 变 token,LogitsProcessor 做预处理。
- Prefix Cache 与分布式:prefix cache 命中复用 KV block,GroupCoordinator 管 TP/PP 通信,OpenAI serving 暴露 HTTP API。
分层动机
vLLM 把「怎么配置」(engine args)、「怎么调度」(scheduler)、「怎么执行」(executor+worker)、「怎么管显存」(KV cache)、「怎么算注意力」(attention backend)、「怎么通信」(distributed)、「怎么对外」(serving)完全解耦。这样换 attention 后端不影响调度,换执行后端(单卡/Ray)不影响 KV cache 逻辑,加 prefix cache 不改模型代码。EngineCore 是唯一的中枢,所有请求都经它流转。
常见误读
- 「vLLM 的核心是 PagedAttention」——PagedAttention 是 KV cache 管理的关键技术,但 v1 架构的核心是 EngineCore + Scheduler + 连续批处理三件套,PagedAttention 只是 KV cache 那一层的实现。
- 「LLMEngine 就是引擎」——v1 里 LLMEngine 是薄壳,真正干活的是 EngineCore,LLMEngine 主要做参数校验和 request 转发。
- 「continuous batching 和 PagedAttention 是一回事」——不是。continuous batching 是调度策略(每步都能加入/移除请求),PagedAttention 是显存管理(块状 KV cache),两者配合但独立。
推荐阅读顺序
先看 启动与配置,再看 LLMEngine 和 EngineCore,然后按 调度器 → 执行器 → Worker 与 ModelRunner → KV Cache → Attention → 采样 → 分布式与 serving 的顺序往下。