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
进行测试:
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
进行调用。
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
限制最大请求数,减少显存压力。
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 介绍:
希望本教程对你有所帮助!
发布者:admin,转转请注明出处:http://www.yc00.com/web/1748035706a4721879.html
评论列表(0条)