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实现上,先是对模型打包成服务形成服务端,而压测脚本这边写一个客户端来请求服务端,上压测的话就弄个多进程触发即可,网上有很多样例代码,直接搜,当然别指望能照搬,肯定是需要自己服务的情况来修改额,毕竟接口不尽相同。

小结

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

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

    关注

    55

    文章

    11261

    浏览量

    106963
  • 算法
    +关注

    关注

    23

    文章

    4720

    浏览量

    95935
  • 模型
    +关注

    关注

    1

    文章

    3547

    浏览量

    50735

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    无感FOC算法在电机启动时具体如何优化性能?--【其利天下】

    在现代电机控制系统中,无感FOC(磁场定向控制)算法因其卓越的性能表现而备受关注。尤其是在电机启动阶段,无感FOC算法通过一系列优化措施,极大地提升了电机的启动性能。本文将详细探讨无感
    的头像 发表于 08-08 18:38 ?123次阅读
    无感FOC<b class='flag-5'>算法</b>在电机启动时具体如何优化<b class='flag-5'>性能</b>?--【其利天下】

    如何评估协议分析仪的性能指标?

    评估协议分析仪的性能指标需从硬件处理能力、协议解析精度、实时响应效率、扩展性与兼容性、用户体验五大维度综合考量。以下是具体指标及评估方法,结合实际场景说明其重要性:一、硬件处理能力:决定基础
    发表于 07-18 14:44

    【Banana Pi BPI-RV2开发板试用体验】移植音频处理算法回声消除降噪性能等效果评估

    一. 前言 虽然香蕉派 BPI-RV2 RISC-V 开发板主打路由器开发,但是其强劲的性能,所以进行实时音频处理等应用也是小菜一碟。 本文分享移植音频处理算法评估算法运行效率,评估
    发表于 07-09 23:19

    VirtualLab:F-Theta扫描透镜的性能评估

    Detector 总结-组件 系统观感 通过系统:三维可视化,不同FoV模式可以通过颜色编码来区分。此外,可以检查场的轨迹,以便将探测器放置在正确的位置。 性能评估-点位偏差 性能评估
    发表于 05-29 08:48

    主驱电机系统的扭矩估算方案

    主驱电机是电动汽车核心的部件之一,主要作用是产生驱动扭矩或制动扭矩,驱动车辆前进并进行动能回收。扭矩估算算法也成为主驱电机扭矩安全的重点。目前常用的扭矩估算算法有三种,分别是:电流法、功率法和查表法。本文将就这三种算法进行展开讲
    的头像 发表于 03-17 16:26 ?834次阅读
    主驱电机系统的扭矩<b class='flag-5'>估算</b>方案

    ?为什么GPU性能效率比峰值性能更关键

    评估GPU性能时,通常首先考察三个指标:图形工作负载的纹理率(GPixel/s)、浮点运算次数(FLOPS)以及它们能处理计算和AI工作负载的每秒8-bittera运算次数(TOPS)。这些关键
    的头像 发表于 03-13 08:34 ?466次阅读
    ?为什么GPU<b class='flag-5'>性能</b>效率比峰值<b class='flag-5'>性能</b>更关键

    VirtualLab Fusion应用:F-Theta扫描透镜的性能评估

    ,不同FoV模式可以通过颜色编码来区分。此外,可以检查场的轨迹,以便将探测器放置在正确的位置。 性能评估-光斑位置偏差 性能评估-光斑直径测量 VirtualLab Fusion
    发表于 03-03 09:34

    MPU的性能评估方法

    MPU(Microprocessor Unit,微处理器单元)的性能评估是确保其在实际应用中能够满足需求的重要环节。以下是一些常用的MPU性能评估方法: 一、基准测试(Benchmar
    的头像 发表于 01-08 09:39 ?921次阅读

    一文解析LOPA应用-点火概率估算的策略与实践

    在化工过程安全领域,保护层分析(LOPA)是评估风险与确定安全措施有效性的关键工具。而其中点火概率的估算,更是直接影响风险评估结果与 SIL 定级决策的重要因素。豪鹏科技在服务软件客户过程中,经常
    的头像 发表于 12-21 14:46 ?1310次阅读
    一文解析LOPA应用-点火概率<b class='flag-5'>估算</b>的策略与实践

    光伏逆变器负载何进行负载测试和性能评估

    光伏逆变器是光伏发电系统的关键设备,它将太阳能电池板产生的直流电转换为交流电,供给电网或用户使用。为了保证光伏逆变器的正常运行和提高其性能,需要进行负载测试和性能评估。以下是进行负载测试和性能
    发表于 12-12 09:44

    如何评估adc的性能参数

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

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

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

    如何评估智能系统的性能

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

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

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

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

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