0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎么评估算法的性能

深度学习自然语言处理 来源:CS的陋室 作者:CS的陋室 2022-08-11 10:40 次阅读

我在很多文章里都有吐槽大规模预训练模型的性能差,落地成本高,这一期就和大家讲讲,怎么评估算法的性能的。

当然,这篇文章应该是比较科普的,主要是为了让大家树立一个性能意识,在进行方案选型和最终检测的时候,能有关注性能的这个意识。

性能的意义

这里所谓的性能,本质是对执行速度、执行资源消耗的一种评估。在现实的落地场景,一个模型最终能不能用起来,除了和算法效果有关,即类似准确率召回率,还和依赖的资源以及速度是相关的。

我们可以把运行环境比作一个空间有限的房间,如果你的刀是40米长的,其实很难在这个房间里使的舒服,即使他的伤害很高很强,与之相反,一把短一些的到在有限空间内,用起来会更得心应手。这就是性能的意义,在预训练模型逐步热门之后,这个问题会更加尖锐,预训练无论是计算复杂度,还是空间需求,都很大,先不说训练,就是推理,单机推理还算可以,但是耗时,还是高并发需求下,并非所有的组织都能支持,因此,我们需要对性能有足够的敏感性,否则会很可能会出现,一顿操作效果调优一个月的预训练模型,最终因为上不了线功亏一篑的尴尬情况,当然,这也是作为一名算法工程师,必备的一种能力。

性能评估的观测指标

要评估性能好坏,有哪些评估项,又有那些评估指标,详细介绍下。

首先是单机速度的评估。即单进程下,每次推理所需要的时间,或者单位时间下能处理的计算次数,一般评估的是rt(Reaction Time,响应时间)或者qps/tps(query per second,transaction per second)。但是,由于很多时候,不同的输入可能会影响这个时间,所以一般使用和在线分布接近的样本或者query来批量请求,求平均值,而常见的,耗时长度的分布服从二八法则,因此我们要关注的是TOP耗时的情况,因此我们还会看不同位置的分位点情况,例如90%、95%或者99%分位点。另外还有种评估的方式,用合格率之类的方法,例如最高耗时不能超过200ms,超过的算失败,然后计算成功率,成功率99%以上。

对于互联网环境,除了单机速度,还必须考虑并发能力,并发能力是指当同时很多请求同时或者接近同时请求的时候的性能状态,很多时候,因为热点事件的出现,大家会大量开始在网上检索请求,对计算机而言,完不成的任务就会开始排队(这个和银行柜台类似的),排队太长系统自然就难堪重负崩溃了,例如微博、B站、知乎这种偶尔的崩溃就很多是因为这个原因。指标上,其实更多是和单机的评估类似,只是评估的时候,一般是用多进程同时请求以模拟在线情况,例如4进程、8进程这种,然后来看速度还能不能保证在合格范围内。

除了速度之外,偶尔还要看看其他的问题,例如内存,有没有内存泄漏(在服务运行期间内存有没有持续增加),在高峰期内存是否在正常范围内(例如80%以内),都是需要关注的。

从批跑到压测

前面有提到,评估性能最简单的方式就是批量跑case,简单的性能评估,其实就是找一批和query批量跑,然后掐时间。这里,先说下这个query需要有什么要求:

数量得足够,否则均值和分位点计算就达不到统计意义。

而且尽可能和现实场景匹配,这样测得时间和在线实际时间比较接近(这个其实没那么难,直接捞日志抽样即可)

这个时间的评估其实不难,简单的用tqdm,上面就显示平均时间(X item/s),但是如果要算分位点了,肯定要把每个case的时间都记录下来再统计,例如弄numpy里面的函数计算,写起来并不算困难。

但是,一旦要考虑并发能力了,那就要压测了,即压力测试,所谓的压测,其实就是计算机模拟N个用户,同时不断向服务发送请求,当然,要压测的话,通常需要把模型打包成服务,例如grpc或者http的。然后和观测上面提的指标,耗时、qps、成功率、内存等。一般情况,我们不需要用所有服务器来实验,一般也是对一台机器即可,因为多台机器,如果有做负载均衡,其实性能就是多台机器求和而已。python实现上,先是对模型打包成服务形成服务端,而压测脚本这边写一个客户端来请求服务端,上压测的话就弄个多进程触发即可,网上有很多样例代码,直接搜,当然别指望能照搬,肯定是需要自己服务的情况来修改额,毕竟接口不尽相同。

小结

本文给大家简单介绍了算法这边需要关注的性能,以及评估的主要方式,能让大家对性能树立一个基本的概念,让大家清楚性能是什么,怎么观测等,后续会给大家介绍一些性能调优的手段,帮助大家更好地优化性能,成功把自己心心念念的模型推上线。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 互联网
    +关注

    关注

    54

    文章

    11094

    浏览量

    102942
  • 算法
    +关注

    关注

    23

    文章

    4599

    浏览量

    92618
  • 模型
    +关注

    关注

    1

    文章

    3158

    浏览量

    48701

