vLLM 推理后端简介
- 简介
- 一、核心优势
-
- [1️⃣ PagedAttention(核心创新)](#1️⃣ PagedAttention(核心创新))
- [2️⃣ 连续批处理](#2️⃣ 连续批处理)
- [3️⃣ 高吞吐 + 低延迟](#3️⃣ 高吞吐 + 低延迟)
- [4️⃣ OpenAI API 兼容](#4️⃣ OpenAI API 兼容)
- [5️⃣ 部署简单](#5️⃣ 部署简单)
- 二、使用示例
-
- [1️⃣ 启动服务](#1️⃣ 启动服务)
- [2️⃣ Python 调用](#2️⃣ Python 调用)
- [3️⃣ curl 调用](#3️⃣ curl 调用)
- [三、vLLM vs Hugging Face Transformers](#三、vLLM vs Hugging Face Transformers)
- [四、与 MCP 的关系](#四、与 MCP 的关系)
-
- [MCP(Model Context Protocol) 👉 是"协议层"](#MCP(Model Context Protocol) 👉 是“协议层”)
- [vLLM 👉 是"推理执行层"](#vLLM 👉 是“推理执行层”)
简介
vLLM 是一个面向大语言模型(LLM)的高性能推理引擎,其核心目标是:以极高吞吐量 + 低延迟运行模型,同时保持部署简单
🧪 相比传统推理方式(如 Hugging Face Transformers),vLLM 更像是一个"专为生产环境设计的 LLM 推理服务器"。
⚠️ 注意
目前 vLLM 仅支持 NVIDIA GPU(CUDA),不支持 AMD、Intel GPU 或 Apple Silicon 进行核心推理。
一、核心优势
1️⃣ PagedAttention(核心创新)
vLLM 最重要的技术之一是:
👉 PagedAttention
它解决了一个关键问题:LLM 推理时 KV Cache 占用大量显存,并且极度碎片化
传统问题:
- 每个请求单独占用 KV Cache
- 显存碎片严重
- 并发一高就 OOM
vLLM 的做法:
- 类似"操作系统分页内存"
- KV Cache 按块(page)管理
- 动态分配 / 回收
📌 结果:
- 显存利用率大幅提升
- 支持更高并发
- 减少 OOM
2️⃣ 连续批处理
传统推理(Transformers):
- 一批请求必须"同时开始,同时结束"
- 后来的请求要排队
vLLM:
👉 请求可以随时加入 batch
效果:
- GPU 始终保持高利用率
- 延迟更稳定
- 吞吐量大幅提升
3️⃣ 高吞吐 + 低延迟
在实际测试中(官方与社区数据):
- 吞吐量:提升 2~10 倍
- 延迟:显著降低(尤其高并发)
适用于:
- Chat API
- Agent系统
- RAG问答
- 多用户服务
4️⃣ OpenAI API 兼容
vLLM 原生支持:
👉 OpenAI API 格式
例如:
bash
POST /v1/chat/completions
这意味着:
- 可以直接替换 OpenAI
- 兼容 LangChain / LlamaIndex / Agent 框架
- 几乎零改造接入
5️⃣ 部署简单
启动一个服务只需一行命令:
bash
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-7B-Instruct \
--port 8000
即可得到一个:
👉 本地 OpenAI API Server
二、使用示例
1️⃣ 启动服务
bash
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-7B-Instruct \
--host 0.0.0.0 \
--port 8000
2️⃣ Python 调用
python
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="EMPTY"
)
resp = client.chat.completions.create(
model="Qwen/Qwen2.5-7B-Instruct",
messages=[
{"role": "user", "content": "介绍一下vLLM"}
]
)
print(resp.choices[0].message.content)
3️⃣ curl 调用
bash
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen2.5-7B-Instruct",
"messages": [{"role": "user", "content": "你好"}]
}'
三、vLLM vs Hugging Face Transformers
| 项目 | Value |
|---|---|
| 电脑 | $1600 |
| 手机 | $12 |
| 导管 | $1 |
| 维度 | vLLM | Transformers |
|---|---|---|
| 设计目标 | 生产级推理服务 | 通用模型框架 |
| 并发能力 | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| 显存利用 | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| 吞吐量 | 高(2~10倍) | 中 |
| 易用性 | 高(API Server) | 中 |
| 灵活性 | 中 | ⭐⭐⭐⭐⭐ |
| 训练支持 | ❌ | ✅ |
四、与 MCP 的关系
MCP(Model Context Protocol) 👉 是"协议层"
作用:
- 统一模型调用方式
- 标准化工具调用
- 支持 Agent 生态
vLLM 👉 是"推理执行层"
作用:
- 真正运行模型
- 返回推理结果
👉 MCP ≠ vLLM
👉 它们是上下游关系