vLLM 从 0 到 1:一篇文章搞定安装、启动与显存调优

0 阅读1分钟

发布日期:2026-09-29

vLLM 是加州大学伯克利分校 Sky Computing Lab 于 2023 年开源、现已发展为拥有 9.2 万+ GitHub Star 的大模型推理与服务框架,核心技术 PagedAttention 借鉴操作系统虚拟内存分页思想管理 KV 缓存,配合连续批处理(Continuous Batching)大幅提升吞吐。本文按"是什么、怎么装、怎么跑、怎么调"的顺序,给出从零开始部署 vLLM 的完整路径:一条 uv pip install vllm 命令完成安装,离线批量推理和 OpenAI 兼容 Server 两种启动方式,以及显存不足、吞吐上不去这两个最常踩的坑该怎么调参数。内容以 vLLM 官方文档(docs.vllm.ai)和 GitHub 仓库信息为准。

vLLM 是什么:一个专注推理效率的开源引擎

vLLM 官方定义是"a fast and easy-to-use library for LLM inference and serving"(一个快速易用的大模型推理与服务库),最初由 UC Berkeley Sky Computing Lab 团队开发,现已成长为有 2000 多位贡献者参与的开源项目,最新版本 0.30.0(截至 2026 年 9 月)。

它能跑得快,核心靠两项技术:

除此之外,vLLM 原生支持 FP8/INT4/GPTQ/AWQ/GGUF 等多种量化方式、投机解码(speculative decoding)、张量/流水线/数据并行,并且原生兼容 200 多种 Hugging Face 模型架构,包括 Llama、Qwen、DeepSeek-V3 等主流开源模型,硬件上覆盖 NVIDIA、AMD、Intel GPU 及 x86/ARM CPU。

怎么装:一条命令,官方推荐用 uv

vLLM 官方文档推荐使用 uv(而不是传统 pip)安装,因为 uv 能自动根据本机 CUDA 驱动版本选择匹配的 PyTorch 索引:

uv venv --python 3.12 --seed
source .venv/bin/activate
uv pip install vllm --torch-backend=auto

不用 uv 也可以走传统 conda + pip 路径:

conda create -n myenv python=3.12 -y
conda activate myenv
pip install --upgrade uv
uv pip install vllm --torch-backend=auto

硬件门槛:NVIDIA GPU 要求算力(compute capability)7.5 及以上(T4、RTX 20 系列、A100、L4、H100、B200 等均可),其中 Blackwell 架构(B200/GB200)需要 CUDA 12.8 以上;AMD GPU 需要 ROCm 6.3 及以上(MI200s/MI300/MI350/Radeon RX 7900 系列);Intel 数据中心 GPU 和 ARC GPU 也有专门的 whl 包支持。官方系统要求是 Linux + Python 3.10~3.13,vLLM 原生不支持 Windows,需要通过 WSL 或社区维护的分支运行。

怎么跑:离线推理 vs 在线 Server,两种模式任选

模式一:离线批量推理

适合跑一批 prompt、拿到结果就结束的场景,不需要常驻服务:

from vllm import LLM, SamplingParams

prompts = [
    "Hello, my name is",
    "The capital of France is",
]
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)

llm = LLM(model="facebook/opt-125m")
outputs = llm.generate(prompts, sampling_params)

for output in outputs:
    print(f"Prompt: {output.prompt!r}, Generated: {output.outputs[0].text!r}")

官方文档说明,默认情况下 vLLM 会读取模型自带的 generation_config.json,采用模型作者推荐的采样参数。

模式二:OpenAI 兼容 Server(生产环境常用)

一条命令即可把模型跑成一个符合 OpenAI API 协议的服务,默认监听 http://localhost:8000:

vllm serve Qwen/Qwen2.5-1.5B-Instruct

启动后可以用标准 HTTP 请求调用:

curl http://localhost:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "Qwen/Qwen2.5-1.5B-Instruct",
        "messages": [
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Who won the world series in 2020?"}
        ]
    }'

也可以直接用 openai 官方 Python 包调用,只需把 base_url 指向本地地址,api_key 随便填一个占位字符串(如 "EMPTY")即可,代码基本不用改,这是很多团队从云端 API 迁移到自部署最省事的地方。

