Appearance
架构概览 — 概念
分层架构
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):
| 配置 | 文件 | 职责 |
|---|---|---|
VllmConfig | config/vllm.py | 主配置聚合器 |
ModelConfig | config/model.py | 模型名称、dtype、最大长度 |
ParallelConfig | config/parallel.py | TP/PP/DP/EP 并行配置 |
SchedulerConfig | config/scheduler.py | 最大 token 数、批大小 |
CacheConfig | config/cache.py | KV 缓存块大小、swap 空间 |
CompilationConfig | config/compilation.py | torch.compile、CUDA Graph 设置 |
数据流:请求生命周期
V1 架构改进
V1 架构相较于旧版的主要改进:
- EngineCore 独立进程:调度与 API 服务解耦,避免 GIL 竞争
- ZMQ IPC 通信:高效进程间数据传递
- 统一的 Scheduler:合并了旧版的多个调度逻辑
- CUDA Graph 全面集成:decode 阶段零开销图重放
- torch.compile 支持:自动算子融合与优化
相关概念
- topics/engine-core/ — 引擎核心的详细实现
- Continuous Batching — 连续批处理调度策略
- CUDA Graph — CUDA 图捕获与重放机制
- Flash Attention — 高效注意力计算内核
- Paged Attention — 分页 KV 缓存管理