vLLM 命令速查表 - 高性能 LLM 推理与服务部署
vLLM 与 llama.cpp、Ollama 的差别不在"能不能跑模型",而在吞吐模型:它用 PagedAttention 管理 KV 缓存、连续批处理把不同长度的请求拼成一个 batch,目标是在给定显存下把每秒 token 推到最高。所以判断该不该上 vLLM 看三个信号:需要 OpenAI 兼容接口给多业务复用、请求量足够大到 batch 优化有收益、并且愿意为显存与运维付费。要动手的是三处:先按显存算 --gpu-memory-utilization 决定能吃下多大模型,再按卡数定 --tensor-parallel-size(TP 不等于数据并行,切错会拖慢),最后在精度与成本之间选量化格式。AWQ 与 GPTQ 的取舍标准是显存是否卡住你,而不是速度本身——量化常带来吞吐下降,只有显存不够时才值得换。
安装 5
pip install vllmpip install vllm --upgradevllm --versionpython -c "import vllm; print(vllm.__version__)"vllm --help启动 OpenAI 兼容服务 5
vllm serve facebook/opt-125mvllm serve <model> --host 0.0.0.0 --port 8080vllm serve <model> --api-key <key>vllm serve <model> --tensor-parallel-size 2vllm serve <model> --gpu-memory-utilization 0.9客户端调用 5
curl http://localhost:8000/v1/modelscurl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{"model":"...","messages":[...]}'openai_api_base=http://localhost:8000/v1vllm serve <model> --max-model-len 8192vllm serve <model> --enforce-eager量化与性能 5
vllm serve <model> --quantization awqvllm serve <model> --quantization gptqvllm serve <model> --enable-prefix-cachingvllm serve <model> --max-num-seqs 256vllm serve <model> --dtype half实用技巧 5
服务默认 :8000大模型先 --gpu-memory-utilizationTP 数 = 显卡数调试开 --enforce-eager量化换吞吐/显存提示
- vLLM 是高吞吐 LLM 推理引擎(PagedAttention + 连续批处理),把开源模型以 OpenAI 兼容协议暴露出来,是自建推理服务的首选。
- 服务默认监听 :8000(不是 OpenAI 的 :8080),客户端改
base_url=http://localhost:8000/v1即可无缝替换。 - 显存不够先调
--gpu-memory-utilization;多卡用--tensor-parallel-size按卡数设;调试诡异问题开--enforce-eager。 - AWQ/GPTQ 量化能在精度与成本间取舍;
--enable-prefix-caching对多轮/重复前缀场景提速明显。 - 默认服务端口是 8000,不是 Ollama 的 11434 也不是 OpenAI 的 8080;旧客户端只需把 base_url 改成 http://host:8000/v1 并保留 /v1 后缀即可。
- 启动报显存不足或被预分配卡住时,先把 --gpu-memory-utilization 往 0.85~0.92 收;出现数值异常或长尾卡顿再用 --enforce-eager 关 CUDA graph 换稳定性。
--max-model-len显式设小可显著降低 KV 缓存占用并提升并发槽位数,比加载更小的模型代价低,前提是确认业务最长输入确实够用。
常见问题
vLLM 和直接用 Transformers 加载模型有什么区别?
vLLM 做了 PagedAttention 与连续批处理,对请求的调度更高效,高并发下吞吐显著高于朴素的逐条推理。代价是显存管理更激进、启动更重,且自定义推理逻辑的灵活度不如直接用 Transformers。自己跑单条推理或做研究用 Transformers 更省事,要对外提供服务就用 vLLM。
模型太大装不进显存怎么办?
按这个顺序试:先调 --gpu-memory-utilization 0.9 提高分配比例,再限制上下文长度 --max-model-len 8192,这两项常常就够了;仍然放不下就用 --quantization awq 或 gptq 加载量化权重,精度会有损失但在多数场景可接受。多卡场景用 --tensor-parallel-size 2 做张量并行,张量并行数通常等于显卡数。
调试时遇到诡异问题该不该开 --enforce-eager?
应该开。--enforce-eager 会禁用 CUDA graph,把问题范围从「vLLM 与 CUDA graph 的兼容性」缩小到模型本身。开启后如果问题消失,说明问题出在 CUDA graph 这一层,去查驱动与 CUDA 版本;如果依然存在,则问题在模型或你的代码里。调试阶段加上它能省下大量时间。
vLLM 服务的默认端口是多少?
默认 8000,而 OpenAI 官方 API 是 443/80 系列,这导致直接沿用 OpenAI SDK 时连不上。用 OpenAI SDK 时要把 base_url 显式指向 http://localhost:8000/v1,否则会请求到别处。起服务时也可以用 --port 8080 自己指定,配合 --host 0.0.0.0 让局域网内其他机器能访问。
怎么提高并发吞吐?
先调 --max-num-seqs 256 提高并发序列数上限,再用 --enable-prefix-caching 复用相同前缀,多轮对话场景收益明显。多卡场景用 --tensor-parallel-size 2 把模型切分到多张卡上。另外 --gpu-memory-utilization 0.9 能多装下一些 KV cache,间接提升并发能力。
由 巧匠 维护
公开更新于 2026年8月23日,内容持续校对官方文档。