Skip to content

🚀 vLLM 高性能推理

Ollama 是够用,vLLM 是够快——生产环境的不二选择

为什么需要 vLLM

Ollama 简单但不快。vLLM 的核心优势:

  • PagedAttention:显存利用率翻倍,同样显存跑更大模型
  • 连续批处理:多个请求一起处理,吞吐量是 Ollama 的 5-10 倍
  • 兼容 OpenAI API:改一行代码就能从 OpenAI 切到自建模型

安装

bash
# 需要 CUDA 环境就绪
pip install vllm

确认版本:

bash
python -c "import vllm; print(vllm.__version__)"

启动推理服务

bash
# 启动 Qwen2.5 7B 推理服务
python -m vllm.entrypoints.openai.api_server \
  --model Qwen/Qwen2.5-7B-Instruct \
  --host 0.0.0.0 \
  --port 8000 \
  --max-model-len 8192 \
  --gpu-memory-utilization 0.9

关键参数:

参数含义建议
--model模型名或路径(HuggingFace ID)首次会下载,体积大
--max-model-len最大上下文长度越长吃越多显存
--gpu-memory-utilization显存使用上限比例0.85-0.9,留一点给系统
--tensor-parallel-size多卡张量并行有几张卡就设几
--dtype推理精度auto 自动选,可设 float16

调用 API

完全兼容 OpenAI 格式:

python
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="not-needed"  # vLLM 不强制鉴权
)

response = client.chat.completions.create(
    model="Qwen/Qwen2.5-7B-Instruct",
    messages=[{"role": "user", "content": "解释什么是 PagedAttention"}]
)

print(response.choices[0].message.content)
bash
# 或者用 curl
curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen/Qwen2.5-7B-Instruct",
    "messages": [{"role": "user", "content": "你好"}]
  }'

显存优化

AWQ/GPTQ 量化模型

bash
# 用量化模型显存直接减半
python -m vllm.entrypoints.openai.api_server \
  --model Qwen/Qwen2.5-7B-Instruct-AWQ \
  --quantization awq

限制并发

bash
# 防止多用户同时请求撑爆显存
--max-num-seqs 16        # 同时处理最多16个请求
--max-num-batched-tokens 4096  # 单批最大 token 数

多卡部署

bash
# 两张 24GB 卡,跑 34B 模型
python -m vllm.entrypoints.openai.api_server \
  --model Qwen/Qwen2.5-32B-Instruct \
  --tensor-parallel-size 2 \
  --gpu-memory-utilization 0.85

--tensor-parallel-size 就是使用 GPU 的数量。


vLLM vs Ollama 对比

维度OllamavLLM
上手难度⭐ 一条命令⭐⭐⭐ 需要配环境
推理速度中等快(5-10倍吞吐)
显存效率一般高(PagedAttention)
API 兼容自有格式OpenAI 兼容
并发能力强(连续批处理)
适用场景开发/个人用生产/多人用

结论:开发用 Ollama,上线用 vLLM。


🎯 本章要点

  • vLLM 的核心是 PagedAttention(显存效率)+ 连续批处理(高吞吐)
  • API 完全兼容 OpenAI 格式,改一行 base_url 就能切模型
  • 显存不够用量化模型(AWQ/GPTQ),多卡用 --tensor-parallel-size
  • Ollama 适合开发,vLLM 适合生产
加载练习题中...

有问题或补充?欢迎留言