Skip to content

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),兩者配合但獨立。

推薦閱讀順序

先看 啟動與配置,再看 LLMEngineEngineCore,然後按 排程器執行器Worker 與 ModelRunnerKV CacheAttention採樣分佈式與 serving 的順序往下。

對照官方資料:vLLM 文件 · 設計文件 · GitHub