vLLM(Virtual Large Language Model)是由加州大学伯克利分校团队开发的高性能大模型推理框架,其核心特点围绕显存优化、高吞吐量、灵活性和易用性展开。
对比 ollama 作为个人开发者部署模型工具而言,vLLM 专注于高并发请求和大规模生产环境,适用于企业级应用和需要高效推理的场景。vLLM 通过优化内存管理和并发处理,适合处理高负载的生产环境 。
一、vLLM 核心优势
高性能相关
1. PagedAttention 技术(分页注意力机制)
核心创新:借鉴操作系统虚拟内存分页机制,将注意力计算中的Key/Value 缓存(KV Cache) 划分为固定大小的"页",动态分配显存,显著减少内存碎片化。
- 传统问题:传统框架需为每个请求预分配连续显存空间,导致利用率低(仅 20%-40%)。
- vLLM 解决方案:按需分配显存页,支持动态扩展,显存利用率提升至接近 100%。
例如,LLaMA-7B 模型显存占用可从 14GB 压缩至 4GB(使用 INT4 量化)。 支持长上下文(如 128K 或 10M token)的高效处理,减少显存浪费。
2. 连续批处理(Continuous Batching)
动态合并请求:实时合并多个推理请求,避免静态批处理的等待延迟,最大化 GPU 利用率。
吞吐量提升:
- 相比 Hugging Face Transformers,吞吐量提升 24 倍(如 LLaMA-7B 模型)。
- 在高并发场景下,吞吐量可达传统框架的 5-10 倍。
3. 量化支持(模型压缩与加速)
兼容主流量化方法:支持 GPTQ、AWQ、SqueezeLLM、FP8 KV Cache 等,显著降低显存占用和计算开销。
量化效果:
- INT4 量化:将 7B 模型显存需求从 14GB 压缩至 4GB,同时保持精度损失<1%。
- 适用于消费级显卡(如 RTX 4090)部署 7B-13B 模型。
4. 高性能与分布式推理
多 GPU 张量并行:支持分布式部署,例如在 4 块 A100 GPU 上运行 70B 参数模型。
CUDA 优化:使用 CUDA/HIP 图(CUDA Graphs)加速模型执行。 -高性能 CUDA 内核优化,减少计算延迟。
易用性相关
5. 易用性与兼容性
与 Hugging Face 无缝集成:支持 50+主流模型(如 LLaMA、Qwen、Mistral、XVERSE 等)。
OpenAI API 兼容:可直接替换 OpenAI 接口,提供标准 API 服务(如/v1/completions)。
灵活的部署选项:支持流式输出、前缀缓存、多 LoRA 适配及离线批量推理。
6. 解码算法多样性
并行采样(Parallel Sampling):单次前向传播生成多个输出(如多种回答),降低计算成本。
波束搜索(Beam Search):提升生成文本的准确性和多样性。
自定义解码策略:支持根据场景选择最优解码算法。
二、部署环境准备
vLLM 是一个 Python 库,包含预编译的 C++ 和 CUDA (12.1) 二进制文件。
依赖环境
- 操作系统:Linux
- Python:3.8 - 3.12
- GPU:计算能力 7.0 或更高(例如 V100、T4、RTX20xx、A100、L4、H100 等)
ps: vLLM 只能在 Linux 系统上才能完全运行。
使用 pip 安装
可以使用 python 的 pip 工具安装 vLLM:
ini
# (Recommended) Create a new conda environment.
#(推荐)创建一个新的 conda 环境。
conda create -n myenv python=3.10 -y
conda activate myenv
# Install vLLM with CUDA 12.1.
# 安装带有 CUDA 12.1 的 vLLM。
pip install vllm
使用 docker 安装
vLLM 提供了一个官方 Docker 镜像用于部署。该镜像可用于运行与 OpenAI 兼容服务器,并且可在 Docker Hub 上以 vllm/vllm-openai 的形式获取。
bash
docker run --runtime nvidia --gpus all \
-v ~/.cache/huggingface:/root/.cache/huggingface \
--env "HUGGING_FACE_HUB_TOKEN=<secret>" \
-p 8000:8000 \
--ipc=host \
vllm/vllm-openai:latest \
--model mistralai/Mistral-7B-v0.1
使用 ipc=host 标志或 --shm-size 标志来允许容器访问主机的共享内存。 vLLM 使用 PyTorch,而 PyTorch 在底层使用共享内存在进程之间共享数据,特别是在张量并行推理中。
默认情况下,为实现最广泛分发,vLLM 将为所有 GPU 类型进行构建。如果您只是针对机器运行的当前 GPU 类型进行构建,则可以为 vLLM 添加参数 --build-arg torch_cuda_arch_list= "" 来查找当前 GPU 类型并为其构建。
三、模型下载启动
这里用 DeepSeek 最新模型 V3-0324 模型下载来给大家作为参考。

