Skip to content
vLLM

配置 vLLM

vLLM 是高性能的大语言模型推理和部署引擎,采用 PagedAttention 技术实现高吞吐量推理,支持多种开源模型。

1. 安装和部署 vLLM

1.1 访问 vLLM 官网

访问 vLLM 官网并查看文档:https://vllm.ai/

GitHub 仓库:https://github.com/vllm-project/vllm

官方文档:https://docs.vllm.ai/

1.2 环境要求

  • 操作系统:Linux(推荐 Ubuntu 20.04+)
  • Python:3.8-3.11
  • GPU:NVIDIA GPU(支持 CUDA 11.8+)
  • 内存:根据模型大小,建议 32GB+

重要提示:

  • 注意:vLLM 仅支持 Linux + NVIDIA GPU
  • 注意:macOS/Windows 用户必须使用 Docker 方式运行
  • 注意:没有 NVIDIA GPU 的设备无法高性能运行 vLLM

1.3 安装 vLLM

方式一:Linux + NVIDIA GPU(推荐)

bash
# 创建虚拟环境
python3 -m venv vllm-env
source vllm-env/bin/activate

# 安装vLLM
pip install vllm

# 验证安装
python -c "import vllm; print(vllm.__version__)"

方式二:使用 Docker(跨平台,推荐 macOS/Windows 用户)

bash
# 拉取vLLM官方镜像
docker pull vllm/vllm-openai:latest

# 运行vLLM服务(需要 NVIDIA GPU)
docker run --runtime nvidia --gpus all \
    -v ~/.cache/huggingface:/root/.cache/huggingface \
    -p 8000:8000 \
    --ipc=host \
    vllm/vllm-openai:latest \
    --model facebook/opt-125m

Docker 拉取失败解决方案:

如果拉取镜像时遇到网络错误(如 failed to copy: httpReadSeeker),可以配置镜像加速:

bash
# macOS Docker Desktop 配置
# 打开 Docker Desktop → Settings → Docker Engine
# 添加以下配置:
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.1panel.live"
  ]
}

# 点击 Apply & Restart

配置完成后重新拉取镜像。

1.4 启动 vLLM 服务

对于 Linux 用户:

bash
# 启动vLLM OpenAI兼容服务器
python -m vllm.entrypoints.openai.api_server \
    --model Qwen/Qwen2.5-7B-Instruct \
    --host 0.0.0.0 \
    --port 8000

对于 macOS/Windows 用户(使用 Docker):

