一、vLLM 是什么?
vLLM 是一个快速且易于使用的库,用于 LLM 推理和服务。
1.1 核心优势
- vLLM 速度很快,因为它具有:
- 最先进的服务吞吐量
- 使用
PagedAttention 对注意力键和值内存进行高效管理
- 对传入请求进行连续批处理
- 使用
CUDA/HIP 图进行快速模型执行
- 量化:
GPTQ、AWQ、INT4、INT8 和 FP8
- 优化的
CUDA 内核,包括与 FlashAttention 和 FlashInfer 的集成。
- 推测解码
- 分块预填充
- vLLM 灵活且易于使用,因为它具有:
- 与流行的
HuggingFace 模型无缝集成
- 使用各种解码算法(包括
并行采样、束搜索 等)进行高吞吐量服务
- 支持分布式推理的
张量并行 和 管道并行
- 流式输出
- 与
OpenAI 兼容的 API 服务器
- 支持 NVIDIA GPU、AMD CPU 和 GPU、Intel CPU 和 GPU、PowerPC CPU、TPU 和 AWS Neuron。
- 支持前缀缓存
- 支持多 LoRA
二、快速开始
2.1 安装
1 2
| conda create -n vllm python=3.10 -y && conda activate vllm pip install vllm
|
2.2 验证
2.3 默认仓库
vLLM 默认从 HuggingFace 上面下载模型
如果需要从 ModelScope 上面下载模型,设置以下环境变量:
1
| export VLLM_USE_MODELSCOPE=True
|
三、高级命令说明
3.1 调用在线模型 chat 示例
1 2 3 4 5
| vllm chat \ --model-name glm-4-plus \ --url https://open.bigmodel.cn/api/paas/v4/ \ --api-key api_key \ --system-prompt "你是一个AI助手"
|
3.2 调用在线模型 complete 示例
1 2 3 4
| vllm complete \ --model-name glm-4-plus \ --url https://open.bigmodel.cn/api/paas/v4/chat \ --api-key api_key
|
3.3 启动服务
| 参数 |
说明 |
--host |
设置服务绑定的主机地址(默认 127.0.0.1,公网访问需设为 0.0.0.0) |
--port |
设置服务端口(默认 8000) |
--api-key |
设置 OpenAI 兼容 API 的访问密钥(可选) |
--block-size |
PagedAttention 的块大小(默认 16,影响显存效率) |
--max-num-seqs |
控制请求调度和吞吐量 |
--max-num-batched-tokens |
批处理的最大 token 数(影响吞吐量) |
--gpu-memory-utilization |
GPU 内存利用率(0-1) |
--cpu-offload-gb |
将部分模型权重卸载到 CPU 内存(默认 0,禁用) |
--max-model-len |
设置最大序列长度(默认由模型决定) |
--quantization |
启用量化(如 gptq、awq) |
--tensor-parallel-size |
设置 Tensor 并行规模(多 GPU 分布式推理) |
--trust-remote-code |
允许加载 Hugging Face 模型时执行远程代码(安全风险提示) |
--enforce-eager |
禁用 CUDA 图优化(提升兼容性,可能降低性能) |
--log-level |
设置日志输出级别(如 info、debug) |
-- |
设置配置文件(yaml 格式) |
示例:
1 2 3 4 5 6 7
| vllm serve \ /path/to/model \ --gpu-memory-utilization 0.95 \ --max-model-len 1024 \ --block-size 16 \ --max-num-seqs 4 \ --tensor-parallel-size 1
|
3.4 基准测试工具
用于评估大语言模型推理的 性能指标(如吞吐量、延迟、显存占用等)
| 参数 |
说明 |
--model |
模型路径 |
--tokenizer |
可选的独立 tokenizer 路径 |
--num-prompts |
API 密钥 |
--max-num-seqs |
测试使用的 prompt 数量 |
--seed |
随机种子 |
1 2
| vllm bench serve \ --model /path/to/model
|
四、API 调用
4.1 REST API
1 2 3 4 5 6
| curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "model_name", "messages": [{"role": "user", "content": "你好"}] }'
|
五、高级功能
5.1 对接可视化界面
搭配 OpenWebUI:
1 2
| export OPENAI_API_BASE_URL=http://localhost:8000/v1 open-webui serve
|
5.2 分布式推理核心机制
- 张量并行:通过
--tensor-parallel-size 参数指定 GPU 数量,支持多卡协同计算。
- PagedAttention:将注意力机制的键值(KV)缓存分块存储,减少显存碎片,提升利用率。
- 连续批处理:动态合并不同长度的请求,减少 CPU 空闲时间。
注意:
- 通过访问
http://localhost:8080 使用 Web 界面。
- 不设置
OPENAI_API_BASE_URL 环境变量
- 可以通过在 web 界面配置中手动设置 API 地址(
头像 -> 设置 -> 外部连接 -> + -> URL -> 密匙 -> 保存)
- web 界面左上角选择对应模型即可
六、总结
vLLM 是 生产级大模型推理的终极解决方案,尤其适合:
- 🚀 高并发场景:每秒处理数百请求
- 💾 显存敏感环境:PagedAttention 实现零浪费
- 🔌 快速集成:完全兼容 OpenAI API
资源推荐: