CN116611476A - 性能数据预测方法、性能数据预测装置、电子设备及介质 - Google Patents

性能数据预测方法、性能数据预测装置、电子设备及介质 Download PDF

Info

Publication number
CN116611476A
CN116611476A CN202310591518.6A CN202310591518A CN116611476A CN 116611476 A CN116611476 A CN 116611476A CN 202310591518 A CN202310591518 A CN 202310591518A CN 116611476 A CN116611476 A CN 116611476A
Authority
CN
China
Prior art keywords
model
terminal
data
time
operator
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310591518.6A
Other languages
English (en)
Inventor
陈茜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Vivo Mobile Communication Co Ltd
Original Assignee
Vivo Mobile Communication Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Vivo Mobile Communication Co Ltd filed Critical Vivo Mobile Communication Co Ltd
Priority to CN202310591518.6A priority Critical patent/CN116611476A/zh
Publication of CN116611476A publication Critical patent/CN116611476A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请公开了一种性能数据预测方法、性能数据预测装置、电子设备及介质,属于机器学习技术领域。该方法包括:基于模型的模型算子,确定所述模型算子的配置参数和完成所述模型算子的计算所需要的至少三个计算步骤;基于所述配置参数、所述至少三个计算步骤和终端的处理器架构参数,得到在所述终端上运行所述模型算子的耗时数据;基于在所述终端上运行所述模型算子的耗时数据,预测在所述终端上运行所述模型的性能数据。

Description

