LLMPerf-为LLM提供可重现的性能指标

LLMPerf-为LLM推理提供可复现的性能指标

翻译自文章:Reproducible Performance Metrics for LLM inference

结合之前的LLMPerf测试大模型API性能的文章进行查看,效果更佳。

1. 摘要

  • 我们见过许多关于LLM性能的声明;然而,这些声明往往无法复现。

  • 今天,我们发布了LLMPerf(https://github.com/ray-project/llmperf),这是一个开源项目,用于基准测试LLM,以使这些声明可复现。我们讨论了选择的指标以及如何测量它们。

  • 有趣的见解:100个输入token对延迟的影响与一个输出token大致相同。如果你想加快速度,减少输出比减少输入更有效。

  • 我们还展示了这些基准测试在一些当前LLM产品上的结果,并确定了哪些LLM目前最适合什么用途。我们重点关注了Llama 2 70b。

  • 总结我们在每个token价格上的结果:Perplexity beta由于低速率限制,目前尚不适用于生产;Fireworks.ai和Anyscale Endpoints都可行,但Anyscale Endpoints在典型工作负载(550个输入token,150个输出token)的平均端到端延迟上便宜15%,快17%。在高负载水平下,Fireworks的首次token时间(TTFT)稍好。

  • 特别是对于LLM,性能特性变化迅速,每个用例都有不同的需求,适用情况因人而异。

benchmarking-llms-end-to-end-vs-concurrent-requests
benchmarking-llms-end-to-end-vs-concurrent-requests

2. 问题

最近,许多人对其LLM推理性能做出了各种声明。然而,这些声明往往无法复现,并且缺乏详细信息。例如,有一篇帖子仅仅说明了结果是针对“不同输入大小”的,但其图表我们根本无法理解。

我们曾考虑发布自己的基准测试结果,但意识到仅仅这样做只会延续不可复现结果的问题。因此,除了发布结果之外,我们还将我们的内部基准测试工具开源。你可以在这里下载它。README文件中有许多示例展示了如何使用它。

在本文的其余部分,我们将讨论我们测量的关键指标以及各个供应商在这些指标上的表现。

3. LLM的定量性能指标

LLM的关键指标有哪些?我们建议标准化以下指标:

通用指标

以下指标适用于共享公共端点以及专用实例。

每分钟完成请求数

在几乎所有情况下,您都需要向系统发出并发请求。这可能是因为您正在处理来自多个用户的输入,或者您有批量推理工作负载。

在许多情况下,共享公共端点提供商会在非常低的水平上限制您的请求,除非您与他们达成额外的协议。我们曾见过一些提供商将限制设置为90秒内不超过3个请求。

第一个token的响应时间(TTFT)

在流式应用中,TTFT是指LLM返回第一个token所需的时间。我们不仅关注平均TTFT,还关注其分布情况:P50、P90、P95和P99。

token间延迟(ITL)

token间延迟是指连续token之间的平均时间。我们决定在计算token间延迟时包括TTFT。我们曾见过一些系统在端到端时间内非常晚才开始流式传输。

端到端延迟

端到端延迟应大致等于平均输出token长度乘以token间延迟。

每个典型请求的成本

API提供商通常可以在其他指标和成本之间进行权衡。例如,您可以通过在更多GPU上运行相同的模型或使用更高端的GPU来减少延迟。

4. 专用实例的附加指标

如果您使用专用计算资源运行LLM,例如使用Anyscale Private Endpoints,则有一些额外的标准需要考虑。请注意,将共享LLM实例与专用LLM实例的性能进行比较非常困难:它们的约束条件不同,并且利用率成为一个更加显著的实际问题。

配置

同样重要的是要注意,同一个模型可以有不同的配置,从而在延迟、成本和吞吐量之间做出不同的权衡。例如,一个在p4de实例上运行的CodeLlama 34B模型可以配置为8个每个使用1个GPU的副本,4个每个使用2个GPU的副本,2个每个使用4个GPU的副本,或者1个使用所有8个GPU的副本。你还可以配置多GPU用于流水线并行或张量并行。每一种配置都有不同的特性:8个每个使用1个GPU的副本可能具有最低的TTFT(因为有8个“队列”在等待输入),而1个使用8个GPU的副本可能具有最高的吞吐量(因为有更多的内存用于批处理并且实际上有8倍的内存带宽)。

每种配置都会导致不同的基准测试结果。

输出令牌吞吐量

还有一个重要的标准:总生成令牌吞吐量。这使你能够进行成本比较。

满负荷利用时每百万令牌的成本

为了比较不同配置的成本(例如,你可以在1个A10G GPU、2个A10G GPU或1个A100-40GB GPU上部署一个Llama 2 7B模型等),重要的是考虑给定输出的总部署成本。在这些比较中,我们将使用AWS一年的预留实例定价。

5. 我们考虑但未包含的指标

当然,还有其他指标可以添加到这个列表中。

预填充时间

由于预填充时间只能通过对第一个令牌生成时间相对于输入大小的回归来间接测量,我们选择在这一轮基准测试中不包括它。我们计划在未来版本的基准测试中添加预填充时间。

根据我们对当前大多数技术的经验,预填充时间(获取输入令牌、将其加载到GPU并计算注意力值)对延迟的影响不如输出令牌显著。

benchmarking-llms-ttft
benchmarking-llms-ttft

上图展示了首个令牌生成时间(TTFT)与输入大小的变化情况。所有样本均来自单次运行(5个并发请求)。所有这些数据点会被平均,以在下列图表中给出一个单一的样本点。

可以看到,在250个令牌输入到800个令牌输入之间,输入令牌数量与TTFT之间似乎没有明显关系,并且由于其他原因,TTFT中的随机噪声“掩盖”了这种关系。实际上,我们确实尝试通过比较550个输入令牌和3500个输入令牌的输出并估计梯度来用回归法估算这个关系,发现每增加一个输入令牌会增加0.3-0.7毫秒的端到端时间,而每增加一个输出令牌会增加30-60毫秒的端到端时间(针对在Anyscale Endpoints上运行的Llama 2 70b)。因此,输入令牌对端到端延迟的影响约为输出令牌的1%。我们将在未来回到这一测量。

总吞吐量(包括输入和生成的令牌)

鉴于预填充时间不可测量,并且所花费的时间更多地取决于生成令牌而不是输入大小,我们认为关注输出是正确的选择。

输入选择

在运行此测试时,我们需要选择用于测试的输入以及速率。

我们看到有人使用随机令牌生成固定大小的输入,然后使用最大令牌硬停来控制输出大小。我们认为这种方法次优,原因有二:

  1. 随机令牌不代表真实数据。因此,某些依赖于数据实际分布的性能优化算法(例如推测解码)在随机数据上的表现可能比在真实数据上的表现更差。

  2. 固定大小不代表真实数据。这意味着某些算法(例如分页注意力和连续批处理)的优势不会被体现出来:它们的很多创新在于处理输入和输出大小的变化。

因此,我们希望使用“真实”数据。显然,这因应用而异,但我们至少需要一个平均值作为起点。

输入大小

为了确定“典型”的输入和输出大小,我们查看了来自Anyscale Endpoints用户的数据。基于这些数据,我们选择了:

  • 平均输入长度:550个令牌(标准差150个令牌)

  • 平均输出长度:150个令牌(标准差20个令牌)

为了简化,我们假设输入和输出服从正态分布。在未来的工作中,我们将考虑更具代表性的分布,如泊松分布(其在建模令牌分布方面具有更好的属性,例如,泊松分布在负值时为0)。在计算令牌时,我们始终使用Llama 2快速分词器来估计系统独立的令牌数量——例如,我们在以往的研究中注意到,ChatGPT分词器比Llama分词器更“高效”(Llama 2为每个词1.5个令牌,而ChatGPT为每个词1.33个令牌)。ChatGPT不应该因此受到惩罚。

输入内容

为了使基准测试具有代表性,我们决定给LLM安排两个任务。

第一个任务是将数字的文字表示转换为数字表示。这实际上是一个“校验和”任务,以确保LLM功能正常:我们应该期望返回值与我们发送的值一致(根据我们的经验,在运行良好的LLM中,这种情况很少低于97%)。

第二个任务是提供更灵活的输入和输出。我们在输入中包括一定数量的莎士比亚十四行诗的行数,并要求LLM在输出中选择一定数量的行数。这给我们提供了实际的令牌和大小分布。我们还可以用这个来对LLM进行“合理性检查”——我们期望输出的行看起来与我们提供的行有一定相似度。

并发请求

一个关键特性是并发请求的数量。显然,对于固定的资源集,更多的并发请求会减慢输出速度。为了测试,我们已将标准化的关键数字定为5。

6. LLMPerf

LLMPerf实现了上述测量方法。它也是参数化的(例如允许你更改输入和输出大小以匹配你的应用程序,从而可以为你的工作运行提供商的基准测试)。

LLMPerf 可在此获取:https://github.com/ray-project/LLMPerf

7. LLM产品的基准测试结果

如我们上面提到的,比较按令牌计费的LLM产品(通常是共享的)和按时间单位计费的产品(按时间单位付费)是困难的。对于这些实验,我们关注我们知道的按令牌计费的产品。因此,我们选择了在Anyscale、Fireworks和Perplexity上的llama-2-70b-chat产品。

对于Fireworks,我们使用了Developer PRO账户(将请求速率限制增加到每分钟100次)。

每分钟完成的请求

我们使用这个来测量通过改变并发请求的数量每分钟可以进行多少请求,并观察整体时间的变化。然后,我们将完成的请求数量除以完成所有请求所需的时间(以分钟为单位)。

请注意,这可能略微保守,因为我们将并发请求分批次完成,而不是连续查询。例如,如果我们正在进行5个并发请求,其中4个在5秒内完成,而另一个在6秒内完成,那么就有1秒时间内并没有完全达到5个并发请求。

下面的图表显示了结果。

benchmarking-llms-completed-queries-vs-concurrent-requests
benchmarking-llms-completed-queries-vs-concurrent-requests

我们不得不处理的一个问题是,Perplexity的速率限制非常低。因此,我们只能在每轮之间加入15秒的暂停,才能完成一个“苹果对苹果”的比较。如果少于这个时间,我们会开始从Perplexity获得异常。我们将这个标记为每秒0.5个并发请求。我们运行实验直到开始收到异常。

我们可以看到,Fireworks和Anyscale可以扩展到每分钟完成数百个查询。Anyscale的扩展性略高一些(每分钟最多达到227个查询,而Fireworks为184个查询)。

第一个token的响应时间(TTFT)

我们比较了每个产品的TTFT。对于流式应用程序,如聊天机器人,TTFT尤为重要。

benchmarking-llms-time-to-first-token-vs-concurrent-requests
benchmarking-llms-time-to-first-token-vs-concurrent-requests

再次地,我们在测试Perplexity时有限制。在低负载水平下,Anyscale的速度较快,但随着并发请求的增加,Fireworks似乎稍微更好。在5个并发查询(我们通常关注的数量)时,延迟通常在100毫秒内(563毫秒对比630毫秒)。还必须注意,TTFT在网络情况下有很高的方差(例如,如果服务部署在附近或远处的区域)。

token间延迟(ITL)

benchmarking-llms-inter-token-latency-vs-concurrent-requests
benchmarking-llms-inter-token-latency-vs-concurrent-requests

根据上面的内容,我们可以看到Anyscale的令牌间延迟一直比Fireworks好,尽管差异相对较小(约为5%到20%)。

端到端延迟

下面的图表显示完成查询所需的端到端时间。我们可以看到,端到端请求时间在噪声方面是比较敏感的一个指标。

benchmarking-llms-end-to-end-vs-concurrent-requests
benchmarking-llms-end-to-end-vs-concurrent-requests

我们可以看到,在这里,Anyscale的端到端时间一直比Fireworks的好,但随着负载水平的增加,差距在高负载下会缩小(特别是比例上)。在5个并发查询时,Anyscale为4.6秒,而Fireworks为5.3秒(快15%)。但是在30个并发查询时,差异较小(Anyscale快5%)。

每1000个请求的成本

benchmarking-llms-perplexity-cost
benchmarking-llms-perplexity-cost

Perplexity处于公开测试阶段,因此没有价格 - 我们无法将其包括在比较中。对于Fireworks,我们使用了他们网站上列出的价格,即每百万输入令牌0.7美元,每百万输出令牌2.80美元。对于Anyscale Endpoints,我们使用了他们定价页面上列出的价格,即每百万令牌1美元,不论输入还是输出。

8. 解读这些结果

现在我们有了这些数据,我们可以确定何时使用每个LLM产品:

  1. 对于低流量的交互式应用程序(比如聊天机器人),这三个产品都可以胜任。ITL和TTFT足够小,不会成为主要问题,而且它们之间的差异不大,因为人类阅读大约每秒5个令牌,即使最慢的产品也是这个速度的6倍。然而,在这种工作负载下,Anyscale是这三个产品中最便宜的,便宜约15%。

  2. 如果你正在寻找端到端的超低延迟应用程序,并且工作量不是很大,Perplexity在公开测试结束后可能值得考虑。在Perplexity发布价格之前,很难知道这种低延迟的“代价”。

  3. 如果你有大量的工作负载,Anyscale和Fireworks值得考虑。然而,在这个特定的工作负载下,Anyscale便宜约15%。如果你的输入到输出比例很高,例如10个输入令牌对1个输出令牌,那么Fireworks会更便宜(Fireworks为每美元89美分,而Anyscale为每美元1美元)。极端摘要可能就是一个这样的例子。

这些考虑将帮助你根据具体的需求和预算选择合适的LLM产品。

9. 结论

LLM性能正在以令人难以置信的速度发展。我们希望社区能够发现LLMPerf基准测试工具在比较输出方面的有用性。我们将继续努力改进LLMPerf,特别是使其更容易控制输入和输出的分布,希望这将提高透明度和可重现性。我们也希望您能够使用它来模拟您特定工作负载的成本和性能。

从这个研究中我们看到,并非所有基准测试都适合所有情况,特别是在LLM的情况下,它确实取决于您的具体应用。

本文由 mdnice 多平台发布

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android面试题之Kotlin泛型和reified关键字

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 //泛型 class MagicBox<T>(item:T){var available falseprivate var subject:T itemfun fetch() : T? {return subject.takeIf { avai…

配置旁挂二层组网直接转发示例(命令行)

业务需求 企业用户通过WLAN接入网络&#xff0c;以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时&#xff0c;不影响用户的业务使用。 组网需求 AC组网方式&#xff1a;旁挂二层组网。DHCP部署方式&#xff1a; AC作为DHCP服务器为AP分配IP地址。汇聚交换机SwitchB作…

深度学习基础之《TensorFlow框架(18)—卷积神经网络(2)》

一、卷积层 1、卷积层&#xff08;Convolutional Layer&#xff09;介绍 卷积神经网络中每层卷积层由若干卷积单元&#xff08;卷积核&#xff09;组成&#xff0c;每个卷积单元的参数都是通过反向传播算法最佳化得到的 卷积运算的目的是特征提取&#xff0c;第一层卷积层可能…

Gradle和Maven项目解决Spring Boot Configuration Annotation Processor not configured警告

问题描述 写了一个配置类,加了注解@ConfigurationProperties(prefix = “xxx”) 后一直报警告:Spring Boot Configuration Annotation Processor not configured 意思是 Spring boot 未配置注解处理器 解决过程 出现这个问题后,百度查了解决方式 1.maven项目 maven项目是…

纯软件双机热备

在信息化高速发展的今天&#xff0c;企业对于业务连续性的需求愈发强烈。无论哪个行业&#xff0c;系统的稳定运行都至关重要。为了确保系统的高可用性和业务连续性&#xff0c;纯软件双机热备技术应运而生&#xff0c;成为了企业IT架构中的关键一环。 双机热备软件下载 …

cPanel中如何进行网站质量检测

最近我在维护网站的时候需要查看网站质量如何&#xff0c;我使用的是Hostease的主机安装的WordPress网站&#xff0c;随后在咨询了他们的技术支持后获得了方法。 当您在cPanel中部署了网站后&#xff0c;确保网站的质量和性能是至关重要的。cPanel提供了一个便捷的功能Site Qu…

Postman进阶功能-Mock服务与监控

大家好&#xff0c;前面跟大家分享一些关于 Postman 的进阶功能&#xff0c;当我们深入探索 Postman 的进阶功能时&#xff0c;Mock 服务与监控这两个重要方面便跃然眼前。 首先&#xff0c;Mock 服务为我们提供了一种灵活便捷的方式&#xff0c;让我们在某些实际接口尚未准备好…

18.SpringCloud Gateway

简介 SpringCloud Gateway是spingcloud家族的产品&#xff0c;使用netty实现的高性能服务网关&#xff0c;用于替换netflix公司的zuul网关实现。 参考地址&#xff1a; https://spring.io/projects/spring-cloud 术语 工作原理 Route Predicate Factories GatewayFilte…

新一代分布式链路追踪skywalking编码实战教程(下)

&#x1f680; 作者 &#xff1a;“二当家-小D” &#x1f680; 博主简介&#xff1a;⭐前荔枝FM架构师、阿里资深工程师||曾任职于阿里巴巴担任多个项目负责人&#xff0c;8年开发架构经验&#xff0c;精通java,擅长分布式高并发架构,自动化压力测试&#xff0c;微服务容器化k…

PostgresSQL开启归档模式

文章目录 一、查询数据库归档是否开启1、查看数据目录(找出conf文件位置)2、查看归档是否开启 二、开启归档模式&#xff08;开启后有一定的性能损耗&#xff09;1、创建归档目录2、修改postgresql.conf配置文件3、重启pg 三、验证归档情况1、查看归档是否开启2、检查点 , 刷新…

利用远控工具横向

一.横向移动介绍和方式 1.介绍 内网渗透的横向移动是指攻击者在成功进入内网后&#xff0c;通过利用内部系统的漏洞或者获取的合法访问权限&#xff0c;从一个受感染的系统向其他系统扩散或移动。这种横向移动的目的通常是为了获取更多的敏感信息、提升权限、扩大攻击面或者更…

【蓝桥杯】

题目列表 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<bits/stdc.h> using llunsigned long long; #define int ll const int N2e510; int k0; std::string s; int a,b,c,d; void solve() {char op;std::cin>>op;if(opA){std::string s;for(int i1;i&l…

文心一言指令解析

1、介绍 文心一言是一款灵感启发类的产品&#xff0c;它以简洁而深刻的文字表达来激发读者的思考和感悟。该产品通过每天提供一句精选的短语&#xff0c;让用户在繁忙的生活中停下脚步&#xff0c;思考人生和内心的真实需求。 每一句文心一言都经过精心挑选&#xff0c;它们通…

小程序-滚动触底-页面列表数据无限加载

// index/index.vue <template> <!-- 自定义导航栏 --> <CustomNavbar /> <scroll-view scrolltolower"onScrolltolower" scroll-y class"scroll-view"> <!-- 猜你喜欢 --> <Guess ref"guessRef" /> </s…

恶劣天气下的车辆探测:多方关注 多模态融合方法

摘要 在自动驾驶汽车技术领域&#xff0c;多模式车辆检测网络(MVDNet)代表了一个重大的飞跃&#xff0c;特别是在具有挑战性的天气条件下。本文主要通过集成多头关注层对MVDNet进行增强&#xff0c;旨在改进其性能。MVDNet模型中集成的多头关注层是一个关键的改进&#xff0c;…

民国漫画杂志《时代漫画》第14期.PDF

时代漫画14.PDF: https://url03.ctfile.com/f/1779803-1247458399-6732ac?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络&#xff01;

java+ vue.js+uniapp一款基于云计算技术的企业级生产管理系统,云MES源码 MES系统如何与ERP系统集成?

java vue.jsuniapp一款基于云计算技术的企业级生产管理系统&#xff0c;云MES源码&#xff0c;MES系统如何与ERP系统集成&#xff1f; MES系统&#xff08;制造执行系统&#xff09;与ERP系统&#xff08;企业资源规划系统&#xff09;的集成可以通过多种方式实现&#xff0c;这…

探索亚马逊云科技技术课程:大模型平台与提示工程的应用与优化

上方图片源自亚马逊云科技【生成式 AI 精英速成计划】技术开发技能课程 前言 学习了亚马逊云科技–技术开发技能课程 本课程分为三个部分&#xff0c;了解如何使用大模型平台、如何训练与部署大模型及生成式AI产品应用与开发&#xff0c;了解各类服务的优势、功能、典型使用案…

苹果MacOS系统使用微软远程桌面连接Windows电脑桌面详细步骤

文章目录 前言1. 测试本地局域网内远程控制1.1 Windows打开远程桌面1.2 局域网远程控制windows 2. 测试Mac公网远程控制windows2.1 在windows电脑上安装cpolar2.2 Mac公网远程windows 3. 配置公网固定TCP地址 前言 日常工作生活中&#xff0c;有时候会涉及到不同设备不同操作系…

Vue3实战笔记(38)—粒子特效终章

文章目录 前言一、怎样使用官方提供的特效二、海葵特效总结 前言 官方还有很多漂亮的特效&#xff0c;但是vue3只有一个demo&#xff0c;例如我前面实现的两个页面就耗费了一些时间&#xff0c;今天记录一下tsparticles官方内置的几个特效的使用方法&#xff0c;一般这几个就足…