基于 vLLM 的大模型推理服务秒级扩缩容的工程优化实践

大模型推理服务在规模化落地过程中,面对流量突发、模型切换与节点故障等场景,如何实现秒级扩缩容与快速恢复,成为决定在线推理服务快速响应和长稳运行的关键挑战。

在 Qwen3-235B-A22B 等超大模型的推理服务实践中,百度智能云混合云团队基于 vLLM 框架,在扩容和容灾场景下,将推理服务拉起时间压缩到「几秒级」——模型权重可在约 2 秒内完成加载,采用预留的守护实例后,不到 5 秒即可对外提供服务。即便在集群没有空闲资源的情况下,也能将传统需要近 10 分钟的冷启动流程显著缩短到 2 分钟以内。

本文我们基于 vLLM 推理框架,结合 Qwen3-235B-A22B 的实践案例,对大模型推理服务的冷启动路径进行拆解与分析,并介绍我们在模型权重加载、编译缓存、CUDA graph 捕获以及实例调度等关键环节上的优化思路。

1. 大模型推理冷启动开销分析

传统的 Kubernetes 水平 Pod 自动扩缩方案,本质仍停留在 Pod 层级的资源调度与生命周期管理。在这一模式下,平台只能通过镜像预铺、节点预热等手段缩短容器启动时间,却无法深入推理引擎内部,对模型权重加载、GPU 内核 JIT 编译、CUDA Graph 捕获等关键启动流程进行优化。这就导致在 Kubernetes 体系内,即便完成资源调度后,从 0 拉起一个大模型推理服务仍需经历完整的冷启动流程,整体耗时近 10 分钟,且该延迟会随模型参数规模扩大而进一步加剧,难以支撑大模型推理服务对快速扩缩容与快速恢复的现实需求。

完全冷启动一个 Qwen3-235B-A22B 模型的推理服务的流程及各步骤耗时统计如下:

可以看出:大模型推理服务的冷启动流程中:Load Model Weight(模型权重加载)、torch.compile 编译、CUDA Graph 捕获以及 import package 占据了主要耗时。这些流程是大模型推理引擎在保障推理性能与吞吐能力时所必需的基础能力:

  • Load Model Weight:是将 .safetensors 的模型权重从磁盘加载到显存中的对应位置,其决定了推理计算是否能够在显存中高效展开;

  • torch.compile 编译:通过 JIT 编译将模型代码转换为高效执行的计算图,显著降低了推理过程中的调度与解释开销;

  • CUDA graph capture:通过消除 CPU-GPU 同步开销和内核启动延迟,使得显著提升深度学习推理和训练的性能;

  • import packages:服务启动时将依赖库文件从磁盘加载到内存并完成初始化,为后续推理流程建立基础运行环境。

因此,大模型推理服务优化的核心目标:就是在不牺牲推理性能的基础上降低冷启动耗时,保证大模型推理服务的快速扩缩容与快速容灾。

2. 推理服务启动流程优化

基于上述目标,我们首先聚焦启动流程中最耗时的关键环节,开展针对性优化与耗时削减:通过跨实例模型权重加载加速、跨实例中间状态复用、延迟 CUDA graph 捕获、基于 Fork 的多进程初始化加速等核心手段,优化推理服务启动路径。

在此基础上,我们进一步利用集群空闲资源,引入守护实例机制,将启动流程所需的 CUDA 上下文持久化保留在 GPU 显存中。这一设计可大幅压缩启动流程中各项初始化、编译以及 CUDA graph 捕获的耗时,再结合模型权重加载加速,实现启动全流程的加速闭环,最终显著提升扩容及故障恢复场景下的响应效率。

2.1. 跨实例的模型权重加载加速

在大模型推理服务扩容过程中,模型权重加载是冷启动中最主要的耗时来源之一。传统加载方式需要从磁盘读取数据,经由 CPU 内存再拷贝到 GPU 显存。特别是磁盘到 CPU 内存的读取速度较低,严重限制了整体加载效率。此外,不同扩容场景下,权重传输所面临的硬件条件并不相同:既可能发生在同一台机器的 GPU 之间,也可能发生在跨节点的 GPU 集群之间。

因此,我们根据机内与机间的不同拓扑条件,分别采用了 NVLink 与 RDMA 等高速网络技术作为权重加载的底层方案,从已有节点直接将权重同步到目标 GPU,整个过程中只需一次 NVLink 或 RDMA 传输,避免了传统「磁盘 → 内存 → 显存」的低效路径。