性能数据预测方法、性能数据预测装置、电子设备及介质
技术领域
本申请属于机器学习技术领域,具体涉及一种性能数据预测方法、性能数据预测装置、电子设备及介质。
背景技术
深度神经网络算法模型一般是在云端通过大量的数据训练得到。如果在终端侧使用深度神经网络算法模型实现某些功能,需要将模型部署在终端侧执行。而将云端模型部署到终端侧上要经过模型固化、模型转换和推理支持等中间过程,才能实际运行在终端侧,并且只有在模型运行后才可以得到模型在某个具体的终端设备上运行的性能数据。当模型在终端设备上的实际运行性能无法达到期望目标,就需要重新调整模型结构进行云端训练,继而重复上述部署和实测的过程。
相关技术中,终端侧模型的性能主要是通过实际测试获得,整个过程耗时长,需要较长的时间和大量的人力成本;其次是统计其他已经在终端侧部署的相似模型的推理耗时,通过类比分析,估算出当前模型大概的推理耗时,但这种估算方式偏差较大,并且无法在全部终端侧平台上获得较为贴近的性能数据。
发明内容
本申请实施例的目的是提供一种性能数据预测方法、性能数据预测装置、电子设备及介质,能够解决深度神经网络算法模型在终端设备运行上的性能数据获取困难的问题。
第一方面,本申请实施例提供了一种性能数据预测方法,该方法包括:
基于模型的模型算子,确定所述模型算子的配置参数和完成所述模型算子的计算所需要的至少三个计算步骤;
基于所述配置参数、所述至少三个计算步骤和终端的处理器架构参数,得到在所述终端上运行所述模型算子的耗时数据;
基于在所述终端上运行所述模型算子的耗时数据,预测在所述终端上运行所述模型的性能数据。
第二方面,本申请实施例提供了一种性能数据预测装置,该装置包括:
第一确定模块,用于基于模型的模型算子,确定所述模型算子的配置参数和完成所述模型算子的计算所需要的至少三个计算步骤;
处理模块,用于基于所述配置参数、所述至少三个计算步骤和终端的处理器架构参数,得到在所述终端上运行所述模型算子的耗时数据;
预测模块,用于基于在所述终端上运行所述模型算子的耗时数据,预测在所述终端上运行所述模型的性能数据。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。
第五方面,本申请实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法。
第六方面,本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如第一方面所述的方法。
在本申请实施例中,通过获取模型算子的配置参数、完成模型算子的计算所需要的至少三个计算步骤和终端的处理器架构参数,能够更全面拟合模型算子在终端侧运行的性能数据,准确率高,通用性强,从而可以预测在终端上运行模型的性能数据,提高模型性能预测的准确率,并且无需进行模型实测来获取实际性能数据,大大降低模型运行性能评估的难度,提高模型性能评估效率,进而可以提升了模型开发效率。
附图说明
图1是本申请实施例提供的性能数据预测方法的流程示意图之一;
图2是本申请实施例提供的性能数据预测方法的模型算子分解示意图之一;
图3是本申请实施例提供的性能数据预测方法的模型算子分解示意图之二;
图4是本申请实施例提供的性能数据预测方法的计算方式对应的耗时数据关系示意图;
图5是本申请实施例提供的性能数据预测方法的计算方式对应的耗时数据关系示意图;
图6是本申请实施例提供的性能数据预测方法的流程示意图之二;
图7是本申请实施例提供的性能数据预测装置的结构示意图;
图8是本申请实施例提供的电子设备的结构示意图;
图9是本申请实施例提供的电子设备的硬件示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的性能数据预测方法、性能数据预测装置、电子设备及介质进行详细地说明。
其中,性能数据预测方法可应用于终端。
该终端包括但不限于具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的移动电话或平板电脑等其它便携式通信设备。还应当理解的是,在某些实施例中,该终端可以不是便携式通信设备,而是具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的台式计算机。
以下各个实施例中,描述了包括显示器和触摸敏感表面的终端。然而,应当理解的是,终端可以包括诸如物理键盘、鼠标和控制杆的一个或多个其它物理用户接口设备。
图1是本申请实施例提供的性能数据预测方法的流程示意图之一。
如图1所示,该性能数据预测方法包括:步骤110、步骤120和步骤130。
步骤110、基于模型的模型算子,确定模型算子的配置参数和完成模型算子的计算所需要的至少三个计算步骤;
在实际执行中,本申请提供的模型为已训练完成且需要进行性能预测的深度神经网络算法模型。
相关技术中,深度神经网络算法模型的性能数据是直接将模型部署在终端上,并进行性能实测后获取。性能实测的方法固然可行,但测试时间长且成本高,并且终端侧设备的芯片种类繁多,例如:手机、平板电脑或智能手表等设备的中央处理器(CentralProcessing Unit,CPU)芯片差异性较大,或者不同系列的设备CPU芯片也不尽相同。因此,深度神经网络算法模型在不同终端侧设备上的实际运行性能也存在差异。这些固有差异给如何确定深度神经网络算法模型在哪些终端设备上运行可以达到预期目标,带来了极大的困难。
在步骤110中,对训练好的模型进行模型算子分解,将模型拆解成多个需要在终端上运行的得到模型算子。其中,终端是可以部署模型的任意终端侧设备,包括但不限于手机、平板电脑、电脑、相机、可穿戴设备等。
在得到模型的模型算子之后,可以记录每个模型算子的配置参数。
其中,模型算子的配置参数可以包括输入维度信息和输出维度信息。如果模型算子中包含计算权重参数,则配置参数中还需要记录计算权重参数的维度信息。
需要说明的是,模型算子为深度神经网络算法模型的基础网络计算单元,模型算子例如包括:卷积(Convolution,Conv)算子、自注意力(self-attention)算子、反卷积(Deconvolution,Deconv)算子、全连接(Full Connection,FC)算子、激活函数(LinearRectification Function,ReLU)算子、池化(pooling)算子、深度可分离卷积(DepthwiseConvolution,DepthwiseConv)算子、批量归一化(Batch Normlization,BatchNorm)算子、加法(Addition,Add)算子、偏差加法(Bias Addition,BiasAdd)算子等。
以图2为例来说明本申请中提供的模型的模型算子。
图2示例了部分固化后的模型。其中包含Conv2D算子、BiasAdd算子、ReLU6算子、DepthwiseConv2D算子、BatchNorm算子和Add算子共6种类型的算子。其中,Conv2D指的是二维卷积,DepthwiseConv2D指的是二维深度可分离卷积,ReLU6为限制最大输出为6的激活函数。
在实际执行中,模型在被转换成可运行于终端上的模型之前,可以对模型的模型算子进行算子融合,例如:Conv2D和BiasAdd可以合并为一个Conv2D,BatchNorm可以合并到DepthwiseConv2D中,因此,该部分模型进行算子融合后的结构如图3所示。其中,算子融合的方式可以根据终端的实际运行情况进行选择和调整,在此不作具体限定。
图3中的部分模型经过算子分解,可以生成如表1所示的终端侧算子分解表。终端侧算子分解表包括不同类型的模型算子及其对应的配置参数。
表1中的Weight Shape(权重形状)直接从模型算子的计算权重参数中读取,模型算子的Input Shape(输入形状)和Output Shape(输出形状)可以根据模型推理的InputShape(输入形状)和算子计算规则推理获得。其中,相邻的两个算子,后一个算子的InputShape(输入形状)和其前面相邻算子的Output Shape(输出形状)相同。
表1
序号 算子类型 Input Shape Output Shape Weight Shape Activate
1 Conv1x1 1 96 56 56 1 24 56 56 24 96 1 1 No
2 Conv1x1 1 24 56 56 1 144 56 56 144 24 1 1 ReLU6
3 DepthwiseConv 1 144 56 56 1 144 56 56 1 144 3 3 ReLU6
4 Conv1x1 1 144 56 56 1 24 56 56 24 144 1 1 No
5 Add 1 24 56 56 1 24 56 56 No No
可选地,可以采用NCHW或NHWC格式表示Input Shape、Output Shape和WeightShape。其中,N(Number)表示一个batch(批次)的图像数量,H(Height)表示图像在竖直方向上的像素数,W(Width)表示图像在水平方向上的像素数,C(channel)表示通道数,例如:黑白图像的通道数C=1,而RGB彩色图像的通道数C=3。
在一些实施例中,可以将Input Shape记为In_N、In_C、In_H、In_W,即Input Shape=[In_N,In_C,In_H,In_W];可以将Weight Shape记为Ker_N、Ker_C、Ker_H、Ker_W,即Weight Shape=[Ker_N,Ker_C,Ker_H,Ker_W]。
其中,Conv算子的Output Shape计算规则为:Out_N=In_N、Out_C=Ker_N、Out_H=In_H、Out_W=In_W。Conv算子按照如下参数执行:pads=0、strdies=1、dilations=1。
DepthwiseConv算子的Output Shape计算规则为:Out_N=In_N、Out_C=Ker_C、Out_H=In_H、Out_W=In_W;DepthwiseConv算子按照如下参数执行:pads=1、strdies=1、dilations=1。
Add算子的Output Shape计算规则为:Out_N=In_N、Out_C=In_C、Out_H=In_H、Out_W=In_W。
需要说明的是,pad用于指示边界填充,在卷积计算过程中,为了允许边界上的数据也能作为中心参与卷积运算,将边界假装延伸。pads=0时,不进行填充,原图与卷积核进行卷积;pads=1时,在原图四边填充一行或一列。stride用于指示步幅,指的是卷积核两次卷积左上角点之间的距离,可以理解为卷积核每隔几个像素进行一次卷积操作。dilation用于指示扩充卷积,指的是卷积核元素之间的距离。
以表1中的序号1算子为例,Conv1x1算子的Input Shape为[1 96 56 56],按照上述规则推理,即可得到表中各个算子的Input Shape、Output Shape和Weight Shape等配置参数信息。
在实际执行中,基于模型的模型算子,还可以确定模型算子对应的计算方式,计算方式用于表示模型算子的计算过程。在本申请中,可以将模型算子的计算过程拆解成更细粒度的计算步骤。
可以理解的是,每种模型算子都有各自独特的计算方式,且每种计算方式可以包括至少三个计算步骤,最少包括的三个步骤为数据读取、数据计算和数据传输。
例如:模型算子的运算为:加法计算3+4。其中,“3”和“4”是数据,“+”是操作。该模型算子包括的三个步骤为:
1、数据读取,是指把“3”和“4”两个数据从存储单元读取到最终用于计算的寄存器中;
2、数据计算,是指对读取数据的输入,并进行相对应的计算操作,这里是进行“+”操作;计算操作可以包括多种线性代数运算,通常是矩阵的运算,例如矩阵乘法运算、矩阵加法运算或矩阵点积运算等。
3、数据存储,是指将计算完成的结果7,从计算的寄存器中保存到存储单元中。
所有计算类型的模型算子均会经过上述三个步骤,而不同类型的模型算子的上述步骤的重复次数以及计算操作会有所不同。
在本步骤中,可以对模型算子进行计算分解,从而确定每种模型算子完成模型算子的计算所需要的至少三个计算步骤。例如:完成该Conv1x1算子的计算需要三步:数据读取、数据计算和数据存储。
其中,数据读取需要读入该模型算子的输入(input)数据和权重(Weight)数据;数据计算是按照Conv计算规则对输入数据和权重数据做对应的矩阵乘法和加法运算,即Conv1x1算子是大批量数据经过“+”操作和“×”操作得到结果的计算过程;数据存储是将计算得到的数据存入内存单元,当所有数据计算完成,即表示该模型算子完成计算。
步骤120、基于配置参数、至少三个计算步骤和终端的处理器架构参数,得到在终端上运行所述模型算子的耗时数据。
在实际执行中,模型可以运行于不同的终端侧设备上,不同的终端侧设备的处理器架构参数可以不同或相同。
在本步骤中,可以对模型运行的终端的处理器架构参数进行分析。其中,处理器可以是CPU等。
下面以终端为手机或平板电脑等终端设备为例来说明本步骤。
手机或平板电脑使用的CPU架构为Cortex-A系列,影响到终端计算深度神经网络算法模型的处理器架构参数可以包括:发射宽度、按序发射(in-order issue)、无序发射(out-of-order issue)、流水线深度、缓存行(cache line)、缓存大小(cache size)、CPU主频、内存大小(DDR size)、内存频率(DDR频率)等。
其中,DDR为双倍速率同步动态随机存储器(Double Data Rate SDRAM,DDR),是内存的其中一种。
缓存cache可以包括一级缓存L1 cache、二级缓存L2 cache和三级缓存L3cache。
L1 cache是CPU第一层高速缓存,分为数据缓存和指令缓存。
L2 cache是CPU的第二层高速缓存,分内部和外部两种芯片。
L3 cache可以进一步降低内存延迟,同时提升大数据量计算时处理器的性能。
在获取终端的处理器架构参数之后,可以通过计算分析与测试获取各种处理器架构上相关参数的具体数值。
以SM8350平台的大核为例,其处理器架构为Cortex-A78,通过CPU底层指令、及编写测试代码,获得如表2所示的处理器架构参数信息。
表2
其中,GFLOPs是每秒10亿次的浮点运算数(Giga Floating-point OperationsPer Second,GFLOPs),常作为GPU性能参数,但不一定代表GPU的实际表现,1GFlops=1000MFlops。
在本步骤中,在确定模型算子的配置参数、模型算子的至少三个计算步骤和终端的处理器架构参数之后,根据上述信息,可以得到每个模型算子的耗时数据。
可以理解的是,模型在终端上的耗时数据决定了模型能否在目标设备上高效的运行。
在一些实施例中,步骤120可以包括:
基于配置参数,确定模型算子的计算量和访存量;
基于模型算子的计算量和访存量、至少三个计算步骤和处理器架构参数,确定在终端上执行每个计算步骤的耗时数据;
基于每个计算步骤的耗时数据,确定在终端上运行模型算子的耗时数据。
在实际执行中,通常使用计算量与访存量来评估模型推理速度。其中,计算量和访存量可以根据模型算子的配置参数确定。
其中,计算量是指运行完模型所需的计算次数,反映了模型对硬件计算单元的需求。访存量是指模型计算时所需访问存储单元的字节大小,反映了模型对存储单元带宽的需求。访存量一般用Bytes(或者KB/MB/GB)来表示,即模型计算到底需要存/取多少Bytes的数据。
可以理解的是,每种模型算子的计算量的计算方法各不一致,计算量计算方法可以根据模型算子的类型和模型算子的配置参数确定,在此不作具体限定。
以表1中的序号1算子为例,Conv1x1算子的输入维度信息记为In_N、In_C、In_H、In_W,分别对应Input shape的1 96 56 56四个值,输出维度信息记为Out_N、Out_C、Out_H、Out_W,分别对应Output shape的1 24 56 56四个值。
Conv1x1算子的计算量为:
Cal=In_C*Out_N*Out_C*Out_H*Out_W*2*sizeof(type)。
Conv1x1算子的访存量包括:
input数据加载量:Di=In_N*In_C*In_H*In_W*Out_C*sizeof(type);
weight数据加载量:Dw=In_C*Out_C*Out_H*Out_W*sizeof(type);
output数据存储量:Do=Out_N*Out_C*Out_H*Out_W*sizeof(type)。
以表1中的序号3算子为例,DepthwiseConv算子的计算量为:
Cal=Ker_H*Ker_W*Out_N*Out_C*Out_H*Out_W*2*sizeof(type)。
DepthwiseConv算子的访存量包括:
input数据加载量:
Di=In_N*In_C*In_H*In_W*Ker_H*Ker_W*sizeof(type);
weight数据加载量:
Dw=Out_N*Out_C*Out_H*Out_W*Ker_H*Ker_W*sizeof(type);
output数据存储量:
Do=Out_N*Out_C*Out_H*Out_W*sizeof(type)。
以表1中的序号5算子为例,Add算子的计算量为:
Cal=In_N*In_C*In_H*In_W*sizeof(type);
Add算子的访存量包括:
input数据加载量:Di=In_N*In_C*In_H*In_W*2*sizeof(type);
output数据存储量:Do=Out_N*Out_C*Out_H*Out_W*sizeof(type)。
结合模型算子的计算量和访存量、完成模型算子计算的至少三个计算步骤和处理器架构参数,可以确定在终端上执行每个计算步骤的耗时数据。
以表1中的序号1算子为例,Conv1x1算子的计算量和访存量已在上述实施例中说明。再结合每种模型算子对应的至少三个计算步骤和处理器架构参数对每个计算步骤的耗时数据进行计算说明。
Conv1x1算子对应的每个计算步骤的耗时数据所对应的耗时数据可以包括:input数据读取耗时、weight数据读取耗时、output数据存储耗时和数据计算耗时。
下面对Conv1x1算子对应的每个计算步骤的耗时数据所对应的耗时数据计算说明如下:
(1)input数据读取耗时:
Ti=(DDR数据量/DDRr带宽+L1数据量/L1带宽+L2数据量/L2带宽+L3数据量/L3带宽)/N
(2)weight数据读取耗时:
Tw=(DDR数据量/DDRr带宽+L1数据量/L1带宽+L2数据量/L2带宽+L3数据量/L3带宽)/M
其中,根据L1 cache、L2 cache和L3 cache的缓存大小,将input数据加载量Di或weight数据加载量Dw分配到不同的缓存级别上,从而得到DDR数据量、L1数据量、L2数据量和L3数据量的值;N表示input数据加载一次之后,重复利用与计算的次数;M表示weight数据加载一次之后,重复利用与计算的次数。
在上述实施例中,可以通过计算分析与测试获取的处理器架构参数的具体数值。以表2的处理器架构参数为例,将表2中得到的DDRr带宽(DDR读带宽)、L1带宽、L2带宽和L3带宽的值分别代入公式,计算得到input数据加载耗时Ti和weight数据加载耗时Tw。
(3)output数据存储耗时:
To=DDR数据量/DDRw带宽
将output数据存储量Do代入DDR数据量,并代入表2中的DDRw带宽(DDR写带宽)数据,计算得出output数据的存储耗时To。
(4)数据计算耗时:
Tcal=Cal/FPeak
将Conv1x1算子的计算量和表2中的CPU浮点计算峰值FPeak代入公式,计算得到Conv1x1算子的运算耗时Tcal。
在确定每个模型算子在终端上执行每个计算步骤的耗时数据后,可以对上述耗时数据进行整合,从而可以得到每个模型算子的耗时数据,并能预测该模型算子在表2对应的处理器上的运行性能。
根据本申请实施例提供的性能数据预测方法,通过结合模型算子的计算量和访存量、完成模型算子计算的至少三个计算步骤和处理器架构参数,确定在终端上执行每个计算步骤的耗时数据,进而可以整合上述耗时数据确定模型算子的耗时数据,可以提高模型性能预测准确率。
可选地,可以将每个计算步骤对应的耗时数据进行累加得到模型算子的耗时数据,也可以根据终端的处理器的指令执行时序,得到模型算子的耗时数据。
在一些实施例中,基于每个计算步骤的耗时数据,确定在终端上运行模型算子的耗时数据,包括:
根据终端的处理器的指令执行时序,对每个计算步骤对应的耗时数据进行分析,确定在终端上运行所述模型算子的耗时数据。
在实际执行中,终端的处理器硬件具有底层指令并发的设计特点。上述模型算子的耗时数据可以不是对每个计算步骤对应的耗时数据完全串行简单相加得到,通过处理器底层汇编代码的排列,确定终端的处理器的指令执行时序。按照指令执行时序对每个计算步骤对应的耗时数据进行分析,可以确定每个计算步骤对应的耗时数据是否可以隐藏在其他没有依赖关系的耗时数据中,进而可以得到更为精确的模型算子的耗时数据。
在终端的处理器中,数据(乘加)计算MLA(Multiply Accumulate,MLA)、数据加载Data Load和数据存储Data Store是并行的,即某一部分的耗时可以隐藏在其他没有依赖关系的耗时中。如图4所示,数据加载Data Load和数据存储Data Store的耗时隐藏在数据(乘加)计算MLA的耗时中。如图5所示,数据(乘加)计算MLA和数据存储Data Store的耗时隐藏在数据(乘加)计算数据加载DataLoad的耗时中。
以表1中的序号1算子为例,Conv1x1算子经分析在其数据格式为float32的情况下,Conv1x1算子的数据计算耗时大于数据加载耗时和数据存储耗时,因此,经拆分估算,Conv1x1算子的耗时数据为Tcal。
以表1中的序号3算子为例,DepthwiseConv算子的input数据读取耗时、weight数据读取耗时和output数据存储耗时与Conv1x1算子的计算过程相同,代入计算并经过处理器架构的并发性分析估算,该DepthwiseConv算子的耗时数据为Tcal。
以表1中的序号5算子为例,Add算子的input数据读取耗时和output数据存储耗时代入计算,并经过处理器架构的并发性分析估算,该Add算子的耗时数据为Ti。
根据本申请实施例提供的性能数据预测方法,通过按照指令执行时序对每个计算步骤对应的耗时数据进行分析,可以得到更精确的模型算子的耗时数据,进而可以提高模型性能预测结果的精确度。
步骤130、基于在终端上运行模型算子的耗时数据,预测在终端上运行模型的性能数据。
在实际执行中,可以基于在终端上运行模型算子的耗时数据,获得模型的预测耗时结果,进而获得在终端上运行模型的性能数据。
可以将多个模型算子中每个模型算子的耗时数据相加,得到耗时数据的总和作为模型的预测耗时结果,即为在终端上运行模型的性能数据。
在一些实施例中,步骤140可以包括:
根据模型算子之间的拓扑关系,对在终端上运行模型算子的耗时数据进行计算,得到计算结果;
基于计算结果,预测在终端上运行模型的性能数据。
在上述实施例中,已经对要模型做了算子分解,可以确定模型算子以及模型算子之间的拓扑关系。基于模型算子之间的拓扑关系,可以确定模型算子的数据结构。数据结构包括串行结构或并行结构。
如图2至图3所示,可以看出分解出来的模型算子是前后输入输出有依赖的串行结构,可以将分解出来的全部模型算子对应的每个计算步骤所对应的耗时数据计算出来,再进行串行相加,即可得到模型整体在终端上运行的性能数据,完成在终端上运行模型的性能数据的预测。
同理,如果要预测模型在其他终端侧设备上的运行性能,只需要将处理器架构参数和处理器相关参数信息替换为其他终端侧设备即可。
在实际执行中,终端侧常见的CPU、图像处理器(Graphics Processing Unit,GPU)、数字信号处理器(Digital Signal Processing,DSP)等器件在数据读取及数据计算方面有一定的相似性,可以类比CPU的分析方法,通过拆解并分析GPU和DSP的基础计算指令,来预测深度神经网络算法模型在不同硬件上的性能数据。
根据本申请实施例提供的性能数据预测方法,通过确定模型算子之间的拓扑关系,确定模型算子的数据结构,可以实现基于数据结构对在终端上运行模型算子的耗时数据进行计算,得到计算结果,实现预测在终端上运行模型的性能数据,从而提升模型性能预测的精确度。
在一些实施例中,深度神经网络算法模型在终端侧部署的另一个重要指标是运行功耗,该指标同样可以复用本申请提供的性能数据预测方法,通过硬件运行的单个指令功耗数据,和模型算子计算原理分解等步骤,预估得到一个较为精确的值。
根据本申请实施例提供的性能数据预测方法,通过获取模型算子的配置参数、完成模型算子的计算所需要的至少三个计算步骤和终端的处理器架构参数,能够更全面拟合模型算子在终端侧运行的性能数据,准确率高,通用性强,从而可以预测在终端上运行模型的性能数据,提高模型性能预测的准确率,并且无需进行模型实测来获取实际性能数据,大大降低模型运行性能评估的难度,提高模型性能评估效率,进而可以提升了模型开发效率。
本申请可以提供一种终端侧CPU深度神经网络算法性能数据预测方法,可以解决终端侧深度神经网络算法模型落地评估困难的问题,从计算原理出发,分解计算的最小单位,再将最小计算单位耗时整合到整体模型计算。基于终端侧CPU硬件底层计算指令运行耗时,和对深度神经网络算法模型推理的基本运算单元拆解,在云端深度神经网络算法模型往终端侧迁移的前期,实现对即将运行在终端侧CPU硬件上的深度神经网络算法模型的性能预测,准确率高,通用性强。
图6是本申请实施例提供的性能数据预测方法的流程示意图之二。
如图6所示,可以通过模型算子分解和计算分解来预测模型在不同平台上的运行耗时,替换常规终端侧开发中模型性能实测的过程。
该性能数据预测方法包括:步骤601至步骤606。
步骤601、模型算子分解。将云端训练好的模型拆解成一个个需要在终端侧运行的模型算子。
步骤602、模型算子计算分解,得到完成每种模型算子的计算所需要的至少三个计算步骤。
步骤603、终端平台处理器架构参数分析。确定在终端平台运行深度神经网络算法模型的相关处理器架构参数。
步骤604、终端平台处理器指令性能分析。确定处理器架构参数的具体数值。
步骤605、模型算子性能预测。基于模型算子的配置参数、完成模型算子的计算所需要的至少三个计算步骤和处理器架构参数,在终端上执行每个计算步骤的耗时数据,进而确定在终端运行模型算子的耗时数据。
步骤606、模型性能预测。基于模型算子之间的拓扑关系和在终端运行所有模型算子的耗时数据,预测整体模型在终端平台上运行的性能数据。
根据本申请实施例提供的性能数据预测方法,能够实现在任意云端训练的深度神经网络算法模型部署至终端侧处理器之前,可以较为准确地预测出模型在终端侧的推理性能,一方面能够极大地缩短业务端侧部署与优化的调整周期,另一方面能够预测模型在终端侧运行的性能,提高终端计算效率。
本申请实施例提供的性能数据预测方法,执行主体可以为性能数据预测装置。本申请实施例中以性能数据预测装置执行性能数据预测方法为例,说明本申请实施例提供的性能数据预测装置。
本申请实施例还提供一种性能数据预测装置。
如图7所示,该性能数据预测装置包括:第一确定模块710、处理模块720和预测模块730。
第一确定模块710,用于基于模型的模型算子,确定所述模型算子的配置参数和完成所述模型算子的计算所需要的至少三个计算步骤;
处理模块720,用于基于所述配置参数、所述至少三个计算步骤和终端的处理器架构参数,得到在所述终端上运行所述模型算子的耗时数据;
预测模块730,用于基于在所述终端上运行所述模型算子的耗时数据,预测在所述终端上运行所述模型的性能数据。
根据本申请实施例提供的性能数据预测装置,通过获取模型算子的配置参数、完成模型算子的计算所需要的至少三个计算步骤和终端的处理器架构参数,能够更全面拟合模型算子在终端侧运行的性能数据,准确率高,通用性强,从而可以预测在终端上运行模型的性能数据,提高模型性能预测的准确率,并且无需进行模型实测来获取实际性能数据,大大降低模型运行性能评估的难度,提高模型性能评估效率,进而可以提升了模型开发效率。
在一些实施例中,所述处理模块720,具体用于:
基于所述配置参数,确定所述模型算子的计算量和访存量;
基于所述模型算子的计算量和访存量、所述至少三个计算步骤和所述处理器架构参数,确定在所述终端上执行每个计算步骤的耗时数据;
基于所述每个计算步骤的耗时数据,确定在所述终端上运行所述模型算子的耗时数据。
在一些实施例中,所述处理模块720,具体用于:
根据所述终端的处理器的指令执行时序,对所述每个计算步骤对应的耗时数据进行分析,确定在所述终端上运行所述模型算子的耗时数据。
在一些实施例中,所述预测模块730,具体用于:
根据所述模型算子之间的拓扑关系,对在所述终端上运行所述模型算子的耗时数据进行计算,得到计算结果;
基于所述计算结果,预测在所述终端上运行所述模型的性能数据。
本申请实施例中的性能数据预测装置可以是电子设备,也可以是电子设备中的部件,例如集成电路或芯片。该电子设备可以是终端,也可以为除终端之外的其他设备。示例性的,电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、移动上网装置(Mobile Internet Device,MID)、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、机器人、可穿戴设备、超级移动个人计算机(ultra-mobilepersonal computer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等,还可以为服务器、网络附属存储器(Network Attached Storage,NAS)、个人计算机(personal computer,PC)、电视机(television,TV)、柜员机或者自助机等,本申请实施例不作具体限定。
本申请实施例中的性能数据预测装置可以为具有操作系统的装置。该操作系统可以为安卓(Android)操作系统,可以为iOS操作系统,还可以为其他可能的操作系统,本申请实施例不作具体限定。
本申请实施例提供的性能数据预测装置能够实现图1至图6的方法实施例实现的各个过程,为避免重复,这里不再赘述。
可选地,如图8所示,本申请实施例还提供一种电子设备800,包括处理器801,存储器802,存储在存储器802上并可在所述处理器801上运行的程序或指令,该程序或指令被处理器801执行时实现上述性能数据预测方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例中的电子设备包括上述所述的移动电子设备和非移动电子设备。
图9为实现本申请实施例的一种电子设备的硬件结构示意图。
该电子设备900包括但不限于:射频单元901、网络模块902、音频输出单元903、输入单元904、传感器905、显示单元906、用户输入单元907、接口单元908、存储器909以及处理器910等部件。
本领域技术人员可以理解,电子设备900还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器910逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图9中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
其中,处理器910,用于基于模型的模型算子,确定所述模型算子的配置参数和完成所述模型算子的计算所需要的至少三个计算步骤;
基于所述配置参数、所述至少三个计算步骤和终端的处理器架构参数,得到在所述终端上运行所述模型算子的耗时数据;
基于在所述终端上运行所述模型算子的耗时数据,预测在所述终端上运行所述模型的性能数据。
根据本申请实施例提供的电子设备,通过获取模型算子的配置参数、完成模型算子的计算所需要的至少三个计算步骤和终端的处理器架构参数,能够更全面拟合模型算子在终端侧运行的性能数据,准确率高,通用性强,从而可以预测在终端上运行模型的性能数据,提高模型性能预测的准确率,并且无需进行模型实测来获取实际性能数据,大大降低模型运行性能评估的难度,提高模型性能评估效率,进而可以提升了模型开发效率。
可选地,处理器910,还用于:
基于所述配置参数,确定所述模型算子的计算量和访存量;
基于所述模型算子的计算量和访存量、所述至少三个计算步骤和所述处理器架构参数,确定在所述终端上执行每个计算步骤的耗时数据;
基于所述每个计算步骤的耗时数据,确定在所述终端上运行所述模型算子的耗时数据。
可选地,处理器910,还用于:
根据所述终端的处理器的指令执行时序,对所述每个计算步骤对应的耗时数据进行分析,确定在所述终端上运行所述模型算子的耗时数据。
可选地,处理器910,还用于:
根据所述模型算子之间的拓扑关系,对在所述终端上运行所述模型算子的耗时数据进行计算,得到计算结果;
基于所述计算结果,预测在所述终端上运行所述模型的性能数据。
应理解的是,本申请实施例中,输入单元904可以包括图形处理器(GraphicsProcessing Unit,GPU)9041和麦克风9042,图形处理器9041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元906可包括显示面板9061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板9061。用户输入单元907包括触控面板9071以及其他输入设备9072中的至少一种。触控面板9071,也称为触摸屏。触控面板9071可包括触摸检测装置和触摸控制器两个部分。其他输入设备9072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
存储器909可用于存储软件程序以及各种数据。存储器909可主要包括存储程序或指令的第一存储区和存储数据的第二存储区,其中,第一存储区可存储操作系统、至少一个功能所需的应用程序或指令(比如声音播放功能、图像播放功能等)等。此外,存储器909可以包括易失性存储器或非易失性存储器,或者,存储器909可以包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本申请实施例中的存储器909包括但不限于这些和任意其它适合类型的存储器。
处理器910可包括一个或多个处理单元;可选地,处理器910集成应用处理器和调制解调处理器,其中,应用处理器主要处理涉及操作系统、用户界面和应用程序等的操作,调制解调处理器主要处理无线通信信号,如基带处理器。可以理解的是,上述调制解调处理器也可以不集成到处理器910中。
本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述性能数据预测方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器ROM、随机存取存储器RAM、磁碟或者光盘等。
本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述性能数据预测方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

Claims (10)

1.一种性能数据预测方法,其特征在于,包括:
基于模型的模型算子,确定所述模型算子的配置参数和完成所述模型算子的计算所需要的至少三个计算步骤;
基于所述配置参数、所述至少三个计算步骤和终端的处理器架构参数,得到在所述终端上运行所述模型算子的耗时数据;
基于在所述终端上运行所述模型算子的耗时数据,预测在所述终端上运行所述模型的性能数据。
2.根据权利要求1所述的性能数据预测方法,其特征在于,所述基于所述配置参数、所述至少三个计算步骤和终端的处理器架构参数,得到在所述终端上运行所述模型算子的耗时数据,包括:
基于所述配置参数,确定所述模型算子的计算量和访存量;
基于所述模型算子的计算量和访存量、所述至少三个计算步骤和所述处理器架构参数,确定在所述终端上执行每个计算步骤的耗时数据;
基于所述每个计算步骤的耗时数据,确定在所述终端上运行所述模型算子的耗时数据。
3.根据权利要求2所述的性能数据预测方法,其特征在于,所述基于所述每个计算步骤的耗时数据,确定在所述终端上运行所述模型算子的耗时数据,包括:
根据所述终端的处理器的指令执行时序,对所述每个计算步骤对应的耗时数据进行分析,确定在所述终端上运行所述模型算子的耗时数据。
4.根据权利要求1所述的性能数据预测方法,其特征在于,所述基于在所述终端上运行所述模型算子的耗时数据,预测在所述终端上运行所述模型的性能数据,包括:
根据所述模型算子之间的拓扑关系,对在所述终端上运行所述模型算子的耗时数据进行计算,得到计算结果;
基于所述计算结果,预测在所述终端上运行所述模型的性能数据。
5.一种性能数据预测装置,其特征在于,包括:
第一确定模块,用于基于模型的模型算子,确定所述模型算子的配置参数和完成所述模型算子的计算所需要的至少三个计算步骤;
处理模块,用于基于所述配置参数、所述至少三个计算步骤和终端的处理器架构参数,得到在所述终端上运行所述模型算子的耗时数据;
预测模块,用于基于在所述终端上运行所述模型算子的耗时数据,预测在所述终端上运行所述模型的性能数据。
6.根据权利要求5所述的性能数据预测装置,其特征在于,所述处理模块,具体用于:
基于所述配置参数,确定所述模型算子的计算量和访存量;
基于所述模型算子的计算量和访存量、所述至少三个计算步骤和所述处理器架构参数,确定在所述终端上执行每个计算步骤的耗时数据;
基于所述每个计算步骤的耗时数据,确定在所述终端上运行所述模型算子的耗时数据。
7.根据权利要求6所述的性能数据预测装置,其特征在于,所述处理模块,具体用于:
根据所述终端的处理器的指令执行时序,对所述每个计算步骤对应的耗时数据进行分析,确定在所述终端上运行所述模型算子的耗时数据。
8.根据权利要求5所述的性能数据预测装置,其特征在于,所述预测模块,具体用于:
根据所述模型算子之间的拓扑关系,对在所述终端上运行所述模型算子的耗时数据进行计算,得到计算结果;
基于所述计算结果,预测在所述终端上运行所述模型的性能数据。
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1-4任一项所述的性能数据预测方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1-4任一项所述的性能数据预测方法的步骤。
CN202310591518.6A 2023-05-23 2023-05-23 性能数据预测方法、性能数据预测装置、电子设备及介质 Pending CN116611476A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310591518.6A CN116611476A (zh) 2023-05-23 2023-05-23 性能数据预测方法、性能数据预测装置、电子设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310591518.6A CN116611476A (zh) 2023-05-23 2023-05-23 性能数据预测方法、性能数据预测装置、电子设备及介质

Publications (1)

Publication Number Publication Date
CN116611476A true CN116611476A (zh) 2023-08-18

Family

ID=87681384

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310591518.6A Pending CN116611476A (zh) 2023-05-23 2023-05-23 性能数据预测方法、性能数据预测装置、电子设备及介质

Country Status (1)

Country Link
CN (1) CN116611476A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117435350A (zh) * 2023-12-19 2024-01-23 腾讯科技(深圳)有限公司 算法模型的运行方法、装置、终端以及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117435350A (zh) * 2023-12-19 2024-01-23 腾讯科技(深圳)有限公司 算法模型的运行方法、装置、终端以及存储介质
CN117435350B (zh) * 2023-12-19 2024-04-09 腾讯科技(深圳)有限公司 算法模型的运行方法、装置、终端以及存储介质

Similar Documents

Publication Publication Date Title
US20200364552A1 (en) Quantization method of improving the model inference accuracy
US11640316B2 (en) Compiling and scheduling transactions in neural network processor
EP3627397B1 (en) Processing method and apparatus
CN110058883A (zh) 一种基于opu的cnn加速方法及系统
GB2557703A (en) Performing average pooling in hardware
US20200167632A1 (en) Neural network device for neural network operation, method of operating neural network device, and application processor including the neural network device
Qasaimeh et al. Benchmarking vision kernels and neural network inference accelerators on embedded platforms
US11562214B2 (en) Methods for improving AI engine MAC utilization
US12050987B2 (en) Dynamic variable bit width neural processor
CN111767986A (zh) 一种基于神经网络的运算方法及装置
JP7414930B2 (ja) 情報処理装置、情報処理方法
CN110574045A (zh) 用于优化后的深度网络处理的图形匹配
US12086711B2 (en) Data dividing method and processor for convolution operation
EP3137993B1 (en) Combining compute tasks for a graphics processing unit
CN116611476A (zh) 性能数据预测方法、性能数据预测装置、电子设备及介质
US11853868B2 (en) Multi dimensional convolution in neural network processor
CN114118384A (zh) 神经网络模型的量化方法、可读介质和电子设备
CN115310596A (zh) 卷积运算方法、装置、存储介质及电子设备
US20230205544A1 (en) Forward tensor and activation scaling for lower precision neural networks
Rodrigues Efficient execution of convolutional neural networks on low powered heterogeneous systems
TWI844116B (zh) 在機器學習硬體加速器處利用資料稀疏性
US20230289291A1 (en) Cache prefetch for neural processor circuit
Rzayev Architectures for Intelligent Interactive Systems
HC et al. Design-Space Exploration of Systolic Array for Edge Inferencing Applications
CN118735998A (zh) 基于视觉slam的算法优化方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination