LLM推理引擎性能评测对比:vllm、lmdeploy、tensorrt-llm

01

简介

在当今LLM时代,大模型的效果已经取得了长足的进步,逐渐成为业务流程中的重要部分,因此对性能进行评估变得至关重要,由于目前LLM推理都需要比较高级的GPU,使得LLM推理成本高,因此在不同使用场景下优化推理就很有必要。对于提供公共推理服务,比如openai等来说,提高吞吐率优先级比较高,而在一些专用的业务场景,则对首包延迟和整体请求延迟有着较高要求。

目前业界已经开发了各种各样的LLM推理引擎,如VLLM,LLMDeploy,huggingface(text-generation-inference), DeepSpeed-Inference,以及大量的商业化API,本文介绍LLM性能主要指标,进行性能压测,并通过wandb进行压测结果对比。

02

LLM推理关键指标以及影响

  • Throughput

总的吞吐(output tokens/seconds),对于LLM Serving重要,可以提高总的服务能力。

  • Time to First Token(TTFT)

在prefill阶段后返回的第一个token的时间,在stream输出模式下,对体验影响大,越小用户等待返回第一个token时间越小,体验越好。

  • Time per output token

生成每个token的时间,影响体验

  • Latency

处理完整请求用时。

  • QPS

每秒处理完成的请求数。

03

性能测试工具

为了支持各种服务API以及开源LLM推理性能,评估是否满足生产需求,我们提供一套简单可扩展的工具,支持LLM各项指标,详细可以参考eval-scope项目中的性能perf工具说明: https://github.com/modelscope/eval-scope/tree/main/llmuses/perf

04

环境信息

测试机器(A100 80G)

图片

测试评测引擎以及版本版本

引擎

版本

vllm

v0.5.0.post1

lmdeploy

0.4.1

tritonserver(tensorrt-llm backend)

tensorrt_llm 0.11.0.dev2024061100

测试数据

性能评测请求根据下列数据集构造。

  • 正常上下文:

https://huggingface.co/datasets/Hello-SimpleAI/HC3-Chinese/blob/main/open_qa.jsonl

  • 长上下文数据集:

https://huggingface.co/datasets/Yukang/LongAlpaca-12k/blob/main/LongAlpaca-12k.json

测试模型

为了使测试更具有代表行,我们测试了不同size的模型(qwen2 7B,qwen2 72B),在不同请求长度以及并发下的性能,所有引擎参数大多使用默认值,未针对性调参,不代表引擎最优性能。

qwen7B单卡推理,qwen72B 4卡推理(tensor parallel 4).

参考: https://github.com/triton-inference-server/tensorrtllm_backend

05

测试结果

Qwen7B

1.open_qa正常上下文

1.1单并发

**结果对比(时间单位均为秒)**

