vLLM 介绍指南


目录


什么是 vLLM?

vLLM 是一个用于 LLM 推理和服务的快速易用的库。vLLM 最初是在加州大学伯克利分校的 Sky Computing Lab 开发的,现已发展成为一个社区驱动的项目。

主要特点

  • 高性能推理引擎

  • 支持多种主流大模型

  • 易于部署和使用

  • 开源免费


核心特性

1. PagedAttention 技术

vLLM 的核心创新是 PagedAttention(分页注意力)技术,灵感来自操作系统的虚拟内存分页机制。

优势

  • 减少内存碎片

  • 提高内存利用率

  • 支持更长的上下文窗口

  • 更高的并发处理能力

2. 高吞吐量

相比传统推理框架,vLLM 的吞吐量提升显著:

  • 比 HuggingFace Transformers 高 24 倍

  • 比 DeepSpeed 高 16 倍

  • 比 TensorRT-LLM 高 2-4 倍

3. 多模型支持

支持多种主流大语言模型:

  • LLaMA / LLaMA2 / LLaMA3 系列

  • Mistral 系列

  • Qwen 系列

  • Yi 系列

  • Gemma 系列

  • 以及更多兼容模型

4. 分布式推理

  • 支持多 GPU 并行推理

  • 支持模型并行

  • 支持流水线并行

  • 高效的 KV 缓存管理

5. 易用性

  • 简单的 API 接口

  • 兼容 HuggingFace 模型格式

  • 支持 OpenAI 兼容 API

  • 易于集成到现有系统


技术原理

PagedAttention 工作机制

传统注意力机制:
- 连续内存分配
- 内存浪费严重
- 难以处理长序列

PagedAttention:
- 分块管理 KV 缓存
- 按需分配内存块
- 支持非连续存储
- 动态内存管理

内存管理

  1. 块表(Block Table)

    • 记录每个序列的块映射关系

    • 支持动态扩展

    • 高效的内存复用

  2. KV 缓存优化

    • 共享前缀块

    • 减少重复计算

    • 提高缓存命中率

  3. 调度策略

    • 基于优先级的调度

    • 公平性保证

    • 低延迟优化


安装部署

系统要求

  • Python 3.8+

  • CUDA 11.1+

  • NVIDIA GPU(推荐 A100/H100)

  • Linux 操作系统

安装方法

方法 1:pip 安装
pip install vllm
方法 2:从源码安装
git clone https://github.com/vllm-project/vllm.git
cd vllm
pip install -e .
方法 3:Docker 部署
docker run --gpus all \
  -p 8000:8000 \
  vllm/vllm-openai:latest \
  --model meta-llama/Llama-2-7b-chat-hf

快速启动

# 启动 API 服务器
python -m vllm.entrypoints.api_server \
  --model meta-llama/Llama-2-7b-chat-hf \
  --host 0.0.0.0 \
  --port 8000

使用示例

1. 基本使用

from vllm import LLM, SamplingParams

# 初始化模型
llm = LLM(model="meta-llama/Llama-2-7b-chat-hf")

# 设置采样参数
sampling_params = SamplingParams(
    temperature=0.7,
    max_tokens=100,
    top_p=0.9
)

# 生成文本
prompts = ["Hello, my name is"]
outputs = llm.generate(prompts, sampling_params)

# 输出结果
for output in outputs:
    print(output.outputs[0].text)

2. 批量推理

prompts = [
    "Hello, my name is",
    "The president of the United States is",
    "The capital of France is"
]

outputs = llm.generate(prompts, sampling_params)

for output in outputs:
    prompt = output.prompt
    generated_text = output.outputs[0].text
    print(f"Prompt: {prompt!r}, Generated: {generated_text!r}")

3. 使用 OpenAI 兼容 API

# 启动服务
python -m vllm.entrypoints.openai.api_server \
  --model meta-llama/Llama-2-7b-chat-hf \
  --port 8000
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="not-needed"
)

response = client.chat.completions.create(
    model="meta-llama/Llama-2-7b-chat-hf",
    messages=[
        {"role": "user", "content": "Hello!"}
    ]
)

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

4. 流式输出

from vllm import LLM, SamplingParams

llm = LLM(model="meta-llama/Llama-2-7b-chat-hf")
sampling_params = SamplingParams(
    temperature=0.7,
    max_tokens=100,
    stream=True
)

