vLLM 服务是什么
vLLM 是面向生产的开源推理引擎:靠显存分页管理与连续批处理提升吞吐,把多个用户的请求动态合并成批次执行,在同等硬件上通常比逐条串行推理高出数倍吞吐。它用一条命令就能起一个 OpenAI 兼容端点,业务侧复用现有客户端即可。代价是需要自己负责部署、显存估算、并发控制与版本升级。
基本信息
| 定位 | 生产级开源模型推理与服务引擎 |
|---|---|
| 核心机制 | 显存分页管理加连续批处理,提高并发吞吐 |
| 接口 | 启动后提供 OpenAI 兼容的对话与补全端点 |
| 多卡支持 | 支持张量并行,按卡数切分模型 |
| 量化 | 支持多种量化方式,降低显存门槛 |
| 运维成本 | 部署、监控、扩容与升级由自己承担 |
常用启动参数
| 参数 | 作用 | 注意 |
|---|---|---|
| 模型路径 | 指定要加载的权重 | 可用本地目录或仓库标识 |
| 监听端口 | 服务对外端口 | 注意与其它服务端口冲突 |
| 张量并行度 | 按卡数切分模型 | 数值需与实际显卡数量匹配 |
| 最大上下文 | 单次请求允许的上下文长度 | 设得越大显存占用越高 |
| 显存占用比例 | 限制引擎可用的显存上限 | 要留出余量给其它进程 |
| 对外模型名 | 客户端看到的模型标识 | 多模型部署时用于区分 |
典型使用场景
- 私有化部署:把开源模型作为内部推理服务对外提供
- 高并发服务:多用户同时调用时用连续批处理提升吞吐
- 模型对比:同一硬件上对比不同模型的实际吞吐与延迟
- 多模型共存:按业务把不同尺寸的模型分别部署
- 数据不出域:敏感业务在自有集群内完成推理
起服务与验证
起服务与验证
vllm serve Qwen/Qwen3-8B --port 8000 --max-model-len 8192 # 单卡启动
vllm serve ./models/llama --tensor-parallel-size 2 --port 8000 # 双卡张量并行
curl -s http://localhost:8000/v1/models # 确认模型已注册
curl -s http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{"model":"Qwen/Qwen3-8B","messages":[{"role":"user","content":"你好"}]}'
# 启动日志会打印显存占用与最大并发信息,可用于容量评估吞吐与稳定性调优
| 抓手 | 做法 | 收益 |
|---|---|---|
| 批处理 | 提高并发请求数,让引擎组批执行 | 吞吐明显上升,单请求延迟略增 |
| 上下文上限 | 按业务需要设置最大长度 | 减少显存浪费,避免超长请求拖慢整体 |
| 显存预留 | 不要把可用显存压到极限 | 给峰值请求留出空间,减少失败 |
| 健康检查 | 对服务做存活与就绪探测 | 异常实例能被自动摘除 |
| 灰度升级 | 新版本先小流量验证 | 避免引擎升级引发全量故障 |
吞吐与延迟是一组权衡:并发压得越高吞吐越好,但单请求等待时间会变长,在线交互与离线批量最好分开部署或分开限流。
不要把显存占用比例调到极限:一旦出现超长请求或并发峰值,服务会因显存不足直接崩溃,而不是优雅地拒绝部分请求。