vLLM 完整介绍
一、什么是 vLLM
vLLM 是加州伯克利团队开源的大模型高吞吐量推理引擎,核心目标:解决原生 PyTorch 推理慢、并发低、显存占用高的问题,主打离线批量推理、在线API服务、本地部署LLM。 全称:very Large Language Model inference engine Github:https://github.com/vllm-project/vllm
核心优势
- PagedAttention(分页注意力)
独创显存管理算法,类比操作系统虚拟内存分页,解决传统推理 KV Cache 碎片化问题:
- 显存利用率提升 2~4 倍
- 并发请求吞吐量提升数十倍
- 超长上下文(32k/128k)推理显存占用大幅降低
- 兼容主流模型 LLaMA、Qwen、GLM、Mistral、GPT-NeoX、Mixtral、Phi、Yi、Baichuan 等全部支持;支持 FP16/BF16/INT4/INT8/GPTQ/AWQ 量化。
- 开箱即用服务 内置兼容 OpenAI 接口的 HTTP 服务,可直接对接 LangChain、LlamaIndex、OpenAI SDK。
- 分布式支持 张量并行(单卡多GPU)、流水线并行(多机分布式),支持超大模型多卡拆分加载。
二、安装方式
1. 基础 pip 安装(CUDA GPU)
# 稳定版
pip install vllm
# 最新开发版
pip install git+https://github.com/vllm-project/vllm
依赖 CUDA 11.8 / 12.1,Windows 仅支持 WSL2,原生 Windows 暂不官方支持。
2. Docker 部署
官方提供预构建镜像,避免环境冲突:
docker run --gpus all -p 8000:8000 vllm/vllm-openai:latest
三、常用启动命令(OpenAI 兼容API服务)
最简启动(本地单卡)
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2-7B-Instruct \
--served-model-name qwen2-7b \
--port 8000 \
--host 0.0.0.0
关键常用参数
--model 模型路径/Huggingface名称
--tensor-parallel-size 多卡张量并行(4卡则设4)
--quantization gptq 加载GPTQ量化模型
--dtype auto 精度:fp16/bf16/float32
--max-model-len 32768 最大上下文长度
--gpu-memory-utilization 0.9 显存占用上限0.9
--enforce-eager 关闭CUDA graph(解决部分模型报错)
--trust-remote-code 加载自定义架构模型(如Qwen、GLM)
四、调用示例(OpenAI SDK)
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="dummy" # vllm无需真实key,填任意字符串
)
resp = client.chat.completions.create(
model="qwen2-7b",
messages=[{"role": "user", "content": "介绍vLLM"}]
)
print(resp.choices[0].message.content)
五、两种运行模式
-
离线批量推理 脚本批量处理大量文本,不需要起API服务,适合数据集生成、数据清洗: ```python from vllm import LLM, SamplingParams
llm = LLM(model="Qwen/Qwen2-7B-Instruct") sampling_params = SamplingParams(temperature=0.7, max_tokens=512) outputs = llm.generate(["你好"], sampling_params=sampling_params) ``` 2. 在线API服务 对外提供HTTP接口,支持多用户并发对话,生产环境首选。
六、适用场景
- 企业私有大模型在线服务(替代 transformers 原生推理)
- 数据批量生成、SFT 训练数据构造
- 高并发对话机器人、知识库问答后端
- 多卡分布式部署 70B/120B 超大开源模型
七、对比其他推理框架
| 框架 | 核心亮点 | 短板 |
|---|---|---|
| vLLM | PagedAttention,并发吞吐量最强,OpenAI接口友好 | 仅GPU,CPU推理支持弱 |
| TensorRT-LLM | NVIDIA硬件极致优化,低延迟 | 生态封闭,配置复杂 |
| Text Generation Inference(TGI) | 完整生产运维、日志监控 | 显存优化弱于vLLM |
| llama.cpp | 支持CPU/移动端量化 | 并发性能差,不适合高并发服务 |
八、常见问题
- 显存不足
开启量化
--quantization awq、降低max-model-len、调高张量并行多卡拆分。 - 模型加载报错
添加
--trust-remote-code,安装对应模型依赖。 - 吞吐量上不去
调高
gpu-memory-utilization,适当增大max-model-len充分利用KV缓存。
需要我给你一份7B/70B多卡分布式启动脚本,或者可直接运行的批量生成离线推理完整代码吗?