vLLM 更到 v0.26 了,先别急着升:社区最近踩的坑,我都替你翻出来了

源自8位全网作者

08-11 19:26

vLLM 又更新了。v0.26.0 刚落不久,往前数,v0.24、v0.25、v0.26 几乎是两周一版。知乎知乎作为现在开源大模型推理的事实标准——GitHub 上 82k Star、两千多人参与贡献、连 Hugging Face 的模型排行榜都拿它当评测后端——这个更新节奏本身就值得追。知乎

先花十秒钟对齐一下我们要"升级"的到底是什么。vLLM 对外有两个入口:写脚本离线调用用的 LLM 类,和做服务化暴露的 OpenAI 兼容 API Server;对内则是同一个引擎,把输入处理、调度、模型执行、输出处理串成一条流水线。你改的每一个启动参数,最终都落在后面这条流水线上。

vLLM 更到 v0.26 了,先别急着升:社区最近踩的坑,我都替你翻出来了

但先把话说在前面:版本跑得快,不等于你该跟得快。 我翻了一圈最近社区里的部署复盘,发现一个反常识的现象:越是用 vLLM 上了生产的人,越在劝人"升级前先避坑"。因为这里面的坑,踩中一个轻则白干一天,重则是一次线上事故。

下面把散落在最近一个月各篇踩坑实录里的问题归拢一下,按"装环境、跑服务、上生产"三个阶段拆开,都是社区真实踩过的。

一、装环境:版本三角是最大的坑

vLLM 里塞了一堆预编译的 CUDA kernel,所以它对 PyTorch、CUDA 的版本是有硬要求的,不是随便 pip 一下就完事。最近有位部署 Qwen2.5-1.5B 的同学,花了一整天踩了 5 个坑,最后的心得浓缩成一句话:版本匹配是关键知乎他的原话是,与其在报错里打滚,不如开台干净服务器、严格按版本矩阵装,一次就能成。

这里特别提一个近期信号:有部署者反馈,新版 V1 引擎在 CUDA 13.2 上存在崩溃问题,他的处理办法不是去修崩溃,而是直接退回一套自己验证过的稳定组合。知乎这个说法来自单一部署者的特定环境(小模型 + 4090D),不能当成普遍结论,但它提醒的方向是对的——新引擎 + 新 CUDA 的组合,上生产前一定先在小流量跑通,别直接拿线上赌。

二、跑服务:显存、参数和冷启动,三个看不见的坎

先说显存。启动参数 `–gpu-memory-utilization` 决定了一次性把多大比例的显存划给模型权重和 KV Cache,社区里比较一致的建议是放在 0.7~0.9:调太低,KV Cache 不够,长文本直接跑不动;调太高,底层运行时申请中间结果的空间就没了,轻则疯狂换页拖慢速度,重则直接 OOM。知乎

再说两个容易搞混的参数。`–max-model-len` 管的是"模型能吃的上下文上限",设太短会阉割长文本能力,输入超了服务还会直接拒绝请求;`–max-num-batched-tokens` 管的是"调度器一步最多塞多少 token",是防 OOM 的闸门。关键点:如果没开 chunked-prefill,后者必须大于等于前者,这俩一个面向模型、一个面向调度,别混着调。知乎

把 vLLM 的进程结构摆出来看会更直观:左边是接请求的 API Server,中间是负责调度和 KV Cache 管理的 Engine Core,右边是每张卡一个的 GPU Worker。你调的显存和调度参数,作用在中间这层;而它起了多少个 worker 进程,又决定了后面"上生产"阶段的一个坑。

vLLM 更到 v0.26 了,先别急着升:社区最近踩的坑,我都替你翻出来了

还有个新手常被吓到的点:大模型第一次启动会特别慢,加载权重、编译计算图、autotune 一套下来,冷启动 8~10 分钟都算正常,不是卡死了。知乎判断它活没活,去轮询 `/health` 接口,别盯着终端干等。另外两个高频报错也记一下:模型加载报分词器相关的错,多半是没加 `–trust-remote-code`;一台机器上跑多个模型时,Reranker 类模型调 `/v1/score` 返回 500、报 `KeyError: ‘score’`,通常是权重包里 config.json 的 architectures 字段和 vLLM 的注册表对不上,改一下就能解决。

三、上生产:安全这个坑,最容易被忽略

这条值得单独拎出来,因为它不是性能问题,是事故问题。

vLLM 默认是不带鉴权的,而且默认只绑 `127.0.0.1`,本机访问没事。但只要你为了让局域网别的机器调用,把 host 改成 `0.0.0.0`,这个口子就彻底裸奔了——任何能碰到这个端口的设备,都能直接白嫖你的推理服务。有在 DGX Spark 上搭双机服务的同学专门提醒:一旦绑到 0.0.0.0,必须显式加 `–api-key`知乎这一步不做,等于把 GPU 算力挂在门口免费送。

另外两个生产环境的坑也记一下:一是长时间开着 prefix-caching 的服务,有案例连续跑一两天后显存缓慢上涨最后 OOM,长序列缓存的释放要盯紧;二是用 `pkill` 杀 vLLM 后显存不释放,因为它起了多个 worker 进程,主进程死了子进程变孤儿、还占着显存,重启前最好确认进程真的清干净了——对照上面那张进程结构图,API Server、Engine Core、四个 GPU Worker 一共六个进程,杀的时候一个都别漏。知乎

四、那 v0.26 到底升不升?

先看这次更新社区总结的几个看点:对 DeepSeek-V4 做了跨平台专项优化(端到端 TPOT 有小幅提升)、注意力后端支持按 KV-cache 组粒度选择(利好混合架构模型)、Rust 前端新增视频/音频输入的多模态能力,还有一批主流模型迁到了统一的建模后端。知乎最后这一点,看执行层层级图最好懂:从上到下是 LLM Engine → Executor → Worker → ModelRunner → Model。"模型迁往统一建模后端"改的就是底下 ModelRunner 和 Model 这两层,这也解释了为什么大版本升级时,偶尔会出现某类模型的兼容性问题——动的是地基。

vLLM 更到 v0.26 了,先别急着升:社区最近踩的坑,我都替你翻出来了

我的判断分两类人:

可以升的:你要部署的新模型正好命中这次的新支持;或者你在跑 DeepSeek-V4、想榨那点性能;或者你需要多模态输入的新能力。这些是"升级直接兑现收益"的场景。

先等等更稳的:你现在这套版本已经在生产稳定跑着、模型也没换。两周一个版本,意味着新功能多、踩坑面也大,没有明确收益时,"稳定运行"本身就是最大的收益。真要升,也先在预发环境把自己的真实流量回放一遍,再动线上。

一句话收尾:vLLM 值得跟,但要跟得有自己的节奏。 把环境版本锁死、把显存参数调对、把鉴权加上,这三件事做完,你才谈得上安心享受它的高吞吐。

你上 vLLM 的时候踩过哪个坑?评论区聊聊,帮后面的人少走点弯路。

内容由AI生成
0
扫一下,分享更方便,购买更轻松
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

最新文章 热门文章