gemma-4-31b-it vllm 部署

模型与算力

给用 vLLM 起 Gemma 大模型服务的工程师一份部署前中后的操作清单:环境对齐、权重加载、起服务参数与首轮验证顺序。

你已经把权重下好、卡也租到了,结果 vllm 起服务报错、显存吃满、请求返回乱码——这类问题大概率不是模型本身,而是版本、参数和权重格式三件事没对齐。这篇按「部署前对齐 → 起服务 → 起来之后怎么验」的顺序走一遍,每一步给出该看什么、该改什么,以及哪些做法在单卡跑不通、哪些在多卡场景下不适用。

权重下好了、卡也租到了,结果 vllm 起服务报错、显存吃满、请求回来乱码——这类问题多半跟模型本身无关,而是版本、参数、权重格式三件事没对齐。按「部署前对齐 → 起服务 → 起来之后怎么验 → 报错怎么排」走一遍,每一步都给出该看什么、该改什么,比反复重装环境省时间。

下面这套顺序偏向首次部署,也适用于换了新权重目录或换了卡型之后重跑服务。要说明的是:如果你已经在跑多卡张量并行且线上有流量,别照本文从头做,先考虑灰度加一个新实例做对照,避免把在跑的服务一起带崩。

部署前先对齐三件事:版本、权重、卡

很多人直接从报错开始查,其实大多数坑在起服务之前就埋下了:权重目录不是标准格式、显存估算凭感觉、卡数想当然。部署前花十分钟做这三项检查,后面能省掉一轮盲试。

  • vLLM 版本与权重格式要匹配:先确认权重是标准 HuggingFace 目录,还是需要转换或合并分片之后再加载的格式,老版本读不了新导出的目录;
  • 显存估算别凭感觉:按参数量乘量化位宽,再留出 KV 缓存和运行时的余量,具体算法到 /models/deploy 用部署测算跑一遍,或参考 /compute/sizing 的按模型算卡数思路;
  • 别急着上多卡:单卡先跑通再考虑张量并行,多卡起来后报错定位成本高好几倍;
  • 卡型驱动与 CUDA 版本要对得上,国产卡或加速卡走的是另一套适配分支,不要直接套英伟达那套命令和参数。
检查项确认方式不对齐的典型表现
权重格式看目录里有没有配置、分词器、模板等配套文件加载阶段直接报错或找不到权重分片
显存估算按参数量与量化位宽粗算,再留余量权重能加载,但 KV 缓存一分配就 OOM
卡数与并行度实际卡数要和启动参数里的并行度一致起服务即崩,或只用上一部分卡
驱动与 CUDA对照卡型官方适配说明编译或加载内核阶段报版本错

起服务:参数怎么定、哪些必须改

起服务这一步的核心不是把参数抄全,而是分清哪些是必填、哪些必须按你的场景改、哪些先保守设着后面再调。参数写错的两个典型后果是:服务直接起不来,或者起来了但并发一上来就崩。

  1. 填必填项模型路径、端口、监听地址这三项先确认,路径要指向权重目录本身而不是它的上一级,路径写错是最常见的起不来原因。
  2. 对齐并行度张量并行度必须和实际使用的卡数一致,写大了直接起不来,写小了浪费卡;不确定就先设成一,单卡验证。
  3. 设上下文长度按真实用途设,不要无脑拉满。长上下文会明显抬高 KV 缓存占用,用不上那么长就是白占显存。
  4. 留显存余量显存利用率上限留一点给系统开销和碎片,拉太满往往在并发上来之后才崩,排查起来很费劲。
  5. 从小并发起调并发与批处理相关参数先保守,用低并发确认正确性,再逐步加压看吞吐变化。

起服务前把日志级别调高一次,完整看一遍加载过程。权重加载慢、有 warning、模板文件缺失这类问题都在这一步先暴露出来,比起服务起来之后对着乱码猜要高效得多。

起来之后:先验正确性,再量吞吐

服务能起来不等于能用。验证要分三步走:先确认输出语义正确,再确认不同长度输入下稳定,最后才压并发看吞吐。顺序反了的话,你会在一个本身有问题的服务上测性能,数据全是白测。

  1. 单条短请求验正确性发一条简单问题,确认返回是正常文本:不是乱码、不是空串、不是反复刷同一句话。这三类现象分别指向权重加载、模板对齐和分词器问题。
  2. 多条不同长度测稳定性换几种输入长度各发几次,看延迟是不是随输入长度合理增长;如果某个长度突然异常,多半是上下文或缓存配置的问题。
  3. 拉并发量吞吐记录吞吐和首 token 延迟,接口测速可以到 /tools/speed-test 先量出你这套环境的延迟基线,后面每次调参都有对照物。
  4. 出问题按顺序排查显存被占满或者跑着跑着变慢,按 /vram-full-troubleshoot-guide 里的并发、缓存与碎片排查顺序走一遍,别跳步。
现象优先怀疑先做哪一步
返回乱码或空串权重或量化格式加载换回未量化权重做对照
答非所问、格式错乱对话模板或分词器检查权重目录里的模板文件
跑一会儿 OOM并发、上下文、显存上限按顺序下调这三项
起不来版本、权重格式、并行度逐项对照部署前检查表

常见的四类报错与排查顺序

报错看着五花八门,归类之后其实就四类。每类都有固定的先看什么、后看什么,别一上来就重装环境或换权重,那是成本最高的一步。

  • 起不来:先看版本是否匹配、权重格式是否标准、张量并行度有没有写超实际卡数,这三项占了大部分原因;
  • 起来了但答非所问:多半是对话模板或分词器没对上,检查权重目录里有没有配套的模板文件,缺失就补上;
  • 跑一会儿 OOM:按降显存利用率上限、限制并发、缩短上下文长度的顺序依次试,一次只改一项才能定位;
  • 输出乱码或截断:优先怀疑量化格式加载有问题,退回未量化版本作对照,能快速分清是量化问题还是别的问题。

想横向看看各家中转站和官方接口在这类模型上的实际表现与延迟水平,可以到 /sites 和 /rankings 核对当时的数字,再决定自己的部署方案要不要调整;价格与计费口径的变化到 /price-watch 看追踪记录。

下一步部署前先把显存和卡数算清楚,再动手写启动命令,能省掉大半的返工。

常见问题

单卡能跑 Gemma 这个大模型吗?

看卡型、量化档位和你要的上下文长度,不能一概而论。先在 /models/deploy 按你的卡和量化档跑一遍显存测算,再决定是缩上下文、换量化还是上多卡。单卡跑得动的配置,通常并发余量也很小,别指望高并发。

vLLM 版本要跟着模型走还是跟着卡走?

优先保证 vLLM 能正确加载你手上的权重格式,其次才是性能优化。不同版本的参数名和支持的权重格式会变,照抄别人的启动命令前,先确认版本号一致。国产卡走适配分支,版本对应关系另算,可参考 /domestic-card-vllm-deploy 的思路。

服务起来了但回答质量差,是部署问题还是模型问题?

先用同一条提示词在别的推理框架上跑一遍做对照,如果表现一致,那是模型本身;如果只有 vLLM 上差,重点查对话模板、分词器和量化格式三项。vLLM 和 Ollama 的差别可以看 /vllm-ollama-deploy-compare。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。