![图片](https://img-blog.csdnimg.cn/img_convert/106026539807a0289083ea867869780d.png)

**Throughput VS TTFT(Time to first token)**

![图片](https://img-blog.csdnimg.cn/img_convert/8a4211cb491c1fc1e579d95a2dda144c.png)

**wandb详细对比图表**

![图片](https://img-blog.csdnimg.cn/img_convert/06d05b8d0ea251b70bfd0536384ed956.png)

在单并发情况下tensorrt-llm TTFT最小,用户体验最好,lmdeploy through最高,服务性能最好。

**多并发(128)**

**结果对比(时间单位均为秒)**

![图片](https://img-blog.csdnimg.cn/img_convert/40bdeb6ee65ab6181723dc77ea7521e2.png)

lmdeploy在短文本,多并发情况下,vllm TTFT最小,用户体验最好,响应最快,但Throughput最低,lmdeploy TTFT最大,Throughput最高。

**Throughput VS TTFT(Time to first token)**

![图片](https://img-blog.csdnimg.cn/img_convert/b6f7ecb5297ad6067be2e53e898e1899.png)

wandb详细对比图表

![图片](https://img-blog.csdnimg.cn/img_convert/c9a79a8e94402b64a8a1347c1c20e81f.png)

**2.LongAlpaca-12K长上下文**

**2.1单并发**

**结果对比(时间单位均为秒)**

![图片](https://img-blog.csdnimg.cn/img_convert/2c1b837b3bbee3321e7e94bb1571a692.png)

**Throughput VS TTFT(Time to first token)**

![图片](https://img-blog.csdnimg.cn/img_convert/a09b0540201e76e5e66789f74bace045.png)

**wandb详细对比图表**

![图片](https://img-blog.csdnimg.cn/img_convert/9d8c75d0555476f7388f9c12013638fd.png)

**2.2多并发(4)**

**结果对比(时间单位均为秒)**

![图片](https://img-blog.csdnimg.cn/img_convert/42caf41709c461b89a92caefbc83870e.png)

**Throughput VS TTFT(Time to first token)**

![图片](https://img-blog.csdnimg.cn/img_convert/f6dbc4f6288a27466403043e348780d6.png)

**wandb详细对比图表**

![图片](https://img-blog.csdnimg.cn/img_convert/6485c95e5eb482dfbf3f11f39a4d156d.png)

## **Qwen72B**

**1.open\_qa正常上下文**

##### **1.1单并发**


``

结果对比

图片

Throughput VS TTFT(Time to first token)

图片

wandb详细对比图表

图片

1.1多并发(128)

结果对比(时间单位均为秒)

图片

Throughput VS TTFT(Time to first token)

图片

wandb详细对比图表

图片

2.LongAlpaca-12K长上下文

2.2单并发

结果对比(时间单位均为秒)

图片

Throughput VS TTFT(Time to first token)

图片

wandb详细对比图表

图片

2.2多并发(4)

结果对比(时间单位均为秒)

图片

Throughput VS TTFT(Time to first token)

图片

wandb详细对比图表

图片

06

总结

从总体结果看,主流引擎在不同场景下各有优势,用户可以根据自己使用场景,选择合适的引擎,如果您服务少数用户,选择TTFT小的,用户体验更佳,如果您要服务大量用户,可以选择throughput大的,提高资源利用率。

但从使用体验上看,vllm,lmdeploy使用方便,直接从model hub下载模型即可,而tensorrt-llm需要转换和编译模型,并且创建合适的引擎环境也有一定的成本,需要tensorrt-llm,triton server以及tensorrt-llm backend,格步骤参数有一定关联性,极易出错,总体使用成本对比会高不少。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/770554.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VS2019+QT VS tools:Debug下ok,relese下报错

报错界面 踩得坑: 尝试一下重装 QT VS tools,结果装不上。 尝试卸载原来的QT VS tools:卸载方法,到下面文件夹下可以看到有两个文件夹,分别是两个插件,找到QT的插件,删除文件夹即可。但是删除…

基于深度学习网络的USB摄像头实时视频采集与火焰检测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 将usb摄像头对准一个播放火焰的显示器,然后进行识别,识别结果如下: 本课题中&#x…

实验七 SQL数据更新和视图

题目 (1)向商品类别表category中插入一条记录(801,‘座椅套’,‘各种品牌的汽车座套’) (2)向商品表product中插入一条记录:商品编号80101,商品名称“四季通…

汽车免拆诊断案例 | 2021款路虎揽胜运动版车遥控及一键起动功能失效

故障现象 一辆2021款路虎揽胜运动版车,搭载AJ20-P6H3L发动机,累计行驶里程约为2.5万km。车主反映,使用智能钥匙无法解锁车门,使用机械钥匙打开车门,进入车内,发现一键起动功能也失效;根据组合…

电脑录制视频的软件,电脑录制,4款免费软件推荐

在数字化时代,电脑录制视频的软件已成为我们日常生活和工作中的得力助手,这些软件可以帮助我们轻松捕获到屏幕上的精彩瞬间。但同时市面上的录制视频软件也层出不穷,让人不知该如何选择。到底怎样才能选择到一款适合自己的录屏软件呢&#xf…

实验4 宏指令及子程序设计实验

从键盘输入10个无符号十进制数(小于256),将其转换为二进制数并存放在NUM字节型变量中,找出其中的最大数,并将找出的最大数在屏幕上显示出来。 要求: 1)在屏幕上显示字符串提示信息的功能由宏指…

基于单片机的出租车计价器实验教学案例设计

摘 要 为了让学生加深单片机的理解,加强学生的单片机技术应用、实践动手、创新能力的培养,根据单片机课程设计教学情况精心设计了基于单片机的出租车计价器实验教学案例。本教学案例的基本原理是速度的检测,里程、价格的计算和显示。学生通…

Pylons 和 Flex 3

“Pylons” 和 “Flex 3” 是两个不同的技术,各自有着不同的背景和应用场景: Pylons Pylons 是一个 Python Web 框架,用于快速开发 Web 应用程序。它强调简单性、灵活性和可扩展性,以便开发人员能够快速构建和部署功能强大的 We…

如何在Linux上删除Systemd服务

Systemd是Linux 操作系统的系统和服务管理器,提供控制系统启动时启动哪些服务的标准流程。 有时,您可能出于各种原因需要删除systemd服务,例如不再需要、与其他服务冲突,或者您只是想清理系统。 Systemd使用单元文件来管理服务&…

【Linux】虚拟机安装 openEuler 24.03 X86_64

目录 一、概述 1.1 openEuler 覆盖全场景的创新平台 1.2 系统框架 1.3 平台框架 二、安装详细步骤 一、概述 1.1 openEuler 覆盖全场景的创新平台 openEuler 已支持 x86、Arm、SW64、RISC-V、LoongArch 多处理器架构,逐步扩展 PowerPC 等更多芯片架构支持&…

行车记录打不开:故障深度解析、恢复策略与预防指南

一、行车记录打不开的困境概述 行车记录仪,作为现代驾驶安全的重要辅助工具,不仅记录着每一次出行的点滴,更在关键时刻成为维护权益的关键证据。然而,当车主满怀期待地想要回顾或分享这些记录时,却遭遇了行车记录打不…

Tomcat服务部署安装

一、Tomcat基础 1.Tomcat简介 Tomcat服务器是一个免费的开放源代码的Web应用服务器,Tomcat虽然和Apache或者Nginx这些Web服务器一样,具有处理HTML页面的功能,然而由于其处理静态HTML的能力远不及Apache或者Nginx,所以Tomcat通常…

存储器类型介绍

存储器 ROM 我们一般把手机和电脑的硬盘当作ROM。ROM的全称是:Read Only Memery,只读存储器,就是只能读不能写的存储器。但是现在的ROM不仅可以读,还可以写数据,比如给手机下载APP,就是给手机上的ROM写数据…

《ClipCap》阅读笔记(上)

原文出处 [2111.09734] ClipCap: CLIP Prefix for Image Captioning (arxiv.org) 原文笔记 What ClipCap: CLIP Prefix for Image Captioning 一言以蔽之:使用 CLIP 编码作为标题的前缀,使用简单的映射网络,然后微调语言模型…

光伏电站数据采集方案(基于工业路由器部署)

​ 一、方案概述 本方案采用星创易联SR500工业路由器作为核心网关设备,实现对光伏电站现场数据的实时采集、安全传输和远程监控。SR500具备多接口、多功能、高可靠性等特点,能够满足光伏电站数据采集的各种需求。(key-iot.com/iotlist/sr500…

完全理解C语言函数

文章目录 1.函数是什么2.C语言中的函数分类2.1 库函数2.1.1 如何使用库函数 2.2自定义函数 3.函数的参数3.1 实际参数(实参)3.2 形式参数(形参) 4.函数调用4.1传值调用4.2 传址调用4.3 练习 5.函数的嵌套调用和链式访问5.1 嵌套调…

LLMs之gpt_academic:gpt_academic的简介、安装和使用方法、案例应用之详细攻略

LLMs之gpt_academic:gpt_academic的简介、安装和使用方法、案例应用之详细攻略 目录 gpt_academic的简介 1、版本更新历史 版本: 1、新增功能及其描述 新界面(修改config.py中的LAYOUT选项即可实现“左右布局”和“上下布局”的切换) 所…

【代码随想录】【算法训练营】【第57天】 [卡码99]岛屿数量 [卡码100]岛屿的最大面积

前言 思路及算法思维,指路 代码随想录。 题目来自 卡码网。 day 57,周三,再ding一下~ 题目详情 [卡码99] 岛屿数量 题目描述 卡码99 岛屿数量 LeetCode类似题目200 岛屿数量 解题思路 前提: 思路: 重点&#…

STM32MP135裸机编程:使用软件触发硬件复位

0 参考资料 STM32MP13xx参考手册.pdf 1 使用寄存器实现软件复位 1.1 复位电路概述 重点关注下面标红的路线: 通过这条路线可以清楚看到,我们可以通过设置RCC_MP_GRSTCSETR寄存器让RPCTL(复位脉冲控制器)给NRST(硬件复…

Vue组件如何“传话”?这里有个小秘诀!

​🌈个人主页:前端青山 🔥系列专栏:vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue-组件通信 目录 Vue组件通信 (1) props / $emit 1. 父组件向子组件传…