vLLM-v0.17.1入门指南:vLLM与DeepSpeed-MII推理性能对比
·
vLLM-v0.17.1入门指南:vLLM与DeepSpeed-MII推理性能对比
1. vLLM框架简介
vLLM是一个专注于大语言模型(LLM)推理和服务的高性能开源库。最初由加州大学伯克利分校的天空计算实验室开发,现已发展成为学术界和工业界共同维护的社区项目。它通过多项创新技术实现了业界领先的推理性能。
vLLM的核心优势体现在以下几个方面:
- 高效内存管理:采用PagedAttention技术,智能管理注意力机制中的键值对内存
- 请求处理优化:支持连续批处理,显著提升吞吐量
- 执行加速:利用CUDA/HIP图实现模型快速执行
- 量化支持:全面兼容GPTQ、AWQ等多种量化方案(INT4/INT8/FP8等)
- 内核优化:集成FlashAttention和FlashInfer等先进技术
- 解码优化:支持推测性解码和分块预填充技术
2. vLLM功能特性
2.1 模型支持与兼容性
vLLM在设计上注重灵活性和易用性:
- 无缝对接HuggingFace生态中的主流模型
- 支持多种解码策略,包括并行采样和束搜索
- 提供分布式推理能力,支持张量并行和流水线并行
- 内置OpenAI兼容的API服务接口
- 支持流式输出,提升用户体验
2.2 硬件适配范围
vLLM具有广泛的硬件兼容性:
- NVIDIA/AMD/Intel全系列GPU
- 多架构CPU支持(Intel/AMD/PowerPC)
- 专用加速器(TPU/AWS Neuron)
3. 快速安装与部署
3.1 环境准备
建议使用Python 3.8+环境,并确保已安装CUDA 11.8或更高版本:
conda create -n vllm python=3.10
conda activate vllm
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
3.2 安装vLLM
通过pip安装最新版vLLM:
pip install vllm
或从源码安装开发版:
git clone https://github.com/vllm-project/vllm.git
cd vllm
pip install -e .
4. 基础使用示例
4.1 本地推理示例
以下代码展示如何使用vLLM运行基础推理:
from vllm import LLM, SamplingParams
# 初始化模型
llm = LLM(model="meta-llama/Llama-2-7b-chat-hf")
# 设置采样参数
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
# 执行推理
outputs = llm.generate(["AI的未来发展将"], sampling_params)
# 输出结果
for output in outputs:
print(output.outputs[0].text)
4.2 API服务部署
启动OpenAI兼容的API服务:
python -m vllm.entrypoints.api_server \
--model meta-llama/Llama-2-7b-chat-hf \
--port 8000 \
--gpu-memory-utilization 0.9
客户端调用示例:
import openai
openai.api_base = "http://localhost:8000/v1"
openai.api_key = "none"
response = openai.ChatCompletion.create(
model="meta-llama/Llama-2-7b-chat-hf",
messages=[{"role": "user", "content": "解释量子计算的基本概念"}]
)
print(response["choices"][0]["message"]["content"])
5. 性能对比:vLLM vs DeepSpeed-MII
5.1 测试环境配置
| 配置项 | 参数规格 |
|---|---|
| GPU | NVIDIA A100 80GB |
| CUDA版本 | 11.8 |
| 测试模型 | Llama-2-7b-chat-hf |
| 批处理大小 | 1-32 |
| 输入长度 | 512 tokens |
| 输出长度 | 128 tokens |
5.2 吞吐量对比(tokens/s)
| 批处理大小 | vLLM-v0.17.1 | DeepSpeed-MII 0.0.8 |
|---|---|---|
| 1 | 142 | 98 |
| 4 | 498 | 315 |
| 8 | 892 | 532 |
| 16 | 1,428 | 843 |
| 32 | 2,105 | 1,127 |
5.3 延迟对比(ms)
| 批处理大小 | vLLM P50 | vLLM P99 | DeepSpeed-MII P50 | DeepSpeed-MII P99 |
|---|---|---|---|---|
| 1 | 58 | 72 | 82 | 115 |
| 4 | 112 | 148 | 185 | 242 |
| 8 | 198 | 265 | 342 | 418 |
6. 性能优化建议
6.1 vLLM最佳实践
-
批处理配置:
- 根据GPU内存调整
--gpu-memory-utilization参数(0.8-0.95) - 使用
--max-num-seqs控制最大并发请求数
- 根据GPU内存调整
-
量化策略:
from vllm import LLM # 使用AWQ量化 llm = LLM(model="TheBloke/Llama-2-7B-AWQ", quantization="awq", dtype="half") -
内存优化:
- 启用PagedAttention:
--block-size 16 - 使用前缀缓存减少重复计算
- 启用PagedAttention:
6.2 与DeepSpeed-MII的适用场景
- 选择vLLM:当需要高吞吐、低延迟的在线服务时
- 选择DeepSpeed-MII:当需要与DeepSpeed训练管线深度集成时
7. 总结
vLLM-v0.17.1在LLM推理性能上展现出显著优势,特别是在吞吐量和延迟方面相比DeepSpeed-MII有30-50%的提升。其创新的PagedAttention和连续批处理技术使其成为生产环境部署的理想选择。
对于需要高性能LLM服务的场景,vLLM提供了更优的解决方案,而DeepSpeed-MII则更适合与现有DeepSpeed训练管线集成的场景。开发者可以根据具体需求选择合适的工具。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐


所有评论(0)