Workflow
延迟
icon
搜索文档
深度拆解,硬核解构,揭开vLLM推理系统实现高效吞吐的秘籍
机器之心· 2025-10-26 12:03
文章核心观点 - vLLM是一套针对大语言模型推理优化的高性能开源推理框架,通过创新的显存管理、并行调度和KV缓存技术,在保持模型准确性的同时大幅提升吞吐量与响应速度[1] - 该博客文章对vLLM的架构、代码和原理进行了深入分析,涵盖了从基础推理流程到高级功能、扩展能力和分布式系统部署的完整技术栈[3][4][6] - 文章采用倒金字塔结构写作方式,从宏观层面入手逐步深入细节,帮助读者建立对整个系统的清晰整体认知而不被繁琐技术细节淹没[6] LLM引擎核心架构 - LLM引擎是vLLM的核心构建模块,单独使用时能够实现高吞吐量推理但仅限于离线场景[7][8] - 引擎构造函数包含多个子组件:vLLM配置、处理器、引擎核心客户端、输出处理器、模型执行器、结构化输出管理器和调度器[14][15] - 调度器内部包含策略设置、等待队列与运行队列以及KV缓存管理器,其中KV缓存管理器维护一个可用KV缓存块的池子,数量可达几十万甚至更多[16] - 模型执行器在构造过程中会创建Worker对象并执行三个关键步骤:初始化设备、加载模型和初始化KV缓存[19][20][21] 推理流程与调度机制 - Generate函数处理每个提示词时创建唯一请求ID并记录到达时间,通过输入预处理器进行分词后打包成EngineCoreRequest传递到引擎核心[24][25][29] - 每个推理步骤包含三个阶段:调度阶段选择本步骤要执行的请求,前向传播阶段运行模型并采样新token,后处理阶段进行去分词和停止条件检查[32][33][34][35] - 推理引擎主要处理两类工作负载:Prefill请求对所有提示token执行一次前向传播通常是计算受限的,Decode请求仅对最新生成的一个token执行前向传播是内存带宽受限的[38] - V1调度器可以在同一个step中混合处理prefill与decode请求,优先处理decode请求,调度器会计算需要生成的新token数并调用KV-cache管理器的allocate_slots函数[39][40][41][42] 高级功能特性 - 分块预填充将预填充步骤拆分为更小块执行,避免长提示词请求独占计算资源,通过设置long_prefill_token_threshold正整数启用[57] - 前缀缓存避免重复计算多个提示词开头部分共享的token,当提示词长度超过一个KV-cache块(默认16个token)时可显著加快预填充请求速度[62][70][73] - 引导式解码在每一步解码时通过基于语法的有限状态机对logits进行约束,确保只有符合语法规则的token被采样,支持正规文法和上下文无关文法[93][94][97] - 推测解码通过引入较小草稿模型快速生成k个候选token,然后使用大模型进行验证,在统计上等价于标准自回归解码但潜在更快[106][107][112] 系统扩展与分布式部署 - 从UniProcExecutor扩展到MultiProcExecutor支持多GPU进程,通过张量并行将模型分片到同一节点多张GPU上,节点内带宽显著高于节点间带宽[141][143][149] - 分布式系统部署示例使用两台8×H100节点,一台以headless模式运行引擎,另一台作为API服务器,通过数据并行在多个节点上复制模型[153][156] - API服务节点实例化AsyncLLM对象创建DPLBAsyncMPClient,通过FastAPI应用暴露OpenAI兼容接口,整个堆栈通过Uvicorn对外提供服务[172][175] - 完整请求生命周期从终端发送请求到API服务器,经过负载均衡选择引擎,执行推理步骤后将结果返回,复杂分布式系统对用户透明[177][183] 性能测量与基准测试 - 推理系统性能有两个互相制约的指标:延迟从请求提交到返回token的时间对交互式应用重要,吞吐量系统每秒能够生成或处理的token/请求数量对离线工作负载关键[185][186][189] - 常见推理性能指标包括TTFT从请求提交到接收第一个输出token的时间,ITL两个连续token之间的时间,TPOT请求中所有输出token的平均ITL,以及端到端延迟[190] - vLLM提供CLI工具vllm bench {serve,latency,throughput}进行基准测试,latency脚本使用短输入并生成128个输出token,throughput脚本一次性提交固定prompt集测量吞吐量[196][197] - 延迟和吞吐量存在竞争关系,当批大小B较小时每个token的间隔延迟下降,当B增大时间隔延迟上升但吞吐量提高直到达到峰值性能[192][193]