整体流程如下图所示:

原实例的传输引擎发送端与扩容实例的接收端直接建立连接,通过高性能 RDMA / NVLink 进行模型权重的高速传输(机内场景用 NVLink,机间场景用 RDMA),新扩容的推理服务则从传输引擎直接加载权重。

  • 机内场景中:发送端将切分后的权重存储在 GPU 显存中,当接收端发起读取请求后,权重会通过 NVLink 以极高带宽直接从发送端同步至接收端 GPU;

  • 机间场景中:发送端会提前将权重存储在 CPU 内存中,并按照接收端各 GPU 的 Rank 进行切分,并等待接收端发起读取请求;接收端会为每个 GPU 启动独立的 RDMA 连接,并为其分配一张独立网卡,与发送端建立连接后并行发起读取请求,充分利用多张网卡的高带宽并行传输能力,高速拉取权重。

在实际测试中,我们能够在 约 2 秒内 将 Qwen3-235B-A22B 的 348 GB 权重完整传输到新机器上。

2.2. 跨实例的中间状态复用

在推理服务冷启动过程中,会有大量中间状态的缓存文件。这些中间状态往往与模型结构、推理引擎实现以及运行环境强相关,其生成过程通常伴随着 GPU 内核的 JIT 编译,耗时显著。在扩容场景下,合理有效的复用这些中间状态文件,可以极大的降低冷启动中编译相关流程的时间开销,从而加速推理服务部署。

从复用方式上看,这类跨实例的中间状态包含两类:

第一类是「拿来即可用」的中间状态,这类状态与具体运行参数无强绑定关系,只要模型与引擎版本一致,即可直接复用。例如:

  • model_infos:在读取模型权重文件中的 config.json 后,根据该配置文件生成的一份与推理引擎特性相关的配置支持情况的 JSON 文件;

  • deep_gemm:当模型首次执行特定配置的矩阵乘法时,deep_gemm 的 JIT 编译器会在运行时动态生成一个为当前计算任务高度定制化的 cuda 代码,然后调用 nvcc 将其编译为高效 kernel,deep_gemm 目录中就缓存了这个高效 kernel 的实现。

对于这类中间状态,我们在集群层面通过公共存储,或在扩容节点上通过 RDMA 进行快速迁移复制,使新节点能够直接复用已有结果,避免重复编译。

第二类中间状态则是根据参数与环境生成的哈希值去判断是否可复用,主要包括 torch_compile_cache、backbone、inductor_cache、triton_cache 等。如果缺乏有效的命中机制,这部分缓存往往会在扩容时被全部重新编译,成为启动过程中的主要瓶颈。

对此,我们优化了 hash 命中的逻辑,采用一致性哈希来保证扩容场景的推理引擎可以 100% 命中快速迁移过来的中间状态。

通过上述机制,推理服务在扩容或节点恢复时,可以根据实际需要,自适应地复用已有编译成果,从而显著缩短服务拉起时间。

2.3. 延迟 CUDA graph 捕获 (Lazy CUDA graph)

当前大模型推理框架在引擎初始化阶段会捕获大量 CUDA graphs,显著减慢了启动时间,根据模型大小和 GPU 类型,这个过程一般会超过 10 秒。更重要的是,实际运行中很可能不会用到所有预捕获的 graphs,造成了时间和内存的双重浪费。

lazy CUDA Graph 的核心思想是分阶段捕获 CUDA graphs:

  1. 初始化阶段:只捕获最小必要的 CUDA graphs(通常是最大 size 的 graph),用于正确初始化 GPU 现存池,避免 OOM 和显存碎片问题;

  2. 第一条请求阶段:当第一条实际推理请求到达时,一次性捕获所有剩余需要的 graphs;

  3. 后续请求阶段:直接使用已缓存的 graphs 进行推理。

引入 Lazy CUDA graph 机制,推理服务可以在不牺牲最终推理性能的前提下,大幅缩短初始化阶段的启动时间:通过延迟捕获,vLLM 可以将初始化时的 torch.compile + CUDA graph capture 由 10~60s 减少到 1~2s,大幅提升了用户体验,尤其在快速扩缩容以及模型热切换等场景中,快速启动意味着更快的服务响应时间、更低的冷启动成本,且可以避免客户妥协性能(如配置 --enforce-eager 参数);同时,通过分阶段捕获,确保内存池正确初始化后再进行完整捕获,既避免了OOM 风险,又保证了内存使用的高效性。

这种分阶段的捕获策略,使推理引擎在开发测试、自动扩缩容以及生产环境中都具备更强的适应性。

2.4. 基于 Fork 的多进程初始化加速

在导入 package 过程中,vLLM 默认采用 spawn 的方式创建子进程。spawn 会启动一个全新的进程环境,子进程与父进程之间不共享任何上下文状态。

这种方式的优势在于安全性:一旦父进程中已经创建了 CUDA 上下文,子进程直接复用上下文可能导致不可预期的错误,因此通过 spawn 启动一个「干净」的进程,是推理框架中最稳妥的默认选择。基于这一机制,vLLM 的服务启动进程 api_server 会先 spawn 一个 engine_core 子进程,而 engine_core 又会根据张量并行(TP)的切分数,来 spawn 对应数量的 GPU worker 子进程。

然而,在对 vLLM v0.11.0 官方镜像的启动流程进行验证后,我们发现,在 GPU worker 子进程创建之前,系统尚未初始化任何 CUDA 上下文。这意味着,在该阶段使用 fork 方式创建子进程,并不会引入 CUDA 上下文复用带来的风险。

基于这一判断,我们在确保 CUDA 上下文尚未创建的前提下,将部分子进程的创建方式由 spawn 调整为 fork。相较于 spawn,fork 会直接继承父进程的执行状态,已加载的 Python 包与初始化结果无需重复执行,从而显著减少进程启动阶段的额外开销。

2.5. 守护实例预铺

在线上业务中,推理集群往往需要承受流量的波峰与波谷,并且对于 LLM 服务而言,瞬时到来的流量峰值使用的是何种模型完全不可预知,临时拉起巨大参数量的推理引擎又需要数分钟。

因此,我们提出了守护实例预铺的方案:在系统中预先保有不同模型的推理服务实例,当需要扩容时快速唤醒实例并启动推理引擎对外提供服务。当然,保留完整的推理服务会占用大量的集群资源,因此我们在守护实例中主动释放模型权重与 KV cache,GPU 中仅保留核心的 CUDA 上下文,以平衡资源占用与快速响应的需求。

  • 当流量到来需要扩容时,系统精准唤醒目标模型的守护实例,依托 HBM 中预留存的 CUDA 上下文,可瞬间完成各种初始化操作;再借助「模型权重加载加速」(见本文 2.1 节)机制,通过 RDMA 协议将权重快速加载至显存,模型权重加载完成后,再次借助保留的 CUDA 上下文快速完成编译、CUDA graph 捕获等后续流程。基于该方案,在 Qwen3-235B-A22B 模型的实际测试中,整个扩容启动流程耗时仅 6s;

  • 当流量回落时,实例会主动清理模型权重、KV cache 等信息,重新进入守护状态,该状态切换过程耗时仅 1-2s。

依托这种「快速唤醒、快速静默」的机制,推理集群可在避免大量占用集群资源的前提下,实现大模型服务的快速弹性扩缩容。

3. 最佳实践

围绕大模型推理冷启动中的关键耗时路径,我们从模型权重加载、编译缓存、CUDA Graph 捕获以及进程初始化等多个层面进行了系统性优化。其中,跨实例权重传输加载加速、跨实例的中间状态复用、以及多进程初始化优化,构成了推理服务快速拉起的基础能力;而守护实例预铺与 Lazy CUDA Graph,则为不同资源条件和业务需求提供了可选的性能加速手段。

基于此,我们针对覆盖资源充足、资源受限以及对首请求时延敏感等不同业务场景,落地了三种优化方案。

  • 场景一:面向用户体验敏感的核心服务、以及需要多模型快速切换的场景时,在集群有空闲资源的前提下,启用守护实例预铺:充分利用显存资源,在集群内的空闲机器上预先启动多个模型守护实例以达到快速启动的效果,同时将无法传输或缓存的 CUDA 上下文进行预铺,从而解决 CUDA graph capture 等流程的开销。此时,推理服务的启动时间最短,用户体验最佳;

  • 场景二:面向对首请求延迟要求较低的容灾恢复场景或对服务响应速度不高的扩容场景(比如后台批处理、开发测试环境等),在集群没有空闲资源的情况下,关闭守护实例预铺,启用延迟 CUDA Graph 捕获。此时,集群虽无空闲资源,但由于将 CUDA graph 延迟捕获,启动速度仍然较快,且资源利用率较高;

  • 场景三:面向启动频率较低、工作负载相对固定的扩容场景时,在集群没有空闲资源的情况下,关闭守护实例预铺与延迟 CUDA Graph 捕获。此时,通过跨实例权重传输加载加速、中间状态复用以及基于 Fork 的多进程初始化加速手段,相较于冷启动而言,已经可以大幅提升启动效率。

