文章目录
一、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 安装
conda create -n vllm python=3.10 -y && conda activate vllm
pip install vllm
2.2 验证
vllm --version # 查看版本
2.3 默认仓库
vLLM 默认从 HuggingFace
上面下载模型
如果需要从 ModelScope
上面下载模型,设置以下环境变量:
export VLLM_USE_MODELSCOPE=True
三、高级命令说明
3.1 调用在线模型chat示例
vllm chat \
--model-name glm-4-plus \ # 模型名称
--url https://open.bigmodel.cn/api/paas/v4/ \ # 模型地址
--api-key api_key \ # API 密钥
--system-prompt "你是一个AI助手" # 系统提示
3.2 调用在线模型complete示例
vllm complete \
--model-name glm-4-plus \ # 模型名称
--url https://open.bigmodel.cn/api/paas/v4/chat \ # 模型地址
--api-key api_key # API 密钥
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格式) |
示例:
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 | 随机种子 |
vllm bench serve \
--model /path/to/model
四、API调用
4.1 REST API
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "model_name",
"messages": [{"role": "user", "content": "你好"}]
}'
五、高级功能
5.1 对接可视化界面
搭配 OpenWebUI:
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 界面左上角选择对应模型即可
- 可以通过在 web 界面配置中手动设置 API 地址(
六、总结
vLLM 是 生产级大模型推理的终极解决方案,尤其适合:
- 🚀 高并发场景:每秒处理数百请求
- 💾 显存敏感环境:PagedAttention 实现零浪费
- 🔌 快速集成:完全兼容 OpenAI API
资源推荐: