vLLM API 服务搭建教程(从零到可用生产部署)

vLLM 是目前最主流的大模型高性能推理框架之一,凭借 PagedAttention + 高吞吐 + OpenAI 兼容 API,已经成为本地部署 LLM 服务的首选方案。

本文将带你一步步搭建一个可对外提供 API 的 vLLM 服务(支持 ChatGPT API 格式),适用于:

  • 本地开发测试
  • 私有化部署
  • 高并发模型服务
  • AI 应用后端

一、vLLM 是什么?

vLLM 是一个高性能大模型推理框架,核心优势:

  • 🚀 极高吞吐(比 Transformers 快数倍)
  • 🧠 PagedAttention(显存分页管理)
  • 🔌 OpenAI API 兼容
  • ⚡ 支持多并发请求
  • 💾 显存利用率极高

二、环境准备

1. 硬件要求

模型规模推荐显卡
7BRTX 3060 / 4060 / 3090
13BRTX 3090 / 4090
30B+A100 / H100 / 多卡

2. 系统要求

  • Ubuntu 20.04 / 22.04(推荐)
  • Python 3.10+
  • CUDA 11.8 / 12.x
  • NVIDIA Driver 已安装

三、安装 vLLM

方法1:pip 安装(推荐)

pip install vllm

如果 CUDA 环境正确,这一步即可完成。


方法2:创建虚拟环境(推荐生产)

conda create -n vllm python=3.10 -y
conda activate vllm
pip install vllm

四、启动 OpenAI 风格 API 服务

基础启动命令

python -m vllm.entrypoints.openai.api_server \
  --model meta-llama/Llama-2-7b-hf \
  --host 0.0.0.0 \
  --port 8000

参数说明

参数作用
model模型名称或路径
host监听地址
portAPI端口

五、使用 HuggingFace 模型(推荐)

例如:

  • Llama
  • Mistral
  • Qwen
python -m vllm.entrypoints.openai.api_server \
  --model Qwen/Qwen2.5-7B-Instruct \
  --dtype auto \
  --host 0.0.0.0 \
  --port 8000

六、测试 API(重点)

1. 使用 curl

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen/Qwen2.5-7B-Instruct",
    "messages": [
      {"role": "user", "content": "你好,介绍一下vLLM"}
    ]
  }'

2. Python 调用(OpenAI SDK)

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="none"
)

response = client.chat.completions.create(
    model="Qwen/Qwen2.5-7B-Instruct",
    messages=[
        {"role": "user", "content": "写一段Python代码"}
    ]
)

print(response.choices[0].message.content)

七、提升性能(生产必看)

1. 开启多并发优化

--max-num-seqs 256

2. 控制显存(很重要)

--gpu-memory-utilization 0.9

👉 防止 OOM


3. 限制上下文长度

--max-model-len 4096

4. 使用 FP16 / BF16

--dtype half

八、Docker 部署(推荐生产)

1. 拉取镜像

docker pull vllm/vllm-openai

2. 启动容器

docker run --gpus all \
  -p 8000:8000 \
  vllm/vllm-openai \
  --model Qwen/Qwen2.5-7B-Instruct

九、GPU 多卡部署(进阶)

--tensor-parallel-size 2

👉 适用于:

  • 2×3090
  • 2×4090
  • A100多卡

十、常见问题(非常重要)


❌ 1. CUDA out of memory

解决方案:

  • 降低 max-model-len
  • 降低并发
  • 开启量化模型
  • 使用 4bit 模型

❌ 2. 模型加载失败

检查:

  • HuggingFace token
  • 模型路径
  • 网络访问

❌ 3. API 无法访问

检查:

--host 0.0.0.0

并开放端口:

ufw allow 8000

十一、推荐部署架构(实战)

单机方案(个人/测试)

vLLM + 7B/13B模型 + 1 GPU

生产方案(中小型)

Nginx
  ↓
vLLM API(多实例)
  ↓
Qwen / Llama 模型

高并发方案(企业级)

Load Balancer
  ↓
vLLM Cluster(多GPU/多节点)
  ↓
KV Cache优化 + 量化模型

十二、总结

vLLM 的核心价值:

用更少的 GPU,跑更快的模型服务,并支持 OpenAI API 生态。


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部