以 Qwen3-235B-A22B 与 GLM-4.5 模型为例,下表中列出了三种不同方案下的推理服务启动效果:

4. 结语

面对大模型推理服务在动态负载、资源效率与节点容灾上的多重挑战,我们从推理引擎启动路径出发,构建了一套覆盖多种业务场景的弹性扩缩容方案。该方案通过模型权重加载加速、中间状态复用、延迟 CUDA Graph 捕获、守护实例预铺等关键机制,对传统冷启动流程进行系统性重构,使推理服务能够在不同资源条件下实现快速拉起与稳定恢复。

在此基础上,我们针对资源充足与资源受限等典型场景,形成了可组合、可按需选择的扩容策略,在保障高可用与推理性能的同时,有效降低了扩缩容过程中的时间与资源成本。这套实践不仅解决了大模型推理在弹性层面的工程难题,也为构建兼具性能、稳定性与成本可控性的推理基础设施提供了可落地的参考路径。

接下来,百度百舸将完成上述能力在昆仑芯 XPU 的落地与验证,并将进一步结合超节点等多样化硬件形态,以及 vLLM、SGLang 等主流推理框架,持续完善推理引擎启动路径与算力特性的协同优化,逐步探索多模态推理框架的落地实践,覆盖更广泛的集群与业务场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1151914.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MediaPipe Pose模型压缩:轻量化部署教程

MediaPipe Pose模型压缩:轻量化部署教程 1. 引言:AI 人体骨骼关键点检测的工程挑战 随着智能健身、虚拟试衣、动作捕捉等应用的兴起,人体骨骼关键点检测(Human Pose Estimation)已成为计算机视觉中的核心任务之一。其…

MediaPipe与TensorFlow Lite结合部署:轻量化姿态识别完整流程

MediaPipe与TensorFlow Lite结合部署:轻量化姿态识别完整流程 1. 引言:AI人体骨骼关键点检测的轻量化实践 随着智能健身、虚拟试衣、动作捕捉等应用场景的兴起,人体姿态估计(Human Pose Estimation)已成为计算机视觉…

企业级解决方案:HY-MT1.5-1.8B在客服系统中的实战应用

企业级解决方案:HY-MT1.5-1.8B在客服系统中的实战应用 随着全球化业务的不断扩展,多语言客户服务已成为企业提升用户体验、拓展国际市场的重要手段。然而,传统翻译服务在响应速度、术语一致性、上下文理解等方面存在明显短板,难以…

零基础掌握Multisim模拟电路图标配置方法

零基础也能上手:Multisim模拟电路元件配置全攻略你是不是刚打开 Multisim,面对满屏的“Place Component”窗口一脸懵?想找一个 LM358 运放,翻了半天却只看到一堆英文分类;想搭个简单的放大电路,结果仿真出来…

AI骨骼关键点检测实测报告:复杂光照下的表现分析

AI骨骼关键点检测实测报告:复杂光照下的表现分析 1. 引言:AI人体骨骼关键点检测的现实挑战 随着计算机视觉技术的快速发展,AI人体骨骼关键点检测已成为智能健身、动作捕捉、虚拟试衣、安防监控等多个领域的核心技术。其核心任务是从单张RGB…

哔哩下载姬Downkyi完全指南:轻松下载B站8K超高清视频

哔哩下载姬Downkyi完全指南:轻松下载B站8K超高清视频 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&#x…

VHDL语言基础篇:数据类型与端口模式系统学习

深入理解VHDL:从数据类型到端口模式的实战解析你有没有在写VHDL代码时,遇到过这样的困惑?明明逻辑看起来没问题,仿真也通过了,结果综合后功能异常——信号悬空、总线冲突、状态机跳转错乱……最后排查半天,…

AI骨骼检测教程:MediaPipe Pose可视化输出