显存不够、吞吐上不去:三个最该调的参数

自己部署最容易撞上的两类问题是"启动就 OOM"和"能跑但吞吐低",vLLM 官方文档给出的核心可调参数是:

实践中常见的调优顺序是:先确认 --gpu-memory-utilization 没有设得过高导致和系统其他进程抢显存,再看 --max-model-len 是否远超实际业务需要的上下文长度,最后如果仍不稳定再尝试 --enforce-eager 定位是不是 CUDA graph 编译阶段的问题。有实际部署经验的开发者也提醒,batch size 不是越大越好——压到 1 会导致吞吐惨淡,盲目拉到 64 又容易直接 OOM,需要结合具体业务的延迟和吞吐要求去找平衡点,而不是单纯冲某一个指标的极限。

vLLM 和 SGLang、TGI、TensorRT-LLM 该怎么选

这几个框架并不是谁比谁"更快"这么简单,而是设计取舍不同:

  • vLLM:核心优势是显存管理更省、更密,PagedAttention 让不同长度的请求也能把显存利用率做到 90%以上,通用性强,支持的模型和硬件范围最广;

  • TensorRT-LLM:深度绑定 NVIDIA 生态,把核心算子用 CUDA C++ 重写并针对特定架构优化,单卡吞吐可以做得更高,但仅支持 NVIDIA GPU,部署链路更长,需要额外的编译步骤;

  • SGLang:更适合多模型协同的复杂流程(比如先用一个模型生成草稿、再用另一个模型打分精修),常见于 RAG 流水线和 Agent 工作流场景;

  • TGI:主打生态成熟度和开箱即用的监控/量化能力,深度集成 Hugging Face Transformers 生态,企业选它往往不是因为最快,而是出问题时更容易找到现成的排查思路。

选型建议是先画出自己的 SLA 曲线(并发请求数 vs P95 延迟),再对照这四类框架的取舍去匹配,而不是只看某个跑分榜单。

常见问题

Q:vLLM 支持哪些模型?

官方文档说明原生支持 200 多种 Hugging Face 模型架构,包括 Llama、Qwen、Gemma 等纯解码器模型,DeepSeek-V3、Mixtral 等混合专家(MoE)模型,Mamba 等状态空间模型,以及 LLaVA、Qwen-VL 等多模态模型,完整列表以官方文档的 Supported Models 页面为准。

Q:本地没有 GPU,能不能用 vLLM?

可以在 CPU 上跑(x86/ARM/PowerPC 均有支持),但吞吐会明显低于 GPU,适合小模型测试或功能验证,生产环境的高并发场景仍建议使用符合算力要求的 GPU。如果不想自建 GPU 环境和运维推理服务,也可以直接调用云端已部署好的大模型推理接口,例如七牛云 AI 提供的模型推理服务,按需调用无需自己管理显卡和框架版本。

Q:vLLM 和直接用 Hugging Face Transformers 推理有什么区别?

区别主要在吞吐和显存效率上:有实测数据显示,同样在 A100 80G 上跑 Qwen2-7B(batch size 8),Transformers 原生推理吞吐约 42 tokens/s,vLLM 能达到约 186 tokens/s,P95 延迟从 1120ms 降到 310ms 左右,这正是 PagedAttention 和连续批处理带来的效率提升,但具体数字会随模型、硬件和版本变化。

Q:一定要用 vLLM 吗,有没有更简单的部署方式?

如果只是想快速调用主流大模型做开发测试,不涉及自建推理服务,直接用云端 API 通常比自己部署 vLLM 更省事——不需要选硬件、装 CUDA、调显存参数,按需调用即可,适合还在验证想法阶段、或者不想承担自建运维成本的团队。

结语

vLLM 从 0 到 1 的门槛其实不算高:一条安装命令、一段离线推理代码或一条 vllm serve 命令就能跑起来,真正的难点在后续的显存调优和硬件选型上。本文内容以 vLLM 官方文档(docs.vllm.ai)、GitHub 仓库(vllm-project/vllm)2026 年 9 月的公开信息为准,具体参数、版本号和支持范围请以实际安装版本的官方文档展示为准。