原文标题:算法性能评估指南

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何评估adc的性能参数

    评估ADC(模数转换器)的性能参数是一个综合考量多个因素的过程。以下是一些关键的ADC性能参数及其评估方法: 一、分辨率 分辨率是衡量ADC能够区分的最小信号变化的能力,通常以位(bi
    的头像 发表于 11-19 17:26 317次阅读

    多通道负载测试和性能评估

    多通道负载测试和性能评估是软件质量保证的重要组成部分,它们可以帮助我们发现和解决系统的性能瓶颈,提高系统的可用性和稳定性。 多通道负载测试是一种模拟多个用户同时访问系统的方法,以检查系统在高并发
    发表于 11-11 16:44

    如何评估智能系统的性能

    评估智能系统的性能是一个复杂而多维的任务,它涉及多个方面和指标。以下是一些关键的评估方法和策略: 一、功能测试 功能测试是评估智能系统是否按照预期执行任务的关键环节。这包括: 单元测试
    的头像 发表于 10-29 09:49 195次阅读

    基于FPA的软件工作量综合评估研究与实践

    方法基于软件系统工作量估算法的融合,基于FPA评估法与专家经验估算相结合,综合评估软件系统工作量,并将该方法实践于多个项目中,结果得到了用户的认可,表明了综合
    发表于 10-15 10:45 0次下载

    AM335x功耗估算工具

    电子发烧友网站提供《AM335x功耗估算工具.pdf》资料免费下载
    发表于 10-12 11:46 0次下载
    AM335x功耗<b class='flag-5'>估算</b>工具

    评估板中TAS5558的PWM输出性能为什么实测达不到SPEC中的性能

    基于TAS5634评估板和相应的gui软件操作,对PWM输出的单端和差分性能进行了测试,目前按寄存器的默认配置 三种调制方式都没有达到SPEC中的性能,AD调制模式SNR测出约为77dB, BD
    发表于 10-09 10:04

    门窗传感器评估平台介绍和性能概述

    电子发烧友网站提供《门窗传感器评估平台介绍和性能概述.pdf》资料免费下载
    发表于 09-10 10:49 0次下载
    门窗传感器<b class='flag-5'>评估</b>平台介绍和<b class='flag-5'>性能</b>概述

    AM263x功率估算工具

    电子发烧友网站提供《AM263x功率估算工具.pdf》资料免费下载
    发表于 09-09 09:42 0次下载
    AM263x功率<b class='flag-5'>估算</b>工具

    如何评估机床测头的性能是否满足特定行业的需求?

    评估机床测头的性能是否满足特定行业的需求,需要从多个维度进行综合考量。以下是一些关键步骤和评估标准:1.精度要求:测量精度是评估机床测头性能
    的头像 发表于 08-08 15:40 625次阅读
    如何<b class='flag-5'>评估</b>机床测头的<b class='flag-5'>性能</b>是否满足特定行业的需求?

    如何评估美国洛杉矶高防服务器的性能

    评估美国洛杉矶高防服务器的性能对于确保网站或应用程序的稳定性和安全性至关重要。高防服务器通常被用来抵御分布式拒绝服务(DDoS)攻击和其他网络威胁。下面是一篇科普性质的文章,介绍如何评估这些服务器的
    的头像 发表于 07-31 09:52 227次阅读

    STM32F4用来作为计算单元的时候,如何评估算法或应用的时间性能

    STM32F4用来作为计算单元的时候,如何评估算法或应用的时间性能?能不能通过配置使之具备计时功能?精度达到us级别就足够了。 关于计时,在debug状态下,通过states的计数值可以计算时间性能,但必须是debug设置断点
    发表于 05-16 06:37

    DC电源模块的性能评估和比较

    BOSHIDA DC电源模块的性能评估和比较 DC电源模块是一种常用的电源模块,主要用于提供直流电源给不同的电子设备。在进行性能评估和比较时,可以考虑以下几个方面:  1. 输出功率:
    的头像 发表于 04-09 13:14 437次阅读

    DC电源模块的安全性能评估与测试方法

    BOSHIDA DC电源模块的安全性能评估与测试方法 DC电源模块的安全性能评估与测试方法应包括以下几个方面:  DC电源模块的安全性能
    的头像 发表于 03-08 11:15 640次阅读
    DC电源模块的安全<b class='flag-5'>性能</b><b class='flag-5'>评估</b>与测试方法

    SAGE算法性能分析

    电子发烧友网站提供《SAGE算法性能分析.pdf》资料免费下载
    发表于 02-28 10:38 0次下载

    五轴按键测试机:精准评估按键性能的利器

    五轴按键测试机:精准评估按键性能的利器
    的头像 发表于 12-26 09:15 522次阅读
    五轴按键测试机:精准<b class='flag-5'>评估</b>按键<b class='flag-5'>性能</b>的利器