深度学习加速器基准测试方法和装置与流程

专利2022-06-29  98


本发明涉及基准测试技术领域,特别涉及一种深度学习加速器基准测试方法和装置。



背景技术:

随着以深度学习为代表的ai技术和应用的迅速发展,许多供应商会在平台或产品上集成专用的ai加速芯片/处理器或ip。相关硬件系统越来越多,如何公平和系统化的评估这些芯片性能,优化这些硬件成为一个研究的热点。

随着算法与应用的逐渐成熟,部署训练好的模型并完成推断任务变为市场需求热点,推断任务场景也为非常丰富,例如数据中心,自动驾驶、安防、手机、智能家居等领域,在市场技术路线尚未明确,产品良莠不齐的背景下,提出基于明确指标体系的基准测试评价体系可以客观反映ai芯片现状,促进行业的健康发展。

随着计算机体系结构的发展,仅通过查看其规格来比较各种计算机系统的性能就变得更加困难。因此,就需要开发相应的测试可以对不同体系结构进行比较,从而如何进行全面、高效的基准测试是亟待解决的技术问题。



技术实现要素:

有鉴于此,本申请提供一种深度学习加速器基准测试方法和装置,能够全面、准确地对深度学习加速器进行基准测试。

为解决上述技术问题,本申请的技术方案是这样实现的:

在一个实施例中,提供了一种深度学习加速器基准测试方法,所述方法包括:

根据待测加速器的部署位置和应用场景选择用于测试的网络模型;

获取测试数据,并对所述测试数据进行预处理;

配置基准测试环境组件,加载所述网络模型,以及预处理后的测试数据运行于所述待测加速器上;

获取测试结果,确定所述被测加速器的测试指标。

在另一个实施例中,提供了一种深度学习加速器基准测试装置,所述装置包括:选择单元、处理单元、测试单元、获取单元和确定单元;

所述选择单元,用于根据待测加速器的部署位置和应用场景选择用于测试的网络模型;

所述处理单元,用于获取测试数据,并对所述测试数据进行预处理;

所述测试单元,用于配置基准测试环境组件,加载所述选择单元选择的所述网络模型,以及所述处理单元预处理后的测试数据运行于所述待测加速器上;

所述获取单元,用于获取测试结果;

所述确定单元,用于根据所述获取单元获取的测试结果确定所述被测加速器的测试指标。

在另一个实施例中,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如所述深度学习加速器基准测试方法的步骤。

在另一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现所述深度学习加速器基准测试方法的步骤。

由上面的技术方案可见,上述实施例中通过选择模型、测试数据预处理,以及测试环境组件的配置,实现基准测试,并根据测试结果确定基准测试指标,能够全面、准确地对深度学习加速器进行基准测试。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例中深度学习加速器基本测试流程示意图;

图2为基准测试组件搭建数据流示意图;

图3为本申请实施例中基准测试硬件环境示意图;

图4为本申请实施例中基准测试指标体系示意图;

图5为本申请实施例中应用于上述技术的装置结构示意图;

图6为本发明实施例提供的电子设备的实体结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他步骤或单元。

下面以具体实施例对本发明的技术方案进行详细说明。下面几个具体实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

本申请实施例提供一种深度学习加速器基准测试方法,通过选择模型、测试数据预处理,以及测试环境组件的配置,实现基准测试,并根据测试结果确定基准测试指标,能够全面、准确地对深度学习加速器进行基准测试。

参见图1,图1为本申请实施例中深度学习加速器基本测试流程示意图。具体步骤为:

步骤101,根据待测加速器的部署位置和应用场景选择用于测试的网络模型。

部署位置可以为:云、边、端;

应用场景可以为:图像分类,目标检测,语义分割,超分辨率,人脸识别等。

据待测加速器的部署位置和应用场景选择用于测试的网络模型,包括:

根据待测加速器的部署位置和应用场景选择一个网络模型;

以部署位置为端为例:

如针对图像分类应用场景选择的网络模型可以为:mobilenet;

如针对目标检测应用场景选择的网络模型可以为:ssd;

如针对语义分割应用场景选择的网络模型可以为:vdsr;

如针对超分辨率应用场景选择的网络模型可以为:deeplabv3;

如针对人脸识别应用场景选择的网络模型可以为:inception-resnet。

在具体测试时,针对对应的部署位置和应用场景可以选择一个网络模型进行测试,也可以再增加网络模型,组成测试的网络模型集合,使用每个网络模型分别进行测试,以获得测试结果,并最终确定基准指标。

