本地要跑大模型推理服务,vLLM 官方怎么把最小路径跑通?

给应用调一个本机的推理接口,和先打开一个对话客户端,不是同一条路。已经导出成 ONNX、只在本机把这种格式跑一遍,也不是这件事。本机对话或模型服务入口可以看站内这篇 Ollama。已经导出成 ONNX、只谈这种格式的运行时,是 ONNX Runtime。这里只按 vLLM 官方把最小的推理服务路径跑通。

vLLM 文档首页 把它写成用于 LLM 推理和提供服务的库,最初在加州大学伯克利分校的 Sky Computing Lab 开发。要跑开源模型,官方建议从 Quickstart 开始。若目标是在它之上写应用,首页另指向 User Guide,构建项目本身则指向 Developer Guide。这两页都在 docs.vllm.ai 的 latest 路径下,页顶会提示当前看的是最新开发预览文档,并提供指向稳定版文档的链接。下面的安装和启动命令都抄自这份 Quickstart,不另写未打开页面里的硬件支持细节或吞吐数字。

Quickstart 的前提写成:操作系统是 Linux,Python 为 3.11 到 3.14。页里也注明在 macOS 上可通过 vLLM-Metal 使用 Apple Silicon 的 GPU 加速。它用 MLX 而不是 PyTorch 作为计算后端,并需要 Hugging Face 上 mlx-community 的优化模型。更细的步骤要到安装指南的 Apple Silicon 分页去看。NVIDIA GPU 的安装,官方推荐用 uv 建环境,示例是:

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

--torch-backend=auto 会按已安装的 CUDA 驱动选择 PyTorch 索引,也可以改成指定后端,例如 cu126。vllm download-kernels 用来装预编译内核。官方写若放到启动时再下载编译,在 Hopper 及更新的 GPU 上可能多花几分钟。这是官方对启动耗时的说明,并没有给出吞吐或显存占用的数字。不想留下长期环境时,同一页还写了 uv run --with vllm vllm --help 这种一次性跑法。也可以先用 conda 建名为 myenv、Python 3.12 的环境,再在其中安装 uv,并用同样的 uv pip install vllm --torch-backend=auto。同一页还按 AMD、Intel GPU、TPU、昇腾、Apple Silicon 分成不同安装标签,第一次若是 CUDA 环境,按上面这条即可。非 CUDA 平台官方指向 Installation 指南,那些分页这里没有展开。

Quickstart 分离线批量推理和在线服务两条。只要 HTTP 服务,走后一条。官方写 vLLM 可以起一个实现了 OpenAI API 协议的服务,当作现有 OpenAI API 调用的替换。默认为 http://localhost:8000,地址可用 --host、--port 修改。一次托管一个模型,并实现 list models、create chat completion、create completion 等端点。启动示例是:

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

随后可用 curl http://localhost:8000/v1/models 查看模型列表。官方给出的补全请求示例是向 /v1/completions 提交 JSON,其中包含 model、prompt(示例写成 "San Francisco is a")、max_tokens 和 temperature。对话则打 /v1/chat/completions,messages 里带 system、user 这类角色。也可以把 openai Python 包的 base_url 指到 http://localhost:8000/v1。文档示例里把 api_key 写成 "EMPTY"。需要校验请求时,可用 --api-key 或环境变量 VLLM_API_KEY,--api-key 可以传多把钥匙,服务端接受其中任意一把。默认会使用 tokenizer 里预置的 chat template,也默认在模型仓库存在 generation_config.json 时采用其中推荐的采样参数。若要改用 vLLM 自己的默认值,启动时加 --generation-config vllm。

离线批量推理是同一页里的另一条路径,用 LLM 和 SamplingParams 在进程内调用 generate,示例模型是 facebook/opt-125m,不经过这台 HTTP 服务。官方首页还写明它能衔接常见的 Hugging Face 模型,并提供兼容 OpenAI 的 API 服务,另外也提到 Anthropic Messages API 和 gRPC。Quickstart 演示的是 OpenAI 兼容这一条,本篇按这条把服务拉起来。模型默认从 Hugging Face 下载。若改用 ModelScope,要在初始化引擎前设置环境变量 VLLM_USE_MODELSCOPE=True。首页还列了多种硬件和一批受支持的模型架构,那些不是把最小路径跑通所必须核对的数字或选型依据,硬件支持和吞吐数字这里不另外引用。

你是打算按文档示例起 Qwen2.5-1.5B-Instruct 这只服务,还是已经有要换成自己的模型名?