vLLM V1 整体流程|从请求到算子执行
文章目录
一、引言
vLLM V1 是 vLLM 团队基于 V0 的实践经验并参考工业界其它相关工作提出的最新架构,从 vLLM 0.8.x 版本开始,V1 Engine 将作为 vLLM 启动时的默认选项。
相比于 V0,vLLM V1 具有以下优势:
- 可读性:代码更加简洁易懂、更加模块化;
- 高性能:提供更好的推理性能,使用双进程异步处理不同的 CPU 操作,极大地降低了推理的时延和开销;
- 易扩展:可以轻松集成多样化的特性;
- 易用性:简化了配置,会默认开启一些特性,以提供更好的性能和体验。
下面,本文将揭秘 vLLM V1 从接收请求到算子执行的推理全流程(附超长流程图,画图不易,欢迎点赞 & 收藏~)。
二、整体概览
在深入具体细节之前,让我们先从整体上认识下 V1 Engine 的推理流程。
下面是 vLLM 官方博客中提供的 V1 Engine 在线推理架构图。在 V1 中,vLLM 将不同类型的 CPU 密集型操作拆分到了两个相互独立的进程中,以便能够异步执行不同的 CPU 操作,减少了不同步骤之间相互等待的时间,因此能够更好地压榨硬件的计算性能。
Process 0
主要负责请求的预处理(如:参数校验)、Tokenization 以及 Detokenization 等操作;Process 1
主要负责请求的调度和模型推理等操作。
在优化前(V0),Process 0
和 Process 1
中的操作顺序执行,因此存在许多 CPU 空闲等待的时间,而在 V1 中则是并行执行上面两个进程中的操作,因此极大地提升了整体的推理效率。
下面,本文将基于 vLLM v0.8.5,并以 Qwen 模型的离线推理为例(在线推理类似,本文不再详细展开,请自行阅读源码了解),深入剖析 vLLM V1 自顶向下的推理全流程。
先上图,一切尽在图中~
高清图片链接:link,画图不易,走过路过欢迎点一个 Star!