若增加网络模型,新增加的网络模型与已选择的网络模型之间满足模型差异度原则。

这里满足模型差异度原则,则满足两个模型之间的差异度大于预设值,如30%,但不限与此。

假设一个模型记为m,另一个模型记为计算这两个模型之间的差异度threthold的公式具体如下:

其中,mac为模型累计乘加运算量,inputsize为模型输入大小,modelsize为模型占用内存大小,accurancy为模型预设准确度,layer为模型层数,k1、k2、k3、k4、k5为各参数对应的权重值,5个权重值的和为1。

步骤102,获取测试数据,并对所述测试数据进行预处理。

本步骤中对所述测试数据进行预处理,包括:

对所述测试数据进行缩放处理,以及标准化处理,以使处理后的测试数据满足选择的网络模型的要求。

下面以图像测试数据为例给出一种图像预处理过程,但不限于下述预处理过程:

首先,按照网络模型的输入要求将测试数据中的每帧图像的尺寸进行缩放:

如记测试数据共有n帧图像,ii表示第i帧图像,按模型要求输入尺寸高度height,宽度width,将测试数据缩放后的图像记为i'i,i'i=createscaledbitmap(ii,height,width),其中createscaledbitmap为java提供的缩放函数;

对缩放后图像进行三通道z-score标准化,基准测试输入图像序列记为image,其中j为rgb通道信息,j=1,2,3,k=1,…,height,l=1,…,width,

步骤103,配置基准测试环境组件,加载所述网络模型,以及预处理后的测试数据运行于所述待测加速器上。

在选择好网络模型后,配置基准测试环境组件,完成运行环境搭建,包括确定系统环境,处理器硬件加速方式,模型实现格式,完成模型转换,包含剪枝、量化等工作。

在搭建环境时,可以根据被测加速器的型号确定框架调用待测加速器的方式,也可以预先搭建多种方式,具体测试时根据被测加速器的型号确定使用哪种方式测试。

使用选择的网络模型(选择的网络模型默认为已训练完成的模型,如果不存在已训练完成的可以先进行训练再使用训练后的网络模型进行测试)调用加速器方式,具体如下:

第一种、通过深度学习推断框架调用;

如框架(ncnn) 被测加速器cpu(手机端,基于arm架构)。

第二种、通过自有架构加速调用;

自有架构(hiai) 被测加速器npu(海思麒麟980板卡);

snpe 被测加速器dsp(高通855/865手机);

tensorrt 被测加速器gpu(英伟达t4)。

第三种、通过androidnn调用。

tflite框架基于androidnnapi 被测加速器cpu(android系统手机,如搭载mtk芯片的手机);

参见图2,图2为基准测试组件搭建数据流示意图。图2中给出了三种调用被测加速器的方式,其中,①表示第一种调用方式,②表示第二种调用方式,③表示第三种调用方式。

如被测加速器为cpu时可以选择第一或第三种调用方式,被测加速器为gpu时,可以选择第二或第三种调用方式,被测加速器为dsp或npu时,可以选择第二或第三种调用方式,被测加速器为nna时,可以选择第二种调用方式,被测加速器为dpu时,可以选择第二种调用方式。

在测试时,根据所述待测加速器的型号确定调用所述待测加速器的方式;

在测试时加载所述网络模型,以及预处理后的测试数据通过确定的方式调用所述待测试加速器。

步骤104,获取测试结果,确定所述被测加速器的测试指标。

在具体测试时,需要获取测试时间,输入的图像的帧数,测试准确度以及功耗,针对功耗的获取需要增加功耗测试工具来获取对应的功耗,如功耗测试仪表,参见图3,图3为本申请实施例中基准测试硬件环境示意图。图3中给出了测试装置与功耗测试工具,以及被测设备(deviceundertest,dut)的连接示意图。被测加速器搭载在被测设备上,被测设备如手机、板卡、服务器等。

本申请实施例中根据测试结果确定被测加速器的测试指标包括下述之一或任意组合:

时延、吞吐量、精度损失值、功耗、算力能耗比。

其中,

确定所述时延,包括:在每次以单帧方式输入图像时,使用第i个所述网络模型测试所使用的测试时间t1i,以及输入的图像的总帧数n1i,则确定时延metric1为:

确定所述吞吐量,包括:在每次以b2i=2j(j=0,1,2,3…7)个帧方式输入图像时,分别记录使用第i个所述网络模型测试所使用的测试时间t2ij,以及输入的图像的总帧数n2ij,确定针对第i个网络模型每次输入2j个帧时的吞吐量throughput2ij=n2ij×b2ij/t2ij;将t2ij/n2ij<7s的吞吐量中值最大的吞吐量作为使用第i个所述网络模型测试时确定的吞吐量throughput2i(针对一个网络模型有8种帧输入方式,则针对每种方式可以获得一个吞吐量,t2ij/n2ij<7s时对应的吞吐量是要考虑的吞吐量,选择该前提下的最大吞吐量),确定被测加速器的吞吐量metric2为:

确定所述精度损失值,包括:在使用第i个所述网络模型测试时,获取第i个所述网络模型测试准确度则确定精度损失值metric3为:其中,accurancyi为第i个所述网络模型的预设准确度;

确定所述功耗,包括:在使用第i个所述网络模型测试时,获取所消耗的能源wi,以及输入图像的总帧数n4i,则确定所述功耗metric4为:wi的单位为瓦;

确定所述算力能耗比,包括:确定所述算力能耗比metric5为:

其中,t4i为使用第i个所述网络模型测试时输入图像总帧数,num为网络模型的个数。

针对上述五个测试指标还可以通过指标体系示意图显示,能够明确直观给出各被测处理器的各指标的具体情况。

参见图4,图4为本申请实施例中基准测试指标体系示意图。图4中以中心点为起点,各指标的值越远离中心点标识被测处理器的对应能力越强。还可以综合评价被测处理的性能,即五个指标值的顺序连线,所围起来的面积越大,则说明被测处理器的性能越好。如图4中,处理器1的面积(通过虚线所围面积)大于处理器2的面积(通过实现所围面积),则处理器1的性能优于处理器2的性能。

本申请实施例基于在计算机架构演进中扮演重要角色的一种客观的评价方法——基准测试,针对深度学习处理器在架构设计与实现方面的特殊性,提出端到端的深度学习处理器评测方法,基于特定场景的基准测试工具,可获得处理器在深度学习任务中的五大维度性能指标。通过模型关键信息分析模型相似度,设定阈值确定模型池,被测模型可在包含算子层评价(微观测试)的同时,反映基于指定应用场景(宏观测试)的处理器性能,基准测试工具输出的五类指标可客观综合且全面反映深度学习处理器/加速器/ip的水平。本申请实施例提供的获得深度学习处理器的在实际部署时的性能评测方法,为人工智能芯片基准测试系统开发和评测平台建设提供有价值的思路和建议,具有广阔的市场前景与应用价值。

基于同样的发明构思,本申请实施例中还提供一种深度学习加速器基准测试装置。参见图5,图5为本申请实施例中应用于上述技术的装置结构示意图。所述装置包括:选择单元501、处理单元502、测试单元503、获取单元504和确定单元505;

选择单元501,用于根据待测加速器的部署位置和应用场景选择用于测试的网络模型;

处理单元502,用于获取测试数据,并对所述测试数据进行预处理;

测试单元503,用于配置基准测试环境组件,加载选择单元501选择的所述网络模型,以及处理单元502预处理后的测试数据运行于所述待测加速器上;

获取单元504,用于获取测试结果;

确定单元505,用于根据获取单元504获取的测试结果确定所述被测加速器的测试指标。

优选地,

选择单元501,具体用于根据待测加速器的部署位置和应用场景选择一个基准网络模型;若增加网络模型,新增加的网络模型与已选择的网络模型之间满足模型差异度原则。

优选地,

处理单元502,具体用于对所述测试数据进行缩放处理,以及标准化处理,以使处理后的测试数据满足选择的网络模型的要求。

测试单元503,具体用于根据所述待测加速器的型号确定调用所述待测加速器的方式;加载所述网络模型,以及预处理后的测试数据通过确定的方式调用所述待测试加速器。

其中,所述方式为:

通过深度学习推断框架调用;

或,通过自有架构加速调用;

或,通过androidnn调用。

优选地,所述测试指标包括下述之一或任意组合:

时延、吞吐量、精度损失值、功耗、算力能耗比。

上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。

在另一个实施例中,还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述深度学习加速器基准测试方法的步骤。

在另一个实施例中,还提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被处理器执行时可实现所述深度学习加速器基准测试方法中的步骤。

