Skip to content

架构概览 — 概念

分层架构

vLLM 采用清晰的分层设计,各层之间通过定义良好的接口通信:

核心组件

EngineCore

topics/engine-core/ 是 vLLM V1 架构的心脏,运行在独立进程中:

  • 接收来自前端(AsyncLLM/LLMEngine)的请求
  • 每轮迭代调用 Scheduler 决策
  • 通过 Executor 分发到 Worker 执行模型推理
  • 通过 ZMQ 与前端进行进程间通信

Scheduler

调度器 是系统的大脑,负责:

  • 连续批处理Continuous Batching):动态插入新请求,移除已完成请求
  • Chunked Prefill:将长 prompt 的 prefill 拆分为多个 chunk
  • 前缀缓存Prefix Caching):复用共享前缀的 KV 缓存块
  • 抢占与交换:在显存不足时抢占低优先级请求

Worker 与 ModelRunner

Worker 是执行层的核心抽象:

  • GPU Worker:管理 CUDA 设备初始化、模型加载、KV 缓存分配
  • CuMemAllocator:CUDA 内存池分配器,现在作为独立特性(enable_cumem_allocator),不再与 sleep mode 耦合
  • ModelRunner(vllm/v1/worker/gpu_model_runner.py):执行前向传播,管理 CUDA Graph、LoRA、推测解码集成
  • Mamba 推测解码:融合 Triton 内核消除了 CPU-GPU 同步瓶颈

配置系统

vLLM 的配置系统基于 VllmConfig,聚合了 30+ 子配置(dataclass):

配置文件职责
VllmConfigconfig/vllm.py主配置聚合器
ModelConfigconfig/model.py模型名称、dtype、最大长度
ParallelConfigconfig/parallel.pyTP/PP/DP/EP 并行配置
SchedulerConfigconfig/scheduler.py最大 token 数、批大小
CacheConfigconfig/cache.pyKV 缓存块大小、swap 空间
CompilationConfigconfig/compilation.pytorch.compile、CUDA Graph 设置

数据流:请求生命周期

V1 架构改进

V1 架构相较于旧版的主要改进:

  1. EngineCore 独立进程:调度与 API 服务解耦,避免 GIL 竞争
  2. ZMQ IPC 通信:高效进程间数据传递
  3. 统一的 Scheduler:合并了旧版的多个调度逻辑
  4. CUDA Graph 全面集成:decode 阶段零开销图重放
  5. torch.compile 支持:自动算子融合与优化

相关概念