prompts = ["Once upon a time,"]
for output in llm.generate(prompts, sampling_params):
    print(output.outputs[0].text, end="", flush=True)

性能对比

吞吐量对比(tokens/s)

框架

LLaMA-7B

LLaMA-13B

LLaMA-70B

HuggingFace

100

50

10

DeepSpeed

150

80

20

TensorRT-LLM

500

300

80

vLLM

2400

1600

400

延迟对比(ms)

框架

P50

P90

P99

HuggingFace

200

500

1000

vLLM

50

100

200

内存效率

  • 内存利用率提升 60%

  • 支持更长的上下文窗口

  • 更高的并发请求处理能力


应用场景

1. 在线服务

  • 聊天机器人

  • 智能客服

  • 内容生成

  • 代码助手

2. 离线批处理

  • 大规模文本生成

  • 数据增强

  • 内容审核

  • 批量翻译

3. 研究实验

  • 模型评估

  • 性能测试

  • 算法验证

  • 原型开发

4. 企业应用

  • 知识库问答

  • 文档摘要

  • 智能搜索

  • 数据分析


优缺点分析

优点

  1. 高性能

    • 业界领先的吞吐量

    • 低延迟响应

    • 高效的内存管理

  2. 易用性

    • 简单的 API

    • 快速部署

    • 良好的文档

  3. 兼容性

    • 支持多种模型

    • OpenAI API 兼容

    • HuggingFace 集成

  4. 开源免费

    • Apache 2.0 许可证

    • 活跃的社区

    • 持续更新

缺点

  1. 硬件要求

    • 需要 NVIDIA GPU

    • 对显存要求较高

    • 不支持 CPU 推理

  2. 平台限制

    • 主要支持 Linux

    • Windows 支持有限

    • 需要 CUDA 环境

  3. 学习曲线

    • 需要 GPU 知识

    • 分布式配置复杂

    • 调优需要经验


配置参数

模型参数

--model              # 模型名称或路径
--tokenizer          # 分词器
--trust-remote-code  # 信任远程代码
--revision           # 模型版本

性能参数

--tensor-parallel-size    # 张量并行 GPU 数量
--pipeline-parallel-size  # 流水线并行 GPU 数量
--max-model-len          # 最大序列长度
--gpu-memory-utilization # GPU 内存利用率

服务参数

--host        # 监听地址
--port        # 监听端口
--served-model-name  # 服务模型名称
--api-key     # API 密钥

最佳实践

1. 性能优化

# 使用多 GPU
python -m vllm.entrypoints.api_server \
  --model meta-llama/Llama-2-7b-chat-hf \
  --tensor-parallel-size 4

# 优化内存使用
python -m vllm.entrypoints.api_server \
  --model meta-llama/Llama-2-7b-chat-hf \
  --gpu-memory-utilization 0.9 \
  --max-model-len 4096

2. 生产部署

  • 使用 Docker 容器化

  • 配置负载均衡

  • 启用监控和日志

  • 设置自动扩缩容

3. 安全配置

  • 设置 API 密钥

  • 配置 CORS

  • 限制请求速率

  • 启用 HTTPS


常见问题

Q1: vLLM 支持哪些模型?

支持 LLaMA、Mistral、Qwen、Yi、Gemma 等主流模型,完整列表见官方文档。

Q2: 如何优化推理速度?

  • 使用更大的 batch size

  • 启用多 GPU 并行

  • 优化 GPU 内存配置

  • 使用更短的序列长度

Q3: 支持 CPU 推理吗?

目前 vLLM 主要针对 GPU 优化,CPU 推理支持有限。

Q4: 如何部署到生产环境?

  • 使用 Docker 容器

  • 配置 Kubernetes

  • 设置监控告警

  • 实现自动扩缩容


相关资源

官方资源

学习资源

  • vLLM 官方教程

  • HuggingFace 集成指南

  • 性能优化最佳实践

社区资源

  • Discord 社区

  • GitHub Issues

  • Stack Overflow


总结

vLLM 是一个高性能的大语言模型推理引擎,凭借创新的 PagedAttention 技术,实现了业界领先的吞吐量和内存效率。

适用场景

  • 需要高吞吐量推理服务

  • 需要低延迟响应

  • 需要处理长上下文

  • 需要支持多种模型

不适用场景

  • 只有 CPU 环境

  • 资源受限的边缘设备

  • 需要 Windows 原生支持


文档版本:1.0 | 创建日期:2026-03-22

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