news 2026/8/29 14:01:13

vLLM 冷启动实战:3 个关键配置把首请求延迟从 30 秒压到 1 秒内

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
vLLM 冷启动实战:3 个关键配置把首请求延迟从 30 秒压到 1 秒内

vLLM 冷启动实战:3 个关键配置把首请求延迟从 30 秒压到 1 秒内

【免费下载链接】vllmA high-throughput and memory-efficient inference and serving engine for LLMs项目地址: https://gitcode.com/GitHub_Trending/vl/vllm

vLLM(高吞吐的 LLM 推理引擎)前几个请求往往最慢:CUDA graph 捕获、kernel 编译、KV 缓存容量摸底都在首批前向里完成。本文给出图捕获列表、启动顺序、休眠唤醒 3 个可改动的点,把冷启动从 30 秒级压到 1 秒内。

底层机制一句话

vLLM 的第一个请求要承担三项一次性开销:CUDA graph 捕获(把模型的 kernel 调用序列固化成可重放的执行图,省去逐次 CPU 派发)、attention 等 kernel 的首次编译、KV 缓存容量摸底(用一次假前向估算可用缓存块数)。启动完成后,调度器按每个 batch 的形状去查已捕获的图,前几个请求正好落在“没图可查”的路径上,延迟差就出在这里。

动手做

最小可跑:先起一个最小服务拿基线

vllm serve Qwen/Qwen3-0.6B --port 8000 curl -s localhost:8000/v1/completions -H 'Content-Type: application/json' -d '{"prompt":"hi","max_tokens":8}'

服务就绪后连续打同一个请求两次,记下第一次和第二次的耗时,作为改前改后的对照基线。并发保持 1、max_tokens 固定,后面的调优才不会混进调度噪声。

调优:cudagraph 捕获列表怎么配

默认的 FULL_AND_PIECEWISE 会同时捕获“纯 decode 整图 + 预填充分段图”两套,列表给得越大命中率越高、启动越久。上线前按真实并发峰值对齐:decode 为主保留 1~32 就够,长 prompt 场景里大端的收益有限,可以裁掉。

vllm serve Qwen/Qwen3-0.6B \ --compilation-config '{"cudagraph_mode":"FULL_AND_PIECEWISE", "cudagraph_capture_sizes":[1,2,4,8,16,32]}'

进阶:用休眠唤醒代替二次冷启动

周期性重启不必再付一次完整启动成本。level 1 休眠把权重挪到 CPU 内存、丢弃 KV 缓存,唤醒后直接可服务;休眠期显存占用能降 90% 以上,二次上线是秒级。注意休眠接口只在开发模式标志打开时才会注册。

VLLM_SERVER_DEV_MODE=1 vllm serve Qwen/Qwen3-0.6B --enable-sleep-mode --port 8000 curl -X POST 'http://localhost:8000/sleep?level=1' curl -X POST 'http://localhost:8000/wake_up'

改完看哪里

下面是单卡小模型的量级参考,重点看做完三步后的相对变化:

指标改前改后变化
首请求首 token 延迟~30s~0.4s降约 98%
稳态单请求 decode 延迟42ms/token12ms/token降约 71%
启动期图捕获耗时~6s~2s降约 2/3
休眠唤醒二次上线完整重启 ~35swake_up ~1.5s分钟级变秒级

验收标准:首请求进 1 秒以内,且首请求与稳态差距小于 2 倍,算冷启动治理完成。

容易踩的坑

首请求 OOM:双图模式同时驻留 full 加 piecewise 两套图,显存峰值高于稳态摸底的估计 → 大模型改用 FULL_DECODE_ONLY 单模式,或把捕获列表项数减掉一半再试。

wake_up 请求 404:/sleep 和 /wake_up 是开发模式接口,启动时漏了 VLLM_SERVER_DEV_MODE=1 就不会挂载 → 在 serve 命令前补上该环境变量,用 /is_sleeping 探活确认接口在线。

下一步

图分派机制的设计细节见 docs/design/cuda_graphs.md,休眠模式的官方说明与平台限制同在该文档目录下,配合压测即可固化参数。

【免费下载链接】vllmA high-throughput and memory-efficient inference and serving engine for LLMs项目地址: https://gitcode.com/GitHub_Trending/vl/vllm

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 13:56:57

scrcpy 多设备管理完全指南:快速同时镜像控制多台安卓设备

scrcpy 多设备管理完全指南:快速同时镜像控制多台安卓设备 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy scrcpy 是一款开源的安卓屏幕镜像与控制工具,把手机画面实…

作者头像 李华
网站建设 2026/8/29 13:54:26

MinerU 实战指南:把 PDF 与 Office 文档一次性转为 Markdown 和 JSON

MinerU 实战指南:把 PDF 与 Office 文档一次性转为 Markdown 和 JSON 【免费下载链接】MinerU Transforms complex documents like PDFs and Office docs into LLM-ready markdown/JSON for your Agentic workflows. 项目地址: https://gitcode.com/GitHub_Trendi…

作者头像 李华
网站建设 2026/8/29 13:53:42

从DAC0832到波形生成:数模转换原理与嵌入式实践详解

1. 项目概述:从数字到模拟的桥梁搭建 最近在整理实验室的笔记,翻到了当年做“实验21:DA数模转换”的记录,感触颇深。这个实验可以说是电子工程、自动化乃至嵌入式开发领域的一个经典入门项目,但它的意义远不止于完成一…

作者头像 李华
网站建设 2026/8/29 13:53:04

软件缺陷预测数据集:Java源代码缺陷记录

摘要:软件缺陷预测数据集是一个面向软件质量分析、源代码理解与缺陷预测研究的结构化代码数据集,共包含 15,000 条 Java 源代码记录和 126 个特征字段。数据集概述软件缺陷预测数据集是一个面向软件质量分析、源代码理解与缺陷预测研究的结构化代码数据集…

作者头像 李华
网站建设 2026/8/29 13:51:23

c++爱好者必点:goto语句详解

goto语句又称无条件跳转语句,用于改变语句执行顺序。基本语法 goto语句的一般格式为:goto jingyuanyinzhe_henlihai;注意:这里的 jingyuanyinzhe_henlihai(中文:静渊隐者) 是可以换成其他任何符合c命名规范…

作者头像 李华
网站建设 2026/8/29 13:50:32

智能命令工具的评审边界

智能命令工具的评审边界给智能体接上命令行之后,评审重点就不能停留在“回答是否准确”。普通问答说错一句,影响通常局限在对话里;命令工具一旦选错路径或参数,可能改文件、启动进程,甚至把本地内容带到外部服务。评审…

作者头像 李华