AI骨骼检测教程:MediaPipe Pose可视化输出 1. 章节概述 随着人工智能在计算机视觉领域的深入发展,人体姿态估计(Human Pose Estimation)已成为智能健身、动作捕捉、虚拟试衣、人机交互等场景的核心技术之一。其中,如…

LeagueAkari:英雄联盟玩家的5大智能辅助功能完全指南

LeagueAkari:英雄联盟玩家的5大智能辅助功能完全指南 【免费下载链接】LeagueAkari ✨兴趣使然的,功能全面的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/LeagueAkari LeagueAka…

LeaguePrank:英雄联盟段位展示工具完整使用指南

LeaguePrank:英雄联盟段位展示工具完整使用指南 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank LeaguePrank是一款专业的英雄联盟段位修改工具,通过LCU API接口实现游戏数据的个性化展示。该项目采用C …

通俗解释Intel南桥对USB 3.0 3.1 3.2的支持

一块南桥芯片,如何决定你的U盘能跑多快?——深度拆解Intel平台对USB 3.0/3.1/3.2的支持真相 你有没有过这样的经历:花大价钱买了个“支持USB 3.2”的移动固态硬盘,插在主板后置接口上,结果测速只有400MB/s出头&#xf…

USB接口类型全解析:新手入门必看指南

一根线的进化史:从USB-A到USB-C,看懂接口背后的硬核逻辑 你有没有过这样的经历? 手握一根“看起来能插”的USB线,在电脑、充电头、手机之间反复翻转尝试,最后发现——还是插不进去。 或者刚买的新显示器,…

人体姿态估计入门:MediaPipe Pose的WebUI使用教程

人体姿态估计入门:MediaPipe Pose的WebUI使用教程 1. 引言:从零开始理解人体姿态估计 1.1 什么是人体骨骼关键点检测? 在计算机视觉领域,人体姿态估计(Human Pose Estimation)是一项核心技术&#xff0c…

MediaPipe与Unity联动:动作数据导入游戏引擎实战

MediaPipe与Unity联动:动作数据导入游戏引擎实战 1. 引言:AI 人体骨骼关键点检测的工程价值 随着虚拟现实、数字人和体感交互技术的发展,实时人体姿态估计已成为游戏开发、运动分析和智能教学等领域的核心技术之一。传统动捕设备成本高昂且…

亲测YOLOv8鹰眼检测:工业场景多目标识别效果超预期

亲测YOLOv8鹰眼检测:工业场景多目标识别效果超预期 🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向…

5分钟部署腾讯混元翻译模型:HY-MT1.5-1.8B零基础教程

5分钟部署腾讯混元翻译模型:HY-MT1.5-1.8B零基础教程 1. 引言:为什么选择HY-MT1.5-1.8B? 在全球化加速的今天,高质量、低延迟的机器翻译已成为企业出海、内容本地化和跨语言交流的核心基础设施。然而,商业API存在成本…

GPU维护必看:display driver uninstaller使用注意事项全解析

GPU维护实战:彻底搞懂Display Driver Uninstaller的正确打开方式 你有没有遇到过这样的情况?刚更新完显卡驱动,结果进不了桌面、游戏频繁崩溃,或者屏幕突然花屏黑屏。明明换的是“最新版”,怎么反而更不稳定了&#x…

人体姿态估计性能对比:MediaPipe Pose极速CPU版评测

人体姿态估计性能对比:MediaPipe Pose极速CPU版评测 1. 引言:AI人体骨骼关键点检测的现实挑战 随着计算机视觉技术的快速发展,人体姿态估计(Human Pose Estimation)已成为智能健身、动作捕捉、虚拟试衣、人机交互等场…

mptools v8.0自定义脚本加载快速理解指南

mptools v8.0 自定义脚本加载机制实战解析:从原理到落地你有没有遇到过这样的场景?一个自动化任务平台功能越来越重,每次加个新逻辑就得改代码、重新打包、停机发布——开发效率被拖垮,运维压力山大。更别提多团队协作时&#xff…

看完就想试!YOLOv8鹰眼检测打造的物体统计案例展示

看完就想试!YOLOv8鹰眼检测打造的物体统计案例展示 1. 引言:从“看得见”到“数得清”的智能视觉跃迁 在智能制造、智慧城市、零售分析等场景中,目标检测早已不再是简单的“框出物体”,而是向语义理解数量统计决策支持演进。传统…