随着大语言模型在各类业务场景中的落地,如何以低延迟、高吞吐的方式部署推理服务成为关键挑战。vLLM 是一款专为高效推理设计的推理引擎,支持 OpenAI API 接口,具备极强的批处理能力和优秀的内存管理性能。
🧩 一、什么是 vLLM Serve?
vllm serve
是 vLLM 提供的命令行入口,用于启动一个 OpenAI API 兼容的推理服务,支持以下标准接口路径:
/v1/chat/completions
/v1/completions
/v1/tokenize
/v1/models
这意味着,原本面向 OpenAI 的 API 客户端代码无需改动即可切换使用本地部署的大模型,极大降低了模型替换成本。
⚙️ 二、服务启动方式
你可以通过以下方式启动服务:
✅ 方法一:CLI 启动
vllm serve \
--model /path/to/your/model \
--served-model-name my-model \
--port 8000
✅ 方法二:模块方式启动(推荐用于 Python 环境)
python3 -m vllm.entrypoints.openai.api_server \
--model /path/to/your/model \
--served-model-name my-model \
--port 8000
想了解完整参数可执行:
vllm serve --help
🔧 三、常用参数详解(建议收藏)
以下是部署实践中最常用的一些参数,按功能分类说明:
📁 模型与服务配置
参数 | 说明 |
---|---|
--model | 模型路径(支持本地路径或 Hugging Face 名称) |
--served-model-name | 服务暴露的模型名(体现于 API 调用中) |
--tokenizer | 指定分词器路径(可选) |
--dtype | 精度类型(float16 , bfloat16 , float32 ) |
--quantization | 模型量化方式(如 awq , gptq ) |
--max-model-len | 最大上下文长度(如 8192、20000) |
⚡ 性能与并发优化
参数 | 说明 |
---|---|
--tensor-parallel-size | 张量并行 GPU 数量(多卡部署) |
--gpu-memory-utilization | GPU 显存占用上限比例(推荐 0.9~0.95) |
--max-num-batched-tokens | 每次 batch 中最大 token 数量 |
--max-num-seqs | 单批处理的最大请求数 |
--kv-cache-dtype | KV 缓存精度类型(auto 、float16 ) |
📦 Batching 与缓存优化
参数 | 说明 |
---|---|
--enable-prefix-caching | 启用提示词缓存,提升重复请求性能 |
--enable-chunked-prefill | 启用 Chunked Prefill,优化长上下文处理 |
--disable-batching | 禁用批处理(调试用) |
🛠 工具调用支持(Tool Use)
参数 | 说明 |
---|---|
--enable-auto-tool-choice | 启用工具自动选择(Tool Choice 模型适配) |
--tool-call-parser | 工具调用结构解析器(如 hermes ) |
🔁 投机采样(Speculative Decoding)
vLLM 0.8.5+ 开始支持投机采样,可通过以下参数启用:
--speculative_config '{
"model": "/path/to/draft-model",
"num_speculative_tokens": 3,
"draft_tensor_parallel_size": 1
}'
投机采样可通过轻量 draft 模型提前生成 token,主模型验证,大幅提升吞吐量。
📉 日志与诊断
参数 | 说明 |
---|---|
--disable-log-requests | 禁用推理请求日志 |
--disable-uvicorn-access-log | 关闭 HTTP 日志 |
--log-level | 日志级别(如 info , debug ) |
🌐 网络设置
参数 | 说明 |
---|---|
--host | 服务监听地址(默认 127.0.0.1) |
--port | 服务端口 |
--ssl-keyfile / --ssl-certfile | 启动 HTTPS 服务的证书配置 |
🧵 四、量化模型说明(Quantization)
vLLM 支持多种量化格式(如 AWQ
, GPTQ
等),可直接加载量化后的模型路径部署,但请注意:
- 量化模型应保留 KV 缓存能力;
- 某些特性如投机采样或 chunked prefill 可能暂不兼容;
- 建议结合实际测试开启这些优化参数。
🧠 五、Token-Level Batching 的优势
vLLM 的核心优势之一是 Token-Level Batching,即只要当前 token 数一致即可合并请求为一个 batch,极大提升并发性能。
这意味着:
- 不同长度的请求可动态组织成高效批处理;
- 高吞吐量服务可以稳定支持上千 QPS 的接口压力。
📄 六、使用 YAML 配置部署(vLLM 0.9.0+)
vLLM 0.9.0 起支持通过 YAML 文件统一管理参数,便于 CI/CD 或容器部署场景。
✅ 示例 config.yaml:
model: /path/to/your/model
served-model-name: my-model
tensor-parallel-size: 1
gpu-memory-utilization: 0.95
port: 8000
enable-prefix-caching: true
enable-chunked-prefill: true
disable-log-requests: true
disable-uvicorn-access-log: true
speculative_config:
model: /path/to/draft-model
num_speculative_tokens: 3
draft_tensor_parallel_size: 1
启动方式:
vllm serve --config config.yaml
这种方式尤其适合 K8s、Slurm 等自动化环境,配置清晰、管理高效。
✅ 七、最佳实践总结
场景 | 建议参数 |
---|---|
高并发服务部署 | --enable-prefix-caching , --enable-chunked-prefill , 合理设置 --max-num-seqs |
使用量化模型 | 确认量化模型格式和 KV 缓存支持,测试 chunked 和 speculative 兼容性 |
对响应速度极致优化 | 开启投机采样,合理选择 draft 模型 |
跨团队协作/多环境部署 | 使用 YAML 配置统一参数管理 |
📌 参考链接:vLLM 官方 GitHub