Qwen1.5多框架部署对比:SGLang vs vLLM vs TensorRT-LLM延迟测试

【免费下载链接】Qwen1.5 【免费下载链接】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模型的部署中:

  1. 首 token 延迟:TensorRT-LLM < vLLM < SGLang
  2. 推理延迟:TensorRT-LLM < vLLM < SGLang
  3. 吞吐量: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模型的最佳性能。

参考资料

  1. SGLang官方文档
  2. vLLM官方文档
  3. Qwen1.5速度基准测试脚本

【免费下载链接】Qwen1.5 【免费下载链接】Qwen1.5 项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen1.5

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