admin管理员组

文章数量:1442495

vLLM 框架教程

1. vLLM 简介

vLLM(Very Large Language Model)是一个高效的推理引擎,专为大语言模型(LLM)优化,旨在提升推理性能并降低显存占用。vLLM 主要由 UC 伯克利开发,采用了一种称为 PagedAttention 的创新机制,使其在多 GPU 环境下也能高效地执行推理任务。

为什么使用 vLLM?

  • 更快的推理速度:利用 PagedAttention 提高吞吐量。
  • 高效的显存管理:相比 Hugging Face Transformers 框架,vLLM 能更好地利用显存。
  • 多 GPU 兼容:支持多卡推理,适用于高性能计算环境。
  • 兼容 Hugging Face Transformers:可以直接加载和运行 Hugging Face 训练的模型。
  • 支持 OpenAI API 格式:可轻松集成至现有应用。

2. vLLM 核心特性

2.1 PagedAttention 机制

PagedAttention 是 vLLM 的核心技术,通过分页管理 KV 缓存,减少不必要的数据复制,提高推理效率。

2.2 高吞吐量优化

vLLM 采用批量处理机制,使多个请求可以并行执行,提高服务器的整体吞吐能力。

2.3 多 GPU 支持

vLLM 可自动在多张 GPU 之间分配计算负载,提高推理能力。


3. 安装 vLLM

vLLM 兼容 Linux 和 macOS,建议使用 Python 3.8 及以上版本。

3.1 通过 pip 安装

代码语言:javascript代码运行次数:0运行复制
pip install vllm

3.2 从源码安装

如果需要最新功能,可以克隆 GitHub 仓库并手动编译。

代码语言:javascript代码运行次数:0运行复制
git clone .git
cd vllm
pip install -e .

4. 使用 vLLM 运行 LLM

4.1 运行 OpenAI API 兼容的服务器

代码语言:javascript代码运行次数:0运行复制
python -m vllm.entrypoints.openai.api_server --model meta-llama/Llama-2-7b-chat-hf

然后可以使用 curl 进行测试:

代码语言:javascript代码运行次数:0运行复制
curl http://localhost:8000/v1/completions \n  -H "Content-Type: application/json" \n  -d '{"model": "meta-llama/Llama-2-7b-chat-hf", "prompt": "你好,介绍一下 vLLM", "max_tokens": 50}'

4.2 直接运行模型推理

代码语言:javascript代码运行次数:0运行复制
from vllm import LLM

llm = LLM("meta-llama/Llama-2-7b-chat-hf")
outputs = llm.generate(["介绍一下 vLLM 的优势。"])
print(outputs)

5. vLLM API 详解

vLLM 提供 Python API 和 RESTful API 方式,支持不同的推理需求。

5.1 Python API

代码语言:javascript代码运行次数:0运行复制
from vllm import LLM

llm = LLM("meta-llama/Llama-2-7b-chat-hf")
prompts = ["什么是 vLLM?", "vLLM 的优势是什么?"]
outputs = llm.generate(prompts)
for output in outputs:
    print(output)

5.2 RESTful API

如果运行了 OpenAI 兼容的 API 服务器,可以使用 requests 进行调用。

代码语言:javascript代码运行次数:0运行复制
import requests
import json

url = "http://localhost:8000/v1/completions"
data = {
    "model": "meta-llama/Llama-2-7b-chat-hf",
    "prompt": "什么是 vLLM?",
    "max_tokens": 50
}
response = requests.post(url, headers={"Content-Type": "application/json"}, data=json.dumps(data))
print(response.json())

6. 性能优化

6.1 增加批量推理

vLLM 的批量处理机制可以大幅提高吞吐量。

代码语言:javascript代码运行次数:0运行复制
prompts = ["介绍 vLLM", "vLLM 的优势是什么?", "如何安装 vLLM?"]
outputs = llm.generate(prompts)

6.2 减少显存占用

使用 max_num_seqs 限制最大请求数,减少显存压力。

代码语言:javascript代码运行次数:0运行复制
llm = LLM("meta-llama/Llama-2-7b-chat-hf", max_num_seqs=2)

6.3 使用 FP16 精度

代码语言:javascript代码运行次数:0运行复制
llm = LLM("meta-llama/Llama-2-7b-chat-hf", dtype="float16")

7. vLLM vs. 其他推理框架

特性

vLLM

Hugging Face Transformers

TensorRT-LLM

Triton

PagedAttention

高吞吐量

OpenAI API 兼容

多 GPU 支持

FP16/INT8 支持


8. 适用场景

  • 聊天机器人:使用 vLLM 作为 API 服务器,提高聊天响应速度。
  • 文本生成:可用于小说、新闻摘要、代码生成等任务。
  • 翻译:支持 LLM 进行高效的多语言翻译。
  • 问答系统:快速搭建基于 LLM 的知识问答系统。

9. 结论

vLLM 是一个高效的 LLM 推理框架,依靠 PagedAttention 技术显著提高了推理速度并降低了显存占用。它提供了简单易用的 Python API 和 OpenAI 兼容的 RESTful API,使得开发者可以快速集成到各种应用场景中。如果你希望优化 LLM 的推理性能,vLLM 绝对是值得尝试的选择。

推荐进一步学习

  • vLLM 官方文档:
  • Hugging Face LLM 介绍:

希望本教程对你有所帮助!

本文标签: vLLM 框架教程