vLLM推理服务2026:把开源模型部署成生产API

📘 教程 2026-08-11 · 更新于 2026-10-20 约 8 分钟阅读

vLLM推理服务2026:把开源模型部署成生产API。模型选好了,接下来要回答的是工程问题:怎么让它同时服务几十个人、延迟稳定、接口和 OpenAI 兼容、出问题能查

📜 目录

vLLM推理服务2026:把开源模型部署成生产API

模型选好了,接下来要回答的是工程问题:怎么让它同时服务几十个人、延迟稳定、接口和 OpenAI 兼容、出问题能查。vLLM 是 2026 年做这件事最主流的开源方案。这篇按起服务、配参数、压测、上监控的顺序讲,最后说清楚什么情况下不该用它。

一、它快在哪

两个机制撑起了 vLLM 的性能:

两者叠加,同样硬件下总吞吐相比朴素逐请求服务能高出数倍,具体倍数看模型大小、序列长度和并发模式,官方基准给的区间偏乐观,自己的负载必须自己测。

二、最简部署

pip install vllm
vllm serve Qwen/Qwen2.5-7B-Instruct \
  --port 8000 \
  --max-model-len 8192 \
  --gpu-memory-utilization 0.90

服务起来后就是 OpenAI 兼容接口:

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen/Qwen2.5-7B-Instruct",
    "messages": [{"role": "user", "content": "你好"}]
  }'

客户端代码只改 base_url:

from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="none")
resp = client.chat.completions.create(
    model="Qwen/Qwen2.5-7B-Instruct",
    messages=[{"role": "user", "content": "用三句话解释什么是PagedAttention"}],
)
print(resp.choices[0].message.content)

接口兼容是 vLLM 最实用的特性:你的应用代码不用为换推理引擎重写。

容器化部署用官方镜像 vllm/vllm-openai,启动命令作为参数传进去,注意挂载模型缓存目录,否则每次重启都要重新下载权重。

三、核心参数表

参数 作用 怎么设
--model 模型路径或 HuggingFace 名称 本地权重给绝对路径
--tensor-parallel-size 张量并行卡数 等于参与推理的 GPU 数
--gpu-memory-utilization 预分配显存比例 0.85-0.92,留余量给其他进程
--max-model-len 单请求最大上下文 按业务需要设,设太大吃显存
--max-num-seqs 同时处理的序列数 高吞吐调大,低延迟调小
--quantization 量化方式 awq / gptq / fp8,需权重匹配
--dtype 计算精度 一般 auto 即可
--enable-prefix-caching 前缀缓存 系统提示词固定时开启收益明显
--api-key 接口鉴权 对外提供服务必设

显存估算的粗算法:参数量乘每参数字节数,再加 KV 缓存。7B 模型 FP16 约 14GB 权重,加上缓存,16GB 卡要跑得舒服得做量化或限制上下文长度。AWQ、GPTQ 这类 4bit 量化能把权重压到约四分之一,代价是少量精度损失,多数业务场景察觉不到。

四、吞吐和延迟是一对矛盾

调参前先明确目标:

目标 调整方向
单位时间服务更多请求 提高 max-num-seqs,接受更高的 p95 延迟
单请求响应更快 降低并发,启用投机解码,缩短上下文
长文档场景 提高 max-model-len,同时减少并发
多轮对话 开前缀缓存,把固定系统提示词放最前面

压测工具用 vllm bench serve 或任意 OpenAI 兼容压测脚本,看四个数:请求吞吐、输出 token 吞吐、p50 延迟、p95 延迟。只看平均值会被长尾掩盖,交互式应用里 p95 才是用户体感。

一个常见误区是把 max-num-seqs 拉到很大就以为吞吐会线性上升。实际情况是到某个点后,KV 缓存占满显存,新请求开始排队甚至被拒绝,吞吐反而下降。找到拐点比盲目调大有用。

五、上生产要补的东西

六、什么情况别用 vLLM

七、三行命令起步的顺序

第一天先用默认参数把服务跑起来,用 curl 确认接口通。第二天接上你的应用,跑真实请求看延迟。第三天再动 max-num-seqs 和量化,每次只改一个参数并记录指标。一次改五个参数,出问题无法归因。

八、成本怎么算

自建推理的成本主要三块:显卡折旧或租用、电费、运维人力。做预算时按下面的顺序估:

  1. 峰值并发:同时在线多少人,每人平均多久发一次请求
  2. 每次请求的 token 量:输入含检索片段的长度,输出长度
  3. 每秒能出多少 token:自己压测得到,别用厂商宣传值
  4. 用峰值并发乘单请求时长,得出需要多少并行槽位,再反推需要几张卡

常见误判是按用户数估容量。一百个注册用户可能只有五个同时在线,也可能五十个同时在线,差别全在业务场景。按并发估,不按人数估。

单卡够用时,把 --gpu-memory-utilization 留出一成余量给系统和其他进程;多卡时,张量并行能服务更大的模型,但卡间通信有开销,两张卡跑小模型的吞吐提升往往不到两倍,性价比要实测。

常见问题

Q:启动报显存不足怎么办?

A:按顺序试:降低 --gpu-memory-utilization、缩短 --max-model-len、换量化权重、减少 --max-num-seqs。还不行就是卡太小,换小参数模型。

Q:能同时加载多个模型吗?

A:一个服务实例服务一个模型,多模型起多个实例,前面挂网关按模型名路由。这是标准做法,比在单进程里动态加载稳。

Q:量化后效果下降明显吗?

A:4bit 量化在多数通用任务上差异很小,长链推理和代码生成这类任务上损失更容易看出来。上线前用你的测试集对比一次,别凭感觉。

Q:支持工具调用吗?

A:支持,需要按模型的对话模板启动工具调用解析参数(不同模型对应的解析器不同),具体名称以官方文档为准。

相关文章

延伸阅读 · 含推广链接

API 账单分散在几家平台时,续费和管理都费神。合到一个账号下,成本和额度一眼看得清。

合并到一个账号 →

相关文章
2026-08-05
2026年用AI自动化YouTube:yt-dlp(18万星)+ Whisper 流水线做转写、摘要和切片
2026-08-07
AI视频翻译:开源的配音与字幕方案实测
2026-08-01
在iPhone上运行Ollama:3种可行方法
2026-08-01
W3Schools有计算机视觉教程吗:新手应该用什么
2026-08-14
开源 AI SQL 生成器 2026:从大白话到查询
2026-07-23
Unsloth微调指南:2026年以更低内存实现LLM训练速度翻倍

本站文章由编辑人工撰写,收录的工具均经过实测或公开资料核验。文中链接指向工具官网或 GitHub 仓库,仅作信息参考,不构成付费推广。

💬 评论 (0)

暂无评论,来说两句吧~

登录后评论