大模型部署指南之 vLLM 篇:基于 PagedAttention 的工业级推理方案

一、vLLM 是什么?

vLLM 是一个快速且易于使用的库,用于 LLM 推理和服务。

1.1 核心优势

  1. vLLM 速度很快,因为它具有:
    • 最先进的服务吞吐量
    • 使用 PagedAttention 对注意力键和值内存进行高效管理
    • 对传入请求进行连续批处理
    • 使用 CUDA/HIP 图进行快速模型执行
    • 量化:GPTQAWQINT4INT8FP8
    • 优化的 CUDA 内核,包括与 FlashAttentionFlashInfer 的集成。
    • 推测解码
    • 分块预填充
  2. vLLM 灵活且易于使用,因为它具有:
    • 与流行的 HuggingFace 模型无缝集成
    • 使用各种解码算法(包括 并行采样束搜索 等)进行高吞吐量服务
    • 支持分布式推理的 张量并行管道并行
    • 流式输出
    • OpenAI 兼容的 API 服务器
    • 支持 NVIDIA GPU、AMD CPU 和 GPU、Intel CPU 和 GPU、PowerPC CPU、TPU 和 AWS Neuron。
    • 支持前缀缓存
    • 支持多 LoRA

二、快速开始

2.1 安装

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

2.2 验证

1
vllm --version  # 查看版本

2.3 默认仓库

vLLM 默认从 HuggingFace 上面下载模型
如果需要从 ModelScope 上面下载模型,设置以下环境变量:

1
export VLLM_USE_MODELSCOPE=True

三、高级命令说明

3.1 调用在线模型 chat 示例

1
2
3
4
5
vllm chat \
--model-name glm-4-plus \ # 模型名称
--url https://open.bigmodel.cn/api/paas/v4/ \ # 模型地址
--api-key api_key \ # API 密钥
--system-prompt "你是一个AI助手" # 系统提示

3.2 调用在线模型 complete 示例

1
2
3
4
vllm complete \
--model-name glm-4-plus \ # 模型名称
--url https://open.bigmodel.cn/api/paas/v4/chat \ # 模型地址
--api-key api_key # API 密钥

3.3 启动服务

参数 说明
--host 设置服务绑定的主机地址(默认 127.0.0.1,公网访问需设为 0.0.0.0)
--port 设置服务端口(默认 8000)
--api-key 设置 OpenAI 兼容 API 的访问密钥(可选)
--block-size PagedAttention 的块大小(默认 16,影响显存效率)
--max-num-seqs 控制请求调度和吞吐量
--max-num-batched-tokens 批处理的最大 token 数(影响吞吐量)
--gpu-memory-utilization GPU 内存利用率(0-1)
--cpu-offload-gb 将部分模型权重卸载到 CPU 内存(默认 0,禁用)
--max-model-len 设置最大序列长度(默认由模型决定)
--quantization 启用量化(如 gptq、awq)
--tensor-parallel-size 设置 Tensor 并行规模(多 GPU 分布式推理)
--trust-remote-code 允许加载 Hugging Face 模型时执行远程代码(安全风险提示)
--enforce-eager 禁用 CUDA 图优化(提升兼容性,可能降低性能)
--log-level 设置日志输出级别(如 info、debug)
-- 设置配置文件(yaml 格式)

示例:

1
2
3
4
5
6
7
vllm serve \
/path/to/model \
--gpu-memory-utilization 0.95 \
--max-model-len 1024 \
--block-size 16 \
--max-num-seqs 4 \
--tensor-parallel-size 1

3.4 基准测试工具

用于评估大语言模型推理的 性能指标(如吞吐量、延迟、显存占用等)

参数 说明
--model 模型路径
--tokenizer 可选的独立 tokenizer 路径
--num-prompts API 密钥
--max-num-seqs 测试使用的 prompt 数量
--seed 随机种子
1
2
vllm bench serve \
--model /path/to/model

四、API 调用

4.1 REST API

1
2
3
4
5
6
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "model_name",
"messages": [{"role": "user", "content": "你好"}]
}'

五、高级功能

5.1 对接可视化界面

搭配 OpenWebUI

1
2
export OPENAI_API_BASE_URL=http://localhost:8000/v1
open-webui serve

5.2 分布式推理核心机制

  1. 张量并行:通过 --tensor-parallel-size 参数指定 GPU 数量,支持多卡协同计算。
  2. PagedAttention:将注意力机制的键值(KV)缓存分块存储,减少显存碎片,提升利用率。
  3. 连续批处理:动态合并不同长度的请求,减少 CPU 空闲时间。
    注意:
  • 通过访问 http://localhost:8080 使用 Web 界面。
  • 不设置 OPENAI_API_BASE_URL 环境变量
    1. 可以通过在 web 界面配置中手动设置 API 地址(头像 -> 设置 -> 外部连接 -> + -> URL -> 密匙 -> 保存)
    2. web 界面左上角选择对应模型即可

六、总结

vLLM 是 生产级大模型推理的终极解决方案,尤其适合:

  • 🚀 高并发场景:每秒处理数百请求
  • 💾 显存敏感环境:PagedAttention 实现零浪费
  • 🔌 快速集成:完全兼容 OpenAI API

资源推荐


大模型部署指南之 vLLM 篇:基于 PagedAttention 的工业级推理方案
https://blog.echo-silence.top/posts/70fa53ad.html
作者
极客奶爸
发布于
2025年5月19日
许可协议