vLLM(Very Large Language Model)是一个高效的推理引擎,专为大语言模型(LLM)优化,旨在提升推理性能并降低显存占用。vLLM 主要由 UC 伯克利开发,采用了一种称为 PagedAttention 的创新机制,使其在多 GPU 环境下也能高效地执行推理任务。
PagedAttention 是 vLLM 的核心技术,通过分页管理 KV 缓存,减少不必要的数据复制,提高推理效率。
vLLM 采用批量处理机制,使多个请求可以并行执行,提高服务器的整体吞吐能力。
vLLM 可自动在多张 GPU 之间分配计算负载,提高推理能力。
vLLM 兼容 Linux 和 macOS,建议使用 Python 3.8 及以上版本。
pip install vllm
如果需要最新功能,可以克隆 GitHub 仓库并手动编译。
git clone https://github.com/vllm-project/vllm.git
cd vllm
pip install -e .
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}'
from vllm import LLM
llm = LLM("meta-llama/Llama-2-7b-chat-hf")
outputs = llm.generate(["介绍一下 vLLM 的优势。"])
print(outputs)
vLLM 提供 Python API 和 RESTful API 方式,支持不同的推理需求。
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)
如果运行了 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())
vLLM 的批量处理机制可以大幅提高吞吐量。
prompts = ["介绍 vLLM", "vLLM 的优势是什么?", "如何安装 vLLM?"]
outputs = llm.generate(prompts)
使用 max_num_seqs
限制最大请求数,减少显存压力。
llm = LLM("meta-llama/Llama-2-7b-chat-hf", max_num_seqs=2)
llm = LLM("meta-llama/Llama-2-7b-chat-hf", dtype="float16")
特性 | vLLM | Hugging Face Transformers | TensorRT-LLM | Triton |
---|---|---|---|---|
PagedAttention | ✅ | ❌ | ❌ | ❌ |
高吞吐量 | ✅ | ❌ | ✅ | ✅ |
OpenAI API 兼容 | ✅ | ❌ | ❌ | ✅ |
多 GPU 支持 | ✅ | ✅ | ✅ | ✅ |
FP16/INT8 支持 | ✅ | ✅ | ✅ | ✅ |
vLLM 是一个高效的 LLM 推理框架,依靠 PagedAttention 技术显著提高了推理速度并降低了显存占用。它提供了简单易用的 Python API 和 OpenAI 兼容的 RESTful API,使得开发者可以快速集成到各种应用场景中。如果你希望优化 LLM 的推理性能,vLLM 绝对是值得尝试的选择。
推荐进一步学习:
希望本教程对你有所帮助!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。