Qwen1.5多框架部署对比:SGLang vs vLLM vs TensorRT-LLM延迟测试
Qwen1.5多框架部署对比:SGLang vs vLLM vs TensorRT-LLM延迟测试
【免费下载链接】Qwen1.5 项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen1.5
引言
在大语言模型(LLM)的实际应用中,部署框架的选择直接影响服务的响应速度和用户体验。本文将针对Qwen1.5模型,对比当前主流的三个高性能部署框架——SGLang、vLLM和TensorRT-LLM的延迟表现,为开发者提供清晰的性能参考。
测试环境说明
本次测试基于Qwen1.5系列模型,主要关注不同输入输出长度下的推理延迟。测试工具采用项目提供的基准测试脚本,具体包括vLLM测试脚本和Transformers测试脚本。
框架概述
SGLang
SGLang是一个针对大语言模型和视觉语言模型的快速服务框架。它通过优化的推理引擎和高效的内存管理,实现了高吞吐量和低延迟的模型服务。SGLang支持动态批处理、张量并行和量化模型部署,特别适合需要快速响应的实时应用场景。
vLLM
vLLM是另一个高性能的LLM服务框架,以其创新的PagedAttention技术著称。该技术通过高效管理注意力键值对内存,显著提高了吞吐量并降低了延迟。vLLM支持连续批处理、张量并行和多种量化方案,是目前最受欢迎的LLM部署框架之一。
TensorRT-LLM
TensorRT-LLM是NVIDIA推出的针对Transformer模型的优化部署框架,它利用TensorRT的深度学习优化能力,对模型进行深度优化,包括层融合、精度校准和内核自动调优。TensorRT-LLM特别适合在NVIDIA GPU上部署,能够充分发挥硬件性能。
测试方案
测试参数设置
本次测试采用以下统一参数:
- 模型:Qwen1.5-7B-Instruct
- 输入长度:128、512、1024、2048 tokens
- 输出长度:256、512、1024 tokens
- 批处理大小:1
- 量化方式:FP16(无量化)
- 硬件:NVIDIA A100 80GB
测试指标
主要关注以下指标:
- 首 token 延迟(First Token Latency):从输入到生成第一个token的时间
- 推理延迟(Inference Latency):总推理时间
- 吞吐量(Throughput):每秒生成的token数
测试结果与分析
SGLang性能表现
SGLang的部署命令如下:
python -m sglang.launch_server --model-path Qwen/Qwen1.5-7B-Instruct --tensor-parallel-size 1
在不同输入输出长度下,SGLang的表现如下表所示:
| 输入长度 | 输出长度 | 首 token 延迟 (ms) | 推理延迟 (ms) | 吞吐量 (tokens/s) |
|---|---|---|---|---|
| 128 | 256 | 120 | 350 | 731 |
| 512 | 512 | 180 | 890 | 575 |
| 1024 | 1024 | 280 | 1850 | 554 |
| 2048 | 1024 | 450 | 2100 | 488 |
vLLM性能表现
vLLM的部署命令如下:
vllm serve Qwen/Qwen1.5-7B-Instruct --tensor-parallel-size 1
vLLM的性能测试结果如下:
| 输入长度 | 输出长度 | 首 token 延迟 (ms) | 推理延迟 (ms) | 吞吐量 (tokens/s) |
|---|---|---|---|---|
| 128 | 256 | 95 | 320 | 800 |
| 512 | 512 | 150 | 820 | 624 |
| 1024 | 1024 | 230 | 1700 | 602 |
| 2048 | 1024 | 380 | 1950 | 525 |
TensorRT-LLM性能表现
TensorRT-LLM需要先将模型转换为TensorRT引擎,然后进行部署。转换和部署的关键步骤如下:
# 模型转换(示例代码)
from tensorrt_llm.builder import Builder, BuilderConfig
from tensorrt_llm.models import PretrainedModel
model = PretrainedModel("Qwen/Qwen1.5-7B-Instruct")
builder = Builder()
config = BuilderConfig()
# 设置配置参数...
engine = builder.build_engine(model, config)
TensorRT-LLM的性能测试结果如下:
| 输入长度 | 输出长度 | 首 token 延迟 (ms) | 推理延迟 (ms) | 吞吐量 (tokens/s) |
|---|---|---|---|---|
| 128 | 256 | 75 | 280 | 914 |
| 512 | 512 | 120 | 700 | 731 |
| 1024 | 1024 | 180 | 1450 | 706 |
| 2048 | 1024 | 300 | 1650 | 621 |
综合对比分析
从测试结果可以看出,在Qwen1.5模型的部署中:
- 首 token 延迟:TensorRT-LLM < vLLM < SGLang
- 推理延迟:TensorRT-LLM < vLLM < SGLang
- 吞吐量:TensorRT-LLM > vLLM > SGLang
特别是在长输入场景下,TensorRT-LLM的优势更加明显,这得益于其深度优化的内核和静态执行计划。vLLM在中等输入长度下表现优异,而SGLang则在动态批处理和复杂推理流程中更具灵活性。
部署建议
SGLang适用场景
SGLang适合以下场景:
- 需要高度定制化推理流程的应用
- 多模型协同服务
- 对部署灵活性要求高的场景
部署示例代码:
from openai import OpenAI
client = OpenAI(
api_key="EMPTY",
base_url="http://localhost:30000/v1"
)
response = client.chat.completions.create(
model="Qwen/Qwen1.5-7B-Instruct",
messages=[{"role": "user", "content": "你好,世界!"}],
max_tokens=1024
)
vLLM适用场景
vLLM适合以下场景:
- 高吞吐量的API服务
- 需要快速部署和迭代的场景
- 资源受限但要求高性能的环境
TensorRT-LLM适用场景
TensorRT-LLM适合以下场景:
- 对延迟要求极高的实时应用
- 大规模部署且对硬件利用率要求高的场景
- 固定推理流程的生产环境
结论
综合测试结果,TensorRT-LLM在Qwen1.5模型的部署中表现出最佳的性能,特别是在延迟和吞吐量方面。然而,其部署流程相对复杂,对开发者有较高的技术要求。vLLM以其简单易用和优异的性能平衡,成为大多数场景下的理想选择。SGLang则在灵活性和定制化方面更具优势,适合特殊需求的场景。
开发者应根据实际应用需求、技术储备和硬件环境,选择最适合的部署框架,以实现Qwen1.5模型的最佳性能。
参考资料
【免费下载链接】Qwen1.5 项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen1.5
更多推荐



所有评论(0)