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/token | 12ms/token | 降约 71% |
| 启动期图捕获耗时 | ~6s | ~2s | 降约 2/3 |
| 休眠唤醒二次上线 | 完整重启 ~35s | wake_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),仅供参考