vLLM V1 架构深度解析与性能优化实践
大模型推理无疑是当前人工智能领域非常重要的一个细分领域,随着开源社区的快速发展,诞生了非常多优秀的工作。其中,vLLM、SGLang、LMDEploy 等开源社区更是其中的翘楚。
vLLM 作为大模型推理领域现象级的开源项目,从开源伊始便收获无数 Star,形成了庞大且活跃的社区。然而,随着项目的迅速发展,社区不可避免地开始累积一些'技术债',简单来说就是 vLLM 不够'快'了。今年 7 月底,SGLang 社区一篇略带挑战意味的文章展示出几乎 3 倍的性能优势(离线场景下)。这让 vLLM 社区开始正视性能问题,并在今年 9 月初通过 v0.6.0 重回开源推理引擎性能的第一梯队。
'V1'的由来
今年 9 月底,vLLM 社区提出了新架构'V1',旨在彻底解决目前的'技术债'。这是 vLLM 社区目前在积极开发的一个全新引擎架构,可以说是脱胎换骨,截至目前已经初具规模。'V1'要解决的很多问题以及解决方案在业界也有一些实践,非常有共鸣,因此有必要深入分析其设计思路。
'V0'存在的问题
vLLM 刚开始最为人所知的是 Paged Attention 和 Continuous Batching 这两个特性。
连续批处理机制
它的 Continuous Batching 实现是在每次 Forward 之前,由 Scheduler 决定下一个 Batch 由哪些 Request 组成。这个 Batch 将随后被 Copy 到 GPU Memory 并 Broadcast 到各个 GPU,执行 GPU 计算。计算结果通常在 GPU 0 上进行采样,得到本轮迭代生成的 Token。而后,这些 Token 将会通过 Detokenizer,得到对应的字符串。vLLM 将会用这些 Token 和字符串更新每一个 Request 的状态,为下一次 Forward 做好准备。
CPU-GPU 同步瓶颈
在这个简化后的推理流程中,有一些非常耗时的 CPU 操作,比如 Scheduling、Prepare Batch、Broadcasting、Detokenizing 等等。在这些操作发生时,GPU 是空闲的。这意味着 vLLM'V0'的 GPU 只有 50%-60% 的时间在工作,其他时间都在围观 CPU 干活。
简而言之,随着 GPU 越来越快,一切 CPU 操作和通信操作都应该尽可能避免,或者和 GPU 计算 Overlap 起来!
'V1'的新思路
'V1'在系统设计层面针对性地去解决了上述问题,主要通过以下三个核心改进来实现:
异步调度 (Async Scheduling)
对于 Scheduling、Prepare Batch 这两个耗时的操作,'V1'计划引入一种异步调度机制。在 GPU 正在计算第 N 个 Batch 时,提前调度并准备第 N + 1 个 Batch。这种机制允许 CPU 端的准备工作与 GPU 端的计算任务并行执行,从而掩盖 CPU 操作的延迟。
虽然目前这个功能还没有合并到主干分支,但其设计思想已经明确:将控制平面的开销从数据平面的关键路径上剥离出来。
状态化 Worker (Stateful Worker)
在'V0'中,vLLM 推理引擎的所有状态都是在 Scheduler 中维护的,这些状态包括每一个请求的 Tokens、采样参数、Block Table 等。在准备 Batch 和 Broadcast 时,这些状态都需要被 Copy 到 GPU 并广播到其他的 GPU 上。
如果我们连续观察几个 Batch,我们会发现很大一部分数据是重复的。举例来说,每一个请求的 Block Table 在相邻的 Batch 往往是一样的。因此,为了减少数据传输,我们完全可以把引擎的状态复制到每个 Worker 上!
这种 Stateful Worker 的设计减少了跨节点或跨设备间的大规模状态同步开销,显著降低了通信延迟。
独立 Detokenizer 进程
Detokenizer 的作用是将 Forward 输出的 Token 转化为对应的字符串。而我们知道,LLM 的输入是 Token,这些字符串实际上并不是下一轮计算所必须的。因此在'V1'中,Detokenizer 不再和 Engine 处于同一个进程。
架构大致变成了这样:新 Token 生成后,一方面交给 Scheduler 进行下一个迭代,同时也交给 Detokenizer 进程解码,将结果发送给用户。这种解耦使得计算密集型任务和 IO 密集型任务分离,进一步提升了系统的吞吐量。
总结
总结一下,'V1'是 vLLM 社区为了彻底解决性能问题的一次巨大重构,涉及了 vLLM 的大多数模块。社区仔细分析了'V0'存在的诸多问题,并逐一提出了解决对策。在 GPU 越来越快的当下,'V1'的存在是为了让 GPU 的性能提升最大化地表现在推理效果上。
关键技术点回顾
- Paged Attention:通过虚拟内存管理技术,有效利用显存,支持更大的 Context Window。