图6为本发明实施例提供的电子设备的实体结构示意图。如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(communicationsinterface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行如下方法:

根据待测加速器的部署位置和应用场景选择用于测试的网络模型;

获取测试数据,并对所述测试数据进行预处理;

配置基准测试环境组件,加载所述网络模型,以及预处理后的测试数据运行于所述待测加速器上;

获取测试结果,确定所述被测加速器的测试指标。

此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。


技术特征:

1.一种深度学习加速器基准测试方法,其特征在于,所述方法包括:

根据待测加速器的部署位置和应用场景选择用于测试的网络模型;

获取测试数据,并对所述测试数据进行预处理;

配置基准测试环境组件,加载所述网络模型,以及预处理后的测试数据运行于所述待测加速器上;

获取测试结果,确定所述被测加速器的测试指标。

2.根据权利要求1所述的方法,其特征在于,所述根据待测加速器的部署位置和应用场景选择用于测试的网络模型,包括:

根据待测加速器的部署位置和应用场景选择一个网络模型;

若增加网络模型,新增加的网络模型与已选择的网络模型之间满足模型差异度原则。

3.根据权利要求1所述的方法,其特征在于,所述对所述测试数据进行预处理,包括:

对所述测试数据进行缩放处理,以及标准化处理,以使处理后的测试数据满足选择的网络模型的要求。

4.根据权利要求1所述的方法,其特征在于,所述加载所述网络模型,以及预处理后的测试数据运行于所述待测加速器上,包括:

根据所述待测加速器的型号确定调用所述待测加速器的方式;

加载所述网络模型,以及预处理后的测试数据通过确定的方式调用所述待测试加速器。

5.根据权利要求4所述的方法,其特征在于,所述方式为:

通过深度学习推断框架调用;

或,通过自有架构加速调用;

或,通过androidnn调用。

6.根据权利要求1所述的方法,其特征在于,所述测试指标包括下述之一或任意组合:

时延、吞吐量、精度损失值、功耗、算力能耗比。

7.根据权利要求6所述的方法,其特征在于,

确定所述时延,包括:在每次以单帧方式输入图像时,使用第i个所述网络模型测试所使用的测试时间t1i,以及输入的图像的总帧数n1i,则确定时延metric1为:

确定所述吞吐量,包括:在每次以b2i=2j个帧方式输入图像时,分别记录使用第i个所述网络模型测试所使用的测试时间t2ij,以及输入的图像的总帧数n2ij,确定针对第i个网络模型每次输入2j个帧时的吞吐量throughput2ij=n2ij×b2ij/t2ij;将t2ij/n2ij<7s的吞吐量中值最大的吞吐量作为使用第i个所述网络模型测试时确定的吞吐量throughput2i,确定被测加速器的吞吐量metric2为:其中,j为不小于0且不大于7的整数;

确定所述精度损失值,包括:在使用第i个所述网络模型测试时,获取第i个所述网络模型测试准确度accurancyireal,则确定精度损失值metric3为:其中,accurancyi为第i个所述网络模型的预设准确度;

确定所述功耗,包括:在使用第i个所述网络模型测试时,获取所消耗的能源wi,以及输入图像的总帧数n4i,则确定所述功耗metric4为:

确定所述算力能耗比,包括:确定所述算力能耗比metric5为:

其中,t4i为使用第i个所述网络模型测试时输入图像总帧数,num为网络模型的个数。

8.一种深度学习加速器基准测试装置,其特征在于,所述装置包括:选择单元、处理单元、测试单元、获取单元和确定单元;

所述选择单元,用于根据待测加速器的部署位置和应用场景选择用于测试的网络模型;

所述处理单元,用于获取测试数据,并对所述测试数据进行预处理;

所述测试单元,用于配置基准测试环境组件,加载所述选择单元选择的所述网络模型,以及所述处理单元预处理后的测试数据运行于所述待测加速器上;

所述获取单元,用于获取测试结果;

所述确定单元,用于根据所述获取单元获取的测试结果确定所述被测加速器的测试指标。

9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-7任一项所述的方法。

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-7任一项所述的方法。

技术总结
本申请提供了一种深度学习加速器基准测试方法和装置,所述方法包括:根据待测加速器的部署位置和应用场景选择用于测试的网络模型;获取测试数据,并对所述测试数据进行预处理;配置基准测试环境组件,加载所述网络模型,以及预处理后的测试数据运行于所述待测加速器上;获取测试结果,确定所述被测加速器的测试指标。该方法能够全面、准确地对深度学习加速器进行基准测试。

技术研发人员:张蔚敏;孙明俊
受保护的技术使用者:中国信息通信研究院
技术研发日:2020.01.08
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-52503.html

最新回复(0)