由于 vLLM 需要 NVIDIA GPU,macOS/Windows 用户无法本地运行,建议:

  1. 在有 NVIDIA GPU 的 Linux 服务器上部署 vLLM
  2. 在 CueMate 中配置远程服务器地址(如 http://192.168.1.100:8000/v1
  3. 或使用其他支持 macOS 的本地推理框架(如 Ollama

常用启动参数

  • --model:模型名称或路径
  • --host:服务监听地址(默认 0.0.0.0)
  • --port:服务端口(默认 8000)
  • --tensor-parallel-size:张量并行大小(多 GPU)
  • --dtype:数据类型(auto/half/float16/bfloat16)

1.5 验证服务运行

bash
# 检查服务状态
curl http://localhost:8000/v1/models

正常返回结果示例:

json
{
  "object": "list",
  "data": [
    {
      "id": "Qwen/Qwen2.5-7B-Instruct",
      "object": "model",
      "created": 1699234567,
      "owned_by": "vllm",
      "root": "Qwen/Qwen2.5-7B-Instruct",
      "parent": null,
      "permission": [
        {
          "id": "modelperm-xxx",
          "object": "model_permission",
          "created": 1699234567,
          "allow_create_engine": false,
          "allow_sampling": true,
          "allow_logprobs": true,
          "allow_search_indices": false,
          "allow_view": true,
          "allow_fine_tuning": false,
          "organization": "*",
          "group": null,
          "is_blocking": false
        }
      ]
    }
  ]
}

如果返回上述 JSON 内容,说明 vLLM 服务启动成功。

如果服务未启动或配置错误,会返回:

bash
# 连接失败
curl: (7) Failed to connect to localhost port 8000: Connection refused

# 或者 404 错误
{"detail":"Not Found"}

2. 在 CueMate 中配置 vLLM 模型

2.1 进入模型设置页面

登录 CueMate 系统后,点击右上角下拉菜单的 模型设置

进入模型设置

2.2 添加新模型

点击右上角的 添加模型 按钮。

点击添加模型

2.3 选择 vLLM 服务商

在弹出的对话框中:

  1. 服务商类型:选择 vLLM
  2. 点击后 自动进入下一步

选择 vLLM

2.4 填写配置信息

在配置页面填写以下信息:

基础配置

  1. 模型名称:为这个模型配置起个名字(例如:vLLM Qwen2.5 7B)
  2. API URL:保持默认 http://localhost:8000/v1(或修改为 vLLM 服务地址)
  3. API Key:如果 vLLM 启动时设置了 --api-key 参数,填写此处(可选)
  4. 模型版本:输入 vLLM 部署的模型名称

2025 推荐模型

  • Qwen/Qwen2.5-7B-Instruct:Qwen2.5 7B 对话模型(推荐)
  • Qwen/Qwen2.5-14B-Instruct:Qwen2.5 14B 对话模型
  • meta-llama/Meta-Llama-3.1-8B-Instruct:Llama 3.1 8B 对话模型
  • meta-llama/Meta-Llama-3.1-70B-Instruct:Llama 3.1 70B 对话模型
  • mistralai/Mistral-7B-Instruct-v0.3:Mistral 7B 对话模型
  • deepseek-ai/DeepSeek-V2.5:DeepSeek V2.5 对话模型

注意:模型版本必须与 vLLM 启动时的 --model 参数一致。

填写基础配置

高级配置(可选)

展开 高级配置 面板,可以调整以下参数:

CueMate 界面可调参数:

  1. 温度(temperature):控制输出随机性

    • 范围:0-2
    • 推荐值:0.7
    • 作用:值越高输出越随机创新,值越低输出越稳定保守
    • 使用建议
      • 创意写作/头脑风暴:1.0-1.5
      • 常规对话/问答:0.7-0.9
      • 代码生成/精确任务:0.3-0.5
  2. 输出最大 tokens(max_tokens):限制单次输出长度

    • 范围:256 - 131072(根据模型而定)
    • 推荐值:8192
    • 作用:控制模型单次响应的最大字数
    • 模型限制
      • Qwen2.5 系列:最大 32K tokens
      • Llama 3.1 系列:最大 131K tokens
      • Mistral 系列:最大 32K tokens
      • DeepSeek 系列:最大 65K tokens
    • 使用建议
      • 简短问答:1024-2048
      • 常规对话:4096-8192
      • 长文生成:16384-32768
      • 超长文档:65536-131072(仅支持的模型)

高级配置

vLLM API 支持的其他高级参数:

虽然 CueMate 界面只提供 temperature 和 max_tokens 调整,但如果你通过 API 直接调用 vLLM,还可以使用以下高级参数(vLLM 采用 OpenAI 兼容的 API 格式):

  1. top_p(nucleus sampling)

    • 范围:0-1
    • 默认值:1
    • 作用:从概率累积达到 p 的最小候选集中采样
    • 与 temperature 的关系:通常只调整其中一个
    • 使用建议
      • 保持多样性但避免离谱:0.9-0.95
      • 更保守的输出:0.7-0.8
  2. top_k

    • 范围:-1(禁用)或正整数
    • 默认值:-1
    • 作用:从概率最高的 k 个候选词中采样
    • 使用建议
      • 更多样化:50-100
      • 更保守:10-30
  3. frequency_penalty(频率惩罚)

    • 范围:-2.0 到 2.0
    • 默认值:0
    • 作用:降低重复相同词汇的概率(基于词频)
    • 使用建议
      • 减少重复:0.3-0.8
      • 允许重复:0(默认)
  4. presence_penalty(存在惩罚)

    • 范围:-2.0 到 2.0
    • 默认值:0
    • 作用:降低已出现过的词汇再次出现的概率(基于是否出现)
    • 使用建议
      • 鼓励新话题:0.3-0.8
      • 允许重复话题:0(默认)
  5. stop(停止序列)

    • 类型:字符串或数组
    • 默认值:null
    • 作用:当生成内容包含指定字符串时停止
    • 示例["###", "用户:", "\n\n"]
    • 使用场景
      • 结构化输出:使用分隔符控制格式
      • 对话系统:防止模型代替用户说话
  6. stream(流式输出)

    • 类型:布尔值
    • 默认值:false
    • 作用:启用 SSE 流式返回,边生成边返回
    • CueMate 中:自动处理,无需手动设置
  7. best_of

    • 类型:整数
    • 默认值:1
    • 范围:1-20
    • 作用:生成多个候选回复,选择最佳的一个返回
    • 注意:会增加计算成本
  8. use_beam_search

    • 类型:布尔值
    • 默认值:false
    • 作用:启用束搜索(beam search)算法
    • 使用场景:需要更确定性的输出(如翻译任务)

参数组合建议:

序号场景temperaturemax_tokenstop_ptop_kfrequency_penaltypresence_penalty
1创意写作1.0-1.24096-81920.95500.50.5
2代码生成0.2-0.52048-40960.9400.00.0
3问答系统0.71024-20480.9-10.00.0
4摘要总结0.3-0.5512-10240.9300.00.0
5翻译任务0.020481.0-10.00.0

2.5 测试连接

填写完配置后,点击 测试连接 按钮,验证配置是否正确。

测试连接

如果配置正确,会显示测试成功的提示,并返回模型的响应示例。

测试成功

如果配置错误,会显示测试错误的日志,并且可以通过日志管理,查看具体报错信息。

2.6 保存配置

测试成功后,点击 保存 按钮,完成模型配置。

保存配置

3. 使用模型

通过右上角下拉菜单,进入系统设置界面,在大模型供应商栏目选择想要使用的模型配置。

配置完成后,可以在面试训练、问题生成等功能中选择使用此模型, 当然也可以在面试的选项中单此选择此次面试的模型配置。

选择模型

4. 支持的模型列表

4.1 Qwen 系列(推荐)

序号模型名称模型 ID参数量最大输出适用场景
1Qwen2.5 7B InstructQwen/Qwen2.5-7B-Instruct7B32K tokens中文对话、通用任务
2Qwen2.5 14B InstructQwen/Qwen2.5-14B-Instruct14B32K tokens高质量中文对话
3Qwen2.5 32B InstructQwen/Qwen2.5-32B-Instruct32B32K tokens复杂任务处理
4Qwen2.5 72B InstructQwen/Qwen2.5-72B-Instruct72B32K tokens超高质量对话

4.2 Llama 3.1 系列

序号模型名称模型 ID参数量最大输出适用场景
1Llama 3.1 8B Instructmeta-llama/Meta-Llama-3.1-8B-Instruct8B131K tokens英文对话、长文本
2Llama 3.1 70B Instructmeta-llama/Meta-Llama-3.1-70B-Instruct70B131K tokens高质量英文对话

4.3 Mistral 系列

序号模型名称模型 ID参数量最大输出适用场景
1Mistral 7B Instructmistralai/Mistral-7B-Instruct-v0.37B32K tokens多语言对话

4.4 DeepSeek 系列

序号模型名称模型 ID参数量最大输出适用场景
1DeepSeek V2.5deepseek-ai/DeepSeek-V2.5236B65K tokens代码生成、推理

注意:vLLM 支持 200+ HuggingFace Transformer 模型,只需在启动时指定模型名称。

vLLM 高级特性

4.5 多 GPU 部署

bash
# 使用2个GPU进行张量并行
python -m vllm.entrypoints.openai.api_server \
    --model BAAI/Aquila-7B \
    --tensor-parallel-size 2

4.6 量化加速

bash
# 使用AWQ 4-bit量化
python -m vllm.entrypoints.openai.api_server \
    --model TheBloke/Llama-2-7B-Chat-AWQ \
    --quantization awq

4.7 PagedAttention

vLLM 的核心优势是 PagedAttention 技术:

  • 提升吞吐量高达 24 倍
  • 显著降低 GPU 内存使用
  • 支持更大的 batch size

5. 常见问题

5.1 GPU 内存不足

现象:启动 vLLM 时提示 CUDA OOM

解决方案

  1. 使用量化模型(AWQ/GPTQ)
  2. 减小 --max-model-len 参数
  3. 使用张量并行 --tensor-parallel-size
  4. 选择参数量更小的模型

5.2 模型加载失败

现象:无法加载指定模型

解决方案

  1. 确认模型名称正确(HuggingFace 格式)
  2. 检查网络连接,确保可以访问 HuggingFace
  3. 预先下载模型到本地,使用本地路径
  4. 查看 vLLM 日志获取详细错误信息

5.3 性能不佳

现象:推理速度慢

解决方案

  1. 确认 GPU 驱动和 CUDA 版本匹配
  2. 使用 --dtype half--dtype bfloat16
  3. 调整 --max-num-seqs 参数
  4. 启用多 GPU 张量并行

5.4 服务无响应

现象:请求超时或挂起

解决方案

  1. 检查 vLLM 服务日志
  2. 确认服务端口未被占用
  3. 验证防火墙设置
  4. 增加请求超时时间

性能优化建议

5.5 硬件配置

模型大小GPU内存建议配置
<3BRTX 306016GB单 GPU
7B-13BRTX 3090/409032GB单 GPU
30B-70BA100 40GB64GB多 GPU 并行

5.6 软件优化

  1. 使用最新版本

    bash
    pip install --upgrade vllm
  2. 启用 FlashAttention

    bash
    pip install flash-attn
  3. 调优参数

    bash
    --max-num-batched-tokens 8192 \
    --max-num-seqs 256 \
    --dtype half

与其他框架对比

特性vLLMOllamaXinference
易用性中等非常好较好
性能非常高一般较高
功能较丰富基础非常丰富
生产级非常成熟一般较成熟
适用场景生产部署个人开发企业应用

相关链接

Released under the GPL-3.0 License.