vLLM 0.32 升级先看:默认关掉跨域,Python 3.10 不再支持
自己部署开源模型的团队,十有八九在用 vLLM。这次 0.32.0 不只是加速和新模型,好几个默认值变了。直接 pip install -U,浏览器前端可能当场报跨域错误。

发生了什么
vLLM 在 GitHub 发布了 v0.32.0(发布页时间为北京时间 10 月 18 日 14:50),PyPI 上的包当天 18:03 上传。按发布说明,这一版有 814 个提交,来自 363 位贡献者,其中 121 位是第一次参与。新功能主要有:一个新的 /v1/systemone 结构化决策接口;NVFP4 低精度 KV 缓存支持更多 GPU;新增 vllm download-kernels 预装 FlashInfer 内核,减少冷启动编译;新增模型包括 EmbeddingGemma 2、MiniCPM-V 4.7 和 Nemotron 3.5 ASR。
为什么这次要先看说明再升级
推理框架是线上服务的底座,默认值一改,现有调用方可能直接坏掉。这版发布说明专门列了一节「Breaking Changes」,跟日常使用关系最大的是下面几条:
| 变化 | 谁受影响 | 怎么办 |
|---|---|---|
| CORS 默认不放行 | 网页前端直连 | 加 --allowed-origins |
| 去掉 Python 3.10 | 老镜像、老服务器 | 换 3.11–3.14 |
max_tokens 不再预留 | 靠超长被拒做保护的 | 自己限制输入长度 |
| 推理流事件改名 | 自己解析流的 | 改监听新事件名 |
| 依赖版本收紧 | 共用环境的 | 单独建环境 |
细节:推理流现在用 response.content_part.added/done,part.type 为 reasoning_text,替代原来的 response.reasoning_part.*;依赖要求是 transformers>=5.16.1,<5.20.0 和 tokenizers>=0.23.2;以前超长提示会被直接拒绝,现在 max_tokens 只当输出上限,长提示不再被拒。
另外,torch.compile 的序列并行和 AsyncTP pass、cascade attention、mamba_cache_mode="all" 都删掉了。--disable-cascade-attn 现在还能识别,但只会给警告,按计划 v0.33.0 会彻底移除。
以前「随便哪个网页都能直接调」,现在得在
--allowed-origins里点名才行。这是安全上的进步,但也是升级时最容易踩的坑。
安全修复:先升级,再看公告
按发布说明,这一版修了 3 个带 GHSA 编号的问题:聊天模板可被拿来耗尽资源(模板现在先静态校验,渲染有超时,Responses 请求里不再接受用户自带模板);tokenizer max_token_id 的差一错误;P2P ZMQ 连接可被大量伪造的对端耗尽(新增 VLLM_P2P_MAX_PEERS,默认 128,以及握手和空闲超时)。
一并加固的还有:不受信任的图片只按位图格式打开,EPS/PostScript、WMF 一律拒绝;共享内存多模态缓存句柄加了 HMAC 签名;嵌套超过 64 层的 JSON Schema 直接返回 400;aiohttp、pillow 等依赖升级到安全版本。截至 10 月 19 日上午,这几个编号在 GitHub 公告库里还查不全详情,严重级别以官方公告为准。对公网开放接口的服务,建议尽快升级。
可以核实的性能数字
以下都是发布说明里引用的 PR 自测数据,不是第三方测试结果:
--api-server-count大于 1 时,连接会分给最空闲的 API 进程。在 Qwen3-0.6B、输入 32 token、输出 1 token 的短请求测试中,每秒请求数提高 43%–85%。- GLM-5.x 在 SM100(Blackwell)上默认改用 FP8 KV 缓存,每张卡的 KV 显存减半,吞吐高 2.3%–5.5%,首 token 延迟高 7%–11%。
- HiSparse 按请求缓存驻留数据,在 B200 上跑 GLM-5.3-NVFP4、长上下文且高并发时,吞吐最多提升 58%。
谁该关心,怎么升
线上用 vLLM 提供 OpenAI 兼容接口的团队最该看这篇,尤其是网页前端直接调接口、或者自己解析流式推理内容的。建议的步骤:
# 先在测试环境
pip install -U "vllm==0.32.0" # 需要 Python 3.11+
# 或者 docker pull vllm/vllm-openai:v0.32.0
vllm serve <模型> --allowed-origins '["https://你的前端域名"]'
升级后用浏览器前端跑一次真实请求,确认没有跨域报错;再对照发布说明里的「Breaking Changes」,逐条检查自己用到的参数。只是本地跑着玩、用 Python 客户端调接口的,CORS 这条影响不大,升级主要是为了安全修复。
最后
今天先查一下线上 vLLM 的版本号。还在 0.31 或更早的,挑个低峰时段在测试环境升到 0.32.0,配好 --allowed-origins,没问题再切线上。