在 huggingface 搜索 deepseek-ai/DeepSeek-V3-0324 即可找到 deepseek v3 的最新模型,
点击 Use this model 即可找到下载模型命令,

在 vllm 种,我们要下载模型并使用其中一个模型来启动服务器,请使用 vllm serve 命令,例如:
arduino
vllm serve "deepseek-ai/DeepSeek-V3-0324"
安装并启动后,服务启动在 http://localhost:8000/。
分布式推理和服务
vLLM 支持分布式张量并行推理和服务。目前,我们支持 Megatron-LM 的张量并行算法。我们还支持将管道并行作为在线服务的测试版功能。我们使用 Ray 或 python 的原生多进程来管理分布式运行时。在单节点部署时可以使用多进程,多节点推理目前需要 Ray。
这也是 vllm 对比 ollama 的核心优势。能有效地利用多核 CPU 和 GPU 资源,显著提升 LLM 的推理速度
单节点多 GPU 部署
要运行多 GPU 服务,在启动服务器时传入张量并行 --tensor-parallel-size 参数。例如要在 4 个 GPU 上运行 API 服务器:
bash
# 设置张量并行(需多GPU)
vllm serve "deepseek-ai/DeepSeek-V3-0324" \
--tensor-parallel-size 4 \ # 根据GPU数量调整
多节点多 GPU 部署
可以将张量并行与管道并行结合使用。张量并行大小是每个节点要使用的 GPU 数量,管道并行大小是要使用的节点数量.例如,如果 2 个节点中有 8 个 GPU(每个节点 4 个 GPU),则可以将张量并行大小设置为 4,将管道并行大小设置为 2。
arduino
vllm serve "deepseek-ai/DeepSeek-V3-0324" \
--tensor-parallel-size 4 \ # 根据GPU数量调整
--pipeline-parallel-size 2 # 根据节点数量调整
关键参数说明
参数 | 说明 |
---|---|
--tensor-parallel-size |
GPU 张量并行度,需与 GPU 数量匹配(如 4 卡设为 4)。 |
--max-batch-size |
最大批量请求大小,默认 16,可调高以提升吞吐。 |
--swap-space |
磁盘交换空间,避免显存溢出(如设为 20GiB)。 |
--enable-async-execution |
启用异步执行,减少等待时间。 |
更多关于多节点多 GPU 部署的信息可以参考官方文档:docs.vllm.ai/en/stable/s...
四、跟 vLLM 推理服务交互
通过 python 代码交互
服务器运行后,可以通过 python 代码调用其 API:
ini
from openai import OpenAI
client = OpenAI(base_url='http://localhost:3000/v1', api_key='na')
# Use the following func to get the available models
# model_list = client.models.list()
# print(model_list)
chat_completion = client.chat.completions.create(
model="deepseek-ai/DeepSeek-V3-0324",
messages=[
{
"role": "user",
"content": "Tell me something about large language models."
}
],
stream=True,
)
for chunk in chat_completion:
print(chunk.choices[0].delta.content or"", end="")
通过 cli 交互
lua
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "deepseek-ai/DeepSeek-V3-0324",
"messages": [
{
"role": "user",
"content": "What is the capital of France?"
}
]
}
五、总结
通过本文,你已掌握 vLLM 从环境配置到高性能推理服务部署的全流程。vLLM 凭借其灵活性和高效性,成为大模型落地的首选工具。无论是本地开发还是云服务器部署,只需根据硬件资源调整参数,即可快速实现高并发、低延迟的推理服务。