掌桥专利:专业的专利平台
掌桥专利
首页

神经网络模型优化方法、装置及计算设备

文献发布时间:2024-04-18 19:58:30


神经网络模型优化方法、装置及计算设备

技术领域

本申请涉及人工智能领域,尤其涉及一种神经网络模型优化方法、装置及计算设备。

背景技术

人工智能(Artificial Intelligence,AI)是利用计算机模拟和扩展人的智能,感知环境、获取知识并使用知识获得结果的理论、方法、技术及应用系统。人工智能技术广泛应用于机器学习(Machine Learning,ML)、自然语言处理、计算机视觉、决策与推理、人机交互、推荐与搜索和AI基础理论等领域。基于神经网络模型处理数据实现识别等应用功能是人工智能应用的关键技术。

通常,云侧设备可以采用训练集对神经网络模型进行训练,使神经网络模型具备识别等应用功能,并将神经网络模型部署到至少一个终端(如:智能手机、摄像头、自动驾驶汽车等)。终端利用配置的神经网络模型对获取到的应用数据(如:图像、语音等)进行处理实现识别等应用功能。为了提高神经网络模型处理数据的精度,神经网络模型逐渐呈现结构复杂化和参数量增多的趋势,导致神经网络模型处理数据所需的计算资源算力越来越高,以及处理数据时长越来越长。

发明内容

本申请提供了神经网络模型优化方法、装置及计算设备,由此在对神经网络模型中的算子进行量化后,确保神经网络模型处理数据的精度的前提下,缩短神经网络模型处理数据的时长。

第一方面,提供了一种神经网络模型优化方法,方法由计算设备执行。方法包括:计算设备获取到待优化的神经网络模型后,确定神经网络模型包含的多个可量化算子中的第一可量化算子在运行神经网络模型的硬件平台上运行时的算子耗时,以及获取神经网络模型在硬件平台上上一次运行后的性能参数。进而,计算设备根据算子耗时、性能参数及多个可量化算子中的第二可量化算子的算子参数确定第二可量化算子的量化位宽。第一可量化算子为第二可量化算子的前一个可量化算子。神经网络模型包含的多个可量化算子被顺次依据上述步骤执行。在依次确定多个可量化算子的量化位宽后,根据所确定的多个可量化算子中每个可量化算子的量化位宽在硬件平台上执行神经网络模型,并在神经网络模型的输出的性能参数达到目标性能参数时,完成对神经网络模型的优化。

可理解地,第一,前一个可量化算子的算子耗时指示了前一个可量化算子在实际运行神经网络模型的硬件平台上运行时的时延程度。依据不同的量化位宽量化可量化算子,可量化算子在硬件平台上运行时的时延程度不同。神经网络模型中每个可量化算子的算子耗时影响神经网络模型在硬件平台上运行的整体时延。由于神经网络模型中当前可量化算子运行的结果受到前一个可量化算子运行的影响,则依据前一个可量化算子的算子耗时确定当前可量化算子的量化位宽,以控制当前可量化算子在硬件平台上运行时的时延程度,进而使神经网络模型在硬件平台上运行的整体时延接近目标性能参数。第二,性能参数指示了包含上一次量化后的可量化算子的神经网络模型在硬件平台上运行后的性能优劣程度。如果性能参数趋于目标性能参数,表示神经网络模型的上一次量化效果较优,反之,神经网络模型的上一次量化效果较差。因此,神经网络模型在硬件平台上上一次运行后的性能参数可以指导计算设备确定当前可量化算子的量化位宽的方向。第三,当前可量化算子的算子参数指示了当前可量化算子的算子结构特征。计算设备运行复杂算子结构的可量化算子,不仅计算复杂度高而且算子耗时也较长。因此,计算设备根据当前可量化算子的算子结构特征确定当前可量化算子的量化位宽,在确保精度损失在预设范围内的前提下,降低当前可量化算子的计算复杂度以及缩短算子耗时。如此,计算设备参考前一个可量化算子的算子耗时、当前可量化算子的算子参数和神经网络模型在硬件平台上上一次运行后的性能参数动态地确定当前可量化算子的量化位宽,在神经网络模型的输出的性能参数达到目标性能参数时,完成对神经网络模型的优化,从而在确保神经网络模型处理数据的精度损失在预设范围内的前提下,显著地缩短实际运行神经网络模型的硬件平台上量化后神经网络模型处理数据的时长,缩小神经网络模型的大小。

该方法可以实现自动优化神经网络模型,简单、直观、高效、可扩展性强,只需输入神经网络模型即可快速对神经网络模型完成优化,适用场景广泛。在一些时延敏感场景,如目标识别、自动驾驶、车牌识别、目标检测等场景,本申请实施例提供的神经网络模型优化方法尤其适用,能够有效地提升神经网络模型推理速度,缩短神经网络模型推理耗时,提升用户体验。

其中,性能参数包括神经网络模型的精度、时延和模型大小中的至少一个。

在一种可能的实现方式中,在根据所确定的每个可量化算子的量化位宽在硬件平台上执行神经网络模型后,在神经网络模型的输出的性能参数没有达到目标性能参数时,则继续确定神经网络模型中每个可量化算子的量化位宽,并根据所确定的多个可量化算子的量化位宽在硬件平台上执行神经网络模型,直到神经网络模型的输出的性能参数达到目标性能参数。从而,以目标性能参数为训练目标,经过多次训练为神经网络模型中每个可量化算子确定量化位宽,使神经网络模型的输出的性能参数达到目标性能参数,在确保神经网络模型处理数据的精度损失在预设范围内的前提下,显著地缩短实际运行神经网络模型的硬件平台上量化后神经网络模型处理数据的时长,缩小神经网络模型的大小。

在另一种可能的实现方式中,确定多个可量化算子中的第一可量化算子在运行网络模型的硬件平台上运行时的算子耗时包括:在等价算子库中确认第一可量化算子对应的第一算子集是否存在等价算子集,等价算子集包含第一算子集中可替换算子对应的等价算子。

当存在等价算子集时,则在硬件平台上分别运行第一算子集及等价算子集,确定第一算子集耗时及等价算子集耗时;当第一算子集耗时小于等于等价算子集耗时时,将第一算子集耗时作为算子耗时,当第一算子集耗时大于等价算子集耗时时,将等价算子集耗时作为算子耗时。可选地,也可以基于耗时模型预测算子集的算子耗时。例如,将第一算子集及等价算子集输入耗时模型,输出第一算子集耗时及等价算子集耗时。

从而,使用两个算子集的算子耗时中最小算子耗时预测当前可量化算子的量化位宽,以控制当前可量化算子在硬件平台上运行时的时延程度,进而使神经网络模型在硬件平台上运行的整体时延接近目标性能参数。实现在确保神经网络模型处理数据的精度损失在预设范围内的前提下,显著地缩短量化后神经网络模型处理数据的时长,缩小神经网络模型的大小。

在另一种可能的实现方式中,方法还包括:当第一算子集耗时大于等价算子集耗时时,在根据所确定的多个算子的量化位宽在硬件平台上执行神经网络模型时,用等价算子集替换第一算子集。其中,等价算子集和第一算子集针对相同的输入数据,输出也相同,且等价算子集对输入数据的处理效率大于第一算子集对输入数据的处理效率。从而,将神经网络模型中的算子集替换为等价算子集,使用两个算子集的算子耗时中最小算子耗时的等价算子集实际运行神经网络模型的硬件平台上运行,实现在确保神经网络模型处理数据的精度损失在预设范围内的前提下,显著地缩短量化后神经网络模型处理数据的时长,缩小神经网络模型的大小。

第二方面,提供了一种神经网络模型优化装置,所述装置包括用于执行第一方面或第一方面任一种可能设计中的神经网络模型优化方法的各个模块。

第三方面,提供了一种处理器,所述处理器用于执行第一方面或第一方面任一种可能设计中的神经网络模型优化方法的操作步骤。

第四方面,提供一种计算设备,该计算设备包括至少一个处理器和存储器,存储器用于存储一组计算机指令;当处理器执行所述一组计算机指令时,执行第一方面或第一方面任一种可能实现方式中的神经网络模型优化方法的操作步骤。

第五方面,提供一种计算机可读存储介质,包括:计算机软件指令;当计算机软件指令在计算设备中运行时,使得计算设备执行如第一方面或第一方面任意一种可能的实现方式中所述方法的操作步骤。

第六方面,提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算设备执行如第一方面或第一方面任意一种可能的实现方式中所述方法的操作步骤。

第七方面,提供一种芯片系统,该芯片系统包括处理器,用于实现上述第一方面的方法中处理器的功能。在一种可能的设计中,所述芯片系统还包括存储器,用于保存程序指令和/或数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。

本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。

附图说明

图1为本申请实施例提供的一种神经网络的结构示意图;

图2为本申请实施例提供的一种卷积神经网络的结构示意图;

图3为本申请实施例提供的一种系统架构示意图;

图4为本申请实施例提供的一种生成等价算子库的方法示意图;

图5为本申请实施例提供的一种生成算子集的示意图;

图6为本申请实施例提供的一种生成等价算子集关系的示意图;

图7为本申请实施例提供的一种神经网络模型优化方法的示意图;

图8为本申请实施例提供的一种算子集替换的示意图;

图9为本申请实施例提供的另一种神经网络模型优化方法的示意图;

图10为本申请实施例提供的一种神经网络模型优化的场景示意图;

图11为本申请实施例提供的一种神经网络模型优化装置的结构示意图;

图12为本申请实施例提供的一种计算设备的结构示意图。

具体实施方式

为了便于理解,下面先对本申请实施例涉及的相关术语及神经网络等相关概念进行介绍。

(1)神经网络

神经网络可以是由神经元组成的,神经元可以是指以x

其中,s=1、2、……n,n为大于1的自然数,W

如图1所示,为本申请实施例提供的一种神经网络的结构示意图。神经网络100包括N个处理层,N为大于或等于3的整数。神经网络100的第一层为输入层110,负责接收输入信号,神经网络100的最后一层为输出层130,负责输出神经网络的处理结果。除去第一层和最后一层的其他层为中间层140,这些中间层140共同组成隐藏层120,隐藏层120中的每一层中间层140既可以接收输入信号,也可以输出信号。隐藏层120负责输入信号的处理过程。每一层代表了信号处理的一个逻辑级别,通过多个层,数据信号可经过多级逻辑的处理。

在一些可行的实施例中该神经网络的输入信号可以是视频信号、语音信号、文本信号、图像信号或温度信号等各种形式的信号。图像信号可以是相机(图像传感器)拍摄的风景图像、监控设备捕捉的环境图像以及门禁系统获取的面部图像等。该神经网络的输入信号还包括其他各种计算机可处理的工程信号,在此不再一一列举。若利用神经网络对图像信号进行深度学习,可以提高神经网络处理图像的质量。

(2)深度神经网络

深度神经网络(Deep Neural Network,DNN)也称多层神经网络,可以理解为具有多层隐藏层的神经网络。按照不同层的位置对深度神经网络进行划分,深度神经网络内部的神经网络可以分为三类:输入层、隐藏层和输出层。一般来说第一层是输入层,最后一层是输出层,中间的层都是隐藏层。层与层之间是全连接的,也就是说,第i层的任意一个神经元与第i+1层的任意一个神经元相连。

虽然深度神经网络看起来很复杂,但是就每一层的工作来说,其实并不复杂,简单来说就是如下线性关系表达式:

综上,第L-1层的第k个神经元到第L层的第j个神经元的系数定义为

需要注意的是,输入层是没有W参数的。在深度神经网络中,更多的隐藏层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络的所有层的权重矩阵(由很多层的向量W形成的权重矩阵)。

(3)卷积神经网络

卷积神经网络(Convolutional Neuron Network,CNN)是一种带有卷积结构的深度神经网络。卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。该特征抽取器可以看作是滤波器,卷积过程可以看作是使用一个可训练的滤波器与一个输入的图像或者特征图(feature map)做卷积。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层可以输出若干个特征图,特征图可以是指卷积神经网络运算过程中的中间结果。同一特征图的神经元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取图像信息的方式与位置无关。也就是,图像的某一部分的统计信息与其他部分是一样的。即意味着在某一部分学习的图像信息也能用在另一部分上。所以对于图像上的所有位置,都能使用同样的学习得到的图像信息。在同一卷积层中,可以使用多个卷积核来提取不同的图像信息,一般地,卷积核数量越多,卷积操作反映的图像信息越丰富。

卷积核可以以随机大小的矩阵的形式初始化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。

示例地,如图2所示,为本申请实施例提供的一种卷积神经网络的结构示意图。卷积神经网络200可以包括输入层210、卷积层/池化层220(其中池化层为可选的)和神经网络层230。

卷积层/池化层220例如可以包括层221至层226。在一种示例中,层221例如可以为卷积层,层222例如可以为池化层,层223例如可以为卷积层,层224例如可以为池化层,层225例如可以为卷积层,层226例如可以为池化层。在另一种示例中,层221和层222例如可以为卷积层,层223例如可以为池化层,层224和层225例如可以为卷积层,层226例如可以为池化层。卷积层的输出可以作为随后的池化层的输入,也可以作为另一个卷积层的输入以继续进行卷积操作。

将以卷积层221为例,介绍一层卷积层的内部工作原理。

卷积层221可以包括很多个卷积算子,卷积算子也可称为核。卷积算子在图像处理中的作用相当于一个从输入图像矩阵中提取特定信息的过滤器。卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义。在对图像进行卷积操作的过程中,权重矩阵通常在输入图像上沿着水平方向一个像素接着一个像素(或两个像素接着两个像素,这取决于步长(stride)的取值)的进行处理,从而完成从图像中提取特定特征的工作。该权重矩阵的大小与图像的大小相关。需要注意的是,权重矩阵的纵深维度(depth dimension)和输入图像的纵深维度是相同的。在进行卷积运算的过程中,权重矩阵会延伸到输入图像的整个深度。因此,与一个单一的权重矩阵进行卷积会产生一个单一纵深维度的卷积化输出,但是大多数情况下不使用单一权重矩阵,而是应用多个尺寸(行×列)相同的权重矩阵,即多个同型矩阵。每个权重矩阵的输出被堆叠起来形成卷积图像的纵深维度。不同的权重矩阵可以用来提取图像中不同的特征,例如一个权重矩阵用来提取图像边缘信息,另一个权重矩阵用来提取图像的特定颜色,又一个权重矩阵用来对图像中不需要的噪点进行模糊化等。该多个权重矩阵尺寸(行×列)相同,经过该多个尺寸相同的权重矩阵提取后的特征图的尺寸也相同,再将提取到的多个尺寸相同的特征图合并形成卷积运算的输出。

这些权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以用来从输入图像中提取信息,从而使得卷积神经网络200进行正确的预测。

当卷积神经网络200有多个卷积层的时候,初始的卷积层(例如层221)往往提取较多的一般特征,该一般特征也可以称之为低级别的特征。随着卷积神经网络200深度的加深,越往后的卷积层(例如层226)提取到的特征越来越复杂,比如高级别的语义之类的特征,语义越高的特征越适用于待解决的问题。

由于常常需要减少训练参数的数量,因此卷积层之后常常需要周期性的引入池化层。在如图2中卷积层/池化层220所示例的层221至层226各层,可以是一层卷积层后面跟一层池化层,也可以是多层卷积层后面接一层或多层池化层。在图像处理过程中,池化层的唯一目的就是减少图像的空间大小。池化层可以包括平均池化算子和/或最大池化算子,以用于对输入图像进行采样得到较小尺寸的图像。平均池化算子可以在特定范围内对图像中的像素值进行计算产生平均值作为平均池化的结果。最大池化算子可以在特定范围内取该范围内值最大的像素作为最大池化的结果。另外,就像卷积层中用权重矩阵的大小应该与图像尺寸相关一样,池化层中的运算符也应该与图像的大小相关。通过池化层处理后输出的图像尺寸可以小于输入池化层的图像的尺寸,池化层输出的图像中每个像素点表示输入池化层的图像的对应子区域的平均值或最大值。

在经过卷积层/池化层220的处理后,卷积神经网络200还不足以输出所需要的输出信息。因为如前所述,卷积层/池化层220提取特征,并减少输入图像带来的参数。然而为了生成最终的输出信息(所需要的类信息或其他相关信息),卷积神经网络200需要利用神经网络层230来生成一个或者一组所需要的类的数量的输出。因此,在神经网络层230中可以包括多层隐藏层(如图2所示的层231、层232至层23n)以及输出层240,该多层隐藏层中所包含的参数可以根据具体的任务类型的相关训练数据进行预先训练得到,例如该任务类型可以包括图像识别、图像分类和图像超分辨率重建等等。

在神经网络层230中的多层隐藏层之后,也就是整个卷积神经网络200的最后层为输出层240,该输出层240具有类似分类交叉熵的损失函数,具体用于计算预测误差,一旦整个卷积神经网络200的前向传播(如图2由层210至层240方向的传播为前向传播)完成,反向传播(如图2由层240至层210方向的传播为反向传播)就会开始更新前面提到的各层的权重值以及偏差,以减少卷积神经网络200的损失,及卷积神经网络200通过输出层输出的结果和理想结果之间的误差。

需要说明的是,如图2所示的卷积神经网络200仅作为一种卷积神经网络的示例,在具体的应用中,卷积神经网络还可以以其他网络模型的形式存在。

(4)损失函数

在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断的调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。

(5)反向传播算法

卷积神经网络可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始的超分辨率模型中参数的大小,使得超分辨率模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的超分辨率模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的超分辨率模型的参数,例如权重矩阵。

(6)量化

在深度学习领域,量化(quantized)是指将浮点型运算近似为整数型运算的过程。浮点型包括32位浮点型(float 32)和64位浮点型(double 64)。整数型包括16位整数型(int 16)、8位整数型(int 8)、4位整数型(int 4)和2位整数型(int 2)。浮点型运算可以确保较高的计算精度,但是浮点型运算的计算量较大。模型量化是一种模型压缩技术,即对神经网络的中间层的权重、激活值等进行量化操作,将浮点数从一个高维度映射到低维度的转换过程,进而在低维度的表示下完成计算,以达到确保模型精度的条件下,提升计算速度的目的。例如,一个使用float 32表示的权重经过量化后使用int 8来表示。又如,将float32转化为int 16进行运算。

上述神经网络也可以称为神经网络模型。神经网络包含的中间层也可以称为算子。算子用于实现神经网络中一个单元计算。例如,实现卷积层计算的算子可以称为卷积算子(conv)。实现池化层计算的算子可以称为池化算子(pool)。实现激活层计算的算子可以称为激活算子(relu)。激活算子也可以称为线性整流算子。

本申请实施例提供一种神经网络模型优化方法,尤其是提供一种对神经网络模型进行量化的技术,即基于多个可量化算子中的第一可量化算子在运行神经网络模型的硬件平台上运行时的算子耗时、神经网络模型在硬件平台上上一次运行后的性能参数和多个可量化算子中的第二可量化算子的算子参数确定第二可量化算子的量化位宽。第一可量化算子为第二可量化算子的前一个可量化算子。神经网络模型包含的多个可量化算子被顺次依据上述步骤执行。在依次确定多个可量化算子的量化位宽后,根据所确定的多个可量化算子中每个可量化算子的量化位宽在硬件平台上执行神经网络模型,并在神经网络模型的输出的性能参数达到目标性能参数时,完成对神经网络模型的优化,减小神经网络模型占用的内存容量。

下面结合附图对本申请实施例的实施方式进行详细描述。

图3为本申请实施例提供的一种系统架构示意图。如图3所示,系统300包括执行设备310、训练设备320、数据库330、终端设备340、数据存储系统350和数据采集设备360。

执行设备310可以是终端,如手机终端,平板电脑,笔记本电脑,虚拟现实(virtualreality,VR)、增强现实(augmented reality,AR)设备、混合现实(Mixed Reality,MR)设备、扩展现实(Extended Reality,ER)设备、摄像头或车载终端等,还可以是边缘设备(例如,携带具有处理能力芯片的盒子)等。

训练设备320可以是服务器或者云端设备等。训练设备320具备较强的计算能力,能够运行神经网络模型,对神经网络模型进行训练等计算。

作为一种可能的实施例,执行设备310和训练设备320是部署在不同物理设备(如:服务器或集群中的服务器)上的不同处理器。例如,执行设备310可以是神经网络模型处理器(neural network processing unit,NPU)、图形处理单元(graphic processing unit,GPU)、中央处理器(central processing unit,CPU)、其他通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(application-specific integratedcircuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。训练设备320可以是GPU、NPU、微处理器、特定应用集成电路(application-specific integrated circuit,ASIC)、或一个或多个用于控制本申请方案程序执行的集成电路。

数据采集设备360用于采集训练数据,并将训练数据存入数据库330。训练数据可以是图像、语音和文字中至少一种形式的数据。例如,训练数据包括训练图像和训练图像中的目标。

训练设备320用于利用训练数据对神经网络模型进行训练,直到神经网络模型中的损失函数收敛,且损失函数值小于特定阈值则神经网络模型训练完成,从而使得神经网络模型达到一定精度。或者,数据库330中所有的训练数据被用于训练,则神经网络模型训练完成,使训练完成的神经网络模型具有识别或分类等功能。进而,训练设备320将训练完成的神经网络模型301配置到执行设备310。执行设备310用于实现根据训练完成的神经网络模型301处理应用数据实现识别等功能。

在一些实施例中,训练设备320可以将训练完成的神经网络模型301配置到多个执行设备310。每个执行设备310利用训练完成的神经网络模型301实现识别或分类等功能。

例如,对于自动驾驶场景,自动驾驶汽车依据预定路线行驶过程中,利用神经网络模型主要对环境中的路标、行驶参照物和道路上的障碍物等进行识别,以确保自动驾驶汽车安全准确地行驶。路标可以包含图形路标或文字路标。行驶参照物可以是建筑物或植物。道路上的障碍物可以包括动态物体(如:动物)或静止物体(如:静止的车辆)。

又如,对于监控场景,利用神经网络模型主要对路口或园区等环境中目标(如:汽车和用户)进行识别。

又如,对于自然语言处理场景,利用神经网络模型主要对语音或文本进行识别。

为了提高神经网络模型处理数据的精度,训练设备320还可以基于数据库330维护的训练数据和执行设备310提供的应用数据对神经网络模型进行迭代训练。可理解的,迭代训练是指对神经网络模型首次训练后的任意一次训练。

神经网络模型处理数据的精度越高,则神经网络模型处理数据的时长越长,神经网络模型占用的内存容量越大。

本申请实施例提供的神经网络模型优化方法,训练设备320训练完成神经网络模型后,向执行设备310部署训练完成的神经网络模型301之前,可以对训练完成的神经网络模型301的中间层进行量化,即基于前一个可量化算子的算子耗时、神经网络模型301上一次运行后的性能参数和当前可量化算子的算子参数确定当前可量化算子的量化位宽。依据上述步骤依次确定多个可量化算子的量化位宽后,根据所确定的多个可量化算子中每个可量化算子的量化位宽在执行设备310上执行神经网络模型301,并在神经网络模型301的输出的性能参数达到目标性能参数时,完成对神经网络模型301的优化。从而在确保神经网络模型301处理数据的精度损失在预设范围内的前提下,显著地缩短在执行设备310上量化后神经网络模型301处理数据的时长,缩小神经网络模型301的大小,减小神经网络模型301占用的内存容量。

需要说明的是,在实际的应用中,数据库330中维护的训练数据不一定都来自于数据采集设备360,也有可能是从其他设备接收得到的。另外,训练设备320也不一定完全基于数据库330维护的训练数据训练神经网络模型,也有可能从云端或其他地方获取训练数据训练神经网络模型。上述描述不应该作为对本申请实施例的限定。

进一步地,根据执行设备310所执行的功能,还可以进一步将执行设备310细分为如图3所示的架构,如图所示,执行设备310配置有计算模块311、I/O接口312和预处理模块313。

I/O接口312用于与外部设备进行数据交互。用户可以通过终端设备340向I/O接口312输入数据。输入数据可以包括图像或视频。另外,输入数据也可以来自数据库330。

预处理模块313用于根据I/O接口312接收到的输入数据进行预处理。

在执行设备310对输入数据进行预处理,或者在执行设备310的计算模块311执行计算等相关的处理过程中,执行设备310可以调用数据存储系统350中的数据、代码等以用于相应的处理,也可以将相应处理得到的数据和指令等存入数据存储系统350中。

例如,执行设备310存储的优化后的神经网络模型可以应用于执行设备310。执行设备310获取到应用数据后,计算模块311将应用数据输入优化后的神经网络模型得到处理结果。由于优化后的神经网络模型是由训练设备320进行量化后的模型,因此,利用优化后的神经网络模型对应用数据进行处理,可以满足用户对数据处理的精度需求和时长需求。

最后,I/O接口312将处理结果返回给终端设备340,从而提供给用户,以便用户查看处理结果。

在图3所示情况下,用户可以手动给定输入数据,该手动给定可以通过I/O接口312提供的界面进行操作。另一种情况下,终端设备340可以自动地向I/O接口312发送输入数据,如果要求终端设备340自动发送输入数据需要获得用户的授权,则用户可以在终端设备340中设置相应权限。用户可以在终端设备340查看执行设备310输出的处理结果,具体的呈现形式可以是显示、声音、动作等具体方式。终端设备340也可以作为数据采集端,采集如图所示输入I/O接口312的输入数据及输出I/O接口312的处理结果作为新的样本数据,并存入数据库330。当然,也可以不经过终端设备340进行采集,而是由I/O接口312将如图所示输入I/O接口312的输入数据及输出I/O接口312的处理结果,作为新的样本数据存入数据库330。

图3仅是本申请实施例提供的一种系统架构的示意图,图3中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图3中,数据存储系统350相对执行设备310是外部存储器,在其它情况下,也可以将数据存储系统350置于执行设备310中。

接下来,结合图4至图10对本申请实施例提供的神经网络模型优化进行详细阐述。图4为本申请实施例提供的一种生成等价算子库的方法示意图。如图4所示,该方法包括以下步骤。

步骤410、根据多个应用场景的神经网络模型获取算子集。

计算设备根据应用于不同应用场景的神经网络模型和量化后神经网络模型中提取可量化算子,并去掉重复算子形成等价算子库。应用场景包括但不限于目标识别和自动驾驶场景等。本申请实施例所述的神经网络模型可以是主流的计算机视觉(computervision,CV)模型。CV模型例如包括YOLO、AlenNet、残差网络(Residual Network,ResNet)和稠密卷积网络(Dense Convolutional Network,DenseNet)。可选地,计算设备也可以根据用户给定的神经网络模型获取算子集。

在一些实施例中,由于神经网络模型的推理性能(如:时长、精度)与可量化算子的连接的算子关联较强,则算子集包含以可量化算子为中心的多个算子。可理解地,算子集是指以可量化算子为中心的部分中间层组成的网络结构。例如,神经网络模型中的可量化算子间连接可替换算子,算子集包含可量化算子和与可量化算子连接的可替换算子。

可量化算子是指神经网络模型中可以进行量化操作的算子。可以在可量化算子前后可以插入量化算子(quant)和反量化算子(dequant)实现对可量化算子的量化。量化算子和反量化算子用于对可量化算子进行量化。比如,算子集可以包括根据量化位宽量化后的可量化算子和可量化算子关联的可替换算子。

可替换算子是指神经网络模型中可以进行等价替换的算子。相互等价的算子针对相同的输入数据,输出也相同。比如,算子集包括根据量化位宽量化后的可量化算子和可替换算子的等价算子。

神经网络模型中的算子可以包括激活算子(relu)、矩阵变换算子(reshape)、卷积算子(conv)、池化算子(pool)、最大池化算子(maxpool)和矩阵转置算子(transpose)等。每个算子用于实现不同的计算功能。例如,可量化算子包括卷积算子、全连接算子、嵌入层等。

可替换算子包括激活算子

示例地,如图5中的(a)所示的神经网络模型,该神经网络模型包含9个算子,图中省略号表示神经网络模型还可以包含其他算子。其中,9个算子包含了2个激活算子、3个卷积算子、2个矩阵变换算子、1个特征增加算子(add)和1个特征拼接算子(concat)。如图5中的(b)所示的量化后神经网络模型,即在图5中的(a)所示的神经网络模型中的卷积算子前后增加了量化算子和反量化算子,实现对卷积算子进行量化。如图5中的(c)所示,从图5中的(b)所示的量化后神经网络模型中提取的算子集。算子集1包含特征增加算子、量化算子、卷积算子、反量化算子和矩阵变换算子。量化算子和反量化算子用于对卷积算子进行量化。其中,卷积算子是一种可量化算子。特征增加算子和矩阵变换算子均为可替换算子。

获取到算子集后,基于算子集在硬件推理平台(如GPU、NPU、DPU等)上采集算子集的算子耗时。采集方式为统计神经网络模型输入数据范围,随机构造不同算子集的输入数据和算子参数,监测得到算子集的算子耗时。例如,卷积算子的算子参数包括输入矩阵维度、卷积核大小、输入输出通道数量、滑动步长和补零方式等。进而,根据算子集和算子集的算子耗时训练算子耗时模型(cost-model),以便于对待优化的神经网络模型中可量化算子确定量化位宽时预测待优化的神经网络模型中算子集的算子耗时。

步骤420、根据算子集搜索具有等价关系的算子集,以生成等价算子库。

从多个算子集中搜索具有等价关系的算子集,以生成等价算子库,等价算子库包括多对具有等价关系的算子集。例如,采用包括但不限于子图哈希、随机测试用例比较输出、数学等价分析等各种方法判断任意两个算子集是否等价,若两个算子集等价则输出一对相互等价的算子集。重复此步骤,从多个算子集中搜索相互等价的算子集形成等价算子库。具有等价关系的算子集用于根据同一输入数据输出相同结果,即对具有等价关系的两个算子集输入相同的输入数据可以输出相同的输出数据。

示例地,如图6所示,假设算子集包含算子集1和算子集2。对该算子集进行搜索,得到算子集1和算子集2等价。由于relu 6相对relu多出截断功能,而量化算法本质是对数据范围的收集,即可等价实现截断功能,故relu6的截断功能可去除,即用relu等价替换relu6。在第一算子集与第二算子集输入相同的输入数据可以输出相同的输出数据,但是执行设备310基于第二算子集处理数据的时长比执行设备310基于第一算子集处理数据的时长短。

相对根据领域专家的经验设计的相互等价的算子集,本申请实施例提供的根据算子集自动搜索相互等价的算子集,有效地节省人力且可覆盖到全部可能的相互等价的算子集。

基于上述包括具有等价关系的算子集的等价算子库,可以确定对待优化的神经网络模型中的可量化算子的量化位宽,以及当神经网络模型中第一算子集耗时大于等价算子集耗时,用等价算子集替换所述第一算子集,对待优化神经网络模型进行量化,来获得优化后的神经网络模型,确保神经网络模型处理数据的精度损失在预设范围内的前提下,缩短量化后神经网络模型处理数据的时长,缩小神经网络模型的大小。

下面结合图7至图10对神经网络模型优化方法进行详细阐述。

图7为本申请实施例提供的一种神经网络模型优化方法的示意图。该方法包括以下步骤。

步骤710、获取待优化的神经网络模型和目标性能参数。

从互联网开源模型中获取待优化的神经网络模型。或者,将用户提供的神经网络模型作为待优化的神经网络模型。或者,将自行训练得到的训练后神经网络模型作为待优化的神经网络模型。

待优化的神经网络模型包含多个可量化算子,多个可量化算子构成多个算子集。在一些实施例中,待优化的神经网络模型还可以包含多个可替换算子。至少一个可替换算子和至少一个可量化算子可以构成一个算子集。例如,待优化的神经网络模型中一个可量化算子和一个可替换算子构成一个算子集。待优化的神经网络模型中不同的算子集可以由不同连续的算子构成。

目标性能参数包括目标精度、目标时延和目标模型大小中的至少一个。目标性能参数可以是用户指定的优化指标。

步骤720、确定可量化算子的量化位宽。

首先,对待优化的神经网络模型进行初始化,即第一次训练待优化的神经网络模型时根据历史经验指定待优化的神经网络模型中第一个可量化算子的量化位宽。对于第一次训练待优化的神经网络模型时除了第一个可量化算子以外的可量化算子的量化位宽,以及第一次之后每次训练待优化的神经网络模型时每个可量化算子的量化位宽,可以根据对待优化的神经网络模型训练得到。训练过程具体如下步骤721至步骤723的详细阐述。其中,步骤721至步骤723中所述的第二可量化算子是指当前需要量化的可量化算子。第一可量化算子是指第二可量化算子的前一个可量化算子。

步骤721、确定多个可量化算子中的第一可量化算子在运行神经网络模型的硬件平台上运行时的算子耗时。执行步骤722和步骤723。

首先,在等价算子库中确认第一可量化算子对应的第一算子集是否存在等价算子集,等价算子集包含第一算子集中可替换算子对应的等价算子。

根据算子集特征确定神经网络模型中与等价算子库包含的算子集相同的算子集。算子集特征包含算子类型、算子集结构和算子参数。算子类型是指算子集中包含的算子的种类,例如算子类型包括卷积、矩阵变换、矩阵转置和激活。算子集结构是指算子集中包含的算子的连接方式。算子参数是指算子集中包含的算子的权重等参数。

在一些实施例中,基于等价算子库包含的算子集与神经网络模型包含的算子集进行匹配,如果两个算子集的算子类型、子图结构和算子参数均相同,则确定神经网络模型包含的算子集与等价算子库包含的算子集相同,即从神经网络模型中确定到一个待替换算子集。遍历等价算子库中的算子集,确定神经网络模型中所有可能的待替换算子集。

进而,确定出等价算子库中与神经网络模型中待替换算子集等价的算子集。可理解的,等价算子库用于记录多对具有等价关系的算子集。相互等价的算子集中每个算子集针对相同的输入数据,输出也相同。

例如,确定神经网络模型中与第一可量化算子连接的至少一个可替换算子,第一可量化算子和至少一个可替换算子组成第一算子集,即神经网络模型包括第一算子集。进而,根据第一算子集在等价算子库中查询,确定与第一算子集对应的至少一个等价算子集。多个算子集包括第一算子集和至少一个等价算子集。第一算子集和等价算子集均包含根据量化位宽量化后的可量化算子。示例地,如图6中所示的等价的算子集1和算子集1。算子集1包含可量化算子、量化算子、反量化算子、与可量化算子关联的可替换算子。算子集2包含可量化算子、量化算子、反量化算子和可替换算子的等价算子。

在一种示例中,具有等价关系的算子集可以以表格的形式呈现,如表1所示。

表1

由表1可知,算子集1与算子集2等价。算子集3与算子集4等价。示例地,假设神经网络模型包括算子集1,确定等价算子库包括算子集1,以及算子集1的等价算子集为算子集2。

需要说明的是,表1只是以表格的形式示意具有等价关系的算子集在存储设备中的存储形式,并不是对该对应关系在存储设备中的存储形式的限定,当然,该对应关系在存储设备中的存储形式还可以以其他的形式存储,本实施例对此不做限定。

依据硬件平台的计算资源(如:处理器)的特征,比如处理器的处理器核数量和处理器的硬件结构,计算资源对不同算子类型的算子的亲和性不同,即不同的计算资源适于计算不同算子类型的算子。亲和性是指计算资源计算算子有效利用硬件运算能力(简称:算力)的程度。运算能力(operation ability)是数学能力的基本成分之一,指运用有关运算的知识进行运算、推理求得运算结果的能力。

例如,处理器1适于计算矩阵变换算子,处理器2适于计算矩阵转置算子。如果处理器1计算矩阵转置算子,则处理器1无法有效利用处理器1的算力计算矩阵转置算子。因此,处理器1计算矩阵变换算子的算力高于处理器1计算矩阵转置算子的算力。

应理解,计算资源计算算子的算力与计算资源计算算子的时长有关,即计算资源计算算子的算力与计算资源计算算子的算子耗时有关。若计算资源计算算子时能够有效利用计算资源的算力,则计算资源计算算子的时长较短;若计算资源计算算子时无法有效利用计算资源的算力,则计算资源计算算子的时长较长。

当存在等价算子集时,则在硬件平台上分别运行第一算子集及等价算子集,确定第一算子集耗时及等价算子集耗时。比较第一算子集耗时及等价算子集耗时,当第一算子集耗时小于等于等价算子集耗时时,将第一算子集耗时作为算子耗时,当第一算子集耗时大于等价算子集耗时时,将等价算子集耗时作为算子耗时。

在一些实施例中,可以将第一算子集和等价算子集输入步骤410中所述的耗时模型,输出第一算子集的算子耗时和等价算子集的算子耗时。

另外,当第一算子集耗时大于等价算子集耗时时,在根据所确定的多个算子的量化位宽在硬件平台上执行神经网络模型时,用等价算子集替换第一算子集,即将最小算子耗时的算子集确定为优化后算子集,执行步骤722。

步骤722、用等价算子集替换第一算子集。

如图8所示,为本申请实施例提供的一种算子集替换方法示意图。

步骤810、判断多个算子集的算子耗时中第一算子集的算子耗时是否最小。若是,执行步骤820、将第一算子集确定为优化后算子集;若否,执行步骤830、用最小算子耗时的算子集替换第一算子集,将最小算子耗时的算子集确定为优化后算子集。

例如,多个算子集包括第一算子集和等价算子集。若第一算子集的算子耗时大于等价算子集的算子耗时,表示等价算子集对输入数据的处理效率大于第一算子集对输入数据的处理效率,将等价算子集确定为优化后算子集,将第一算子集替换为等价算子集。

若第一算子集的算子耗时小于或等于等价算子集的算子耗时,表示等价算子集对输入数据的处理效率小于第一算子集对输入数据的处理效率,将第一算子集确定为优化后算子集,无需对第一算子集进行替换。

在另一些实施例中,从等价算子库中确定与神经网络模型中第一算子集等价的等价算子集后,依据计算等价算子集的算力和计算第一算子集的算力,判断是否用与第一算子集等价的等价算子集替换第一算子集。

若基于计算资源计算等价算子集的算力高于计算资源计算第一算子集的算力,用等价算子集替换第一算子集;若基于计算资源计算等价算子集的算力低于计算资源计算第一算子集的算力,则不用等价算子集替换第一算子集。计算资源计算等价算子集的算力可以是指计算资源计算等价算子集的数据处理效率。计算资源计算第一算子集的算力可以是指计算资源计算第一算子集的数据处理效率。

示例地,如图9所示,待优化神经网络模型包括算子集3,算子集3包括2个激活算子和1个卷积算子,1个激活算子连接1个卷积算子,再连接1个激活算子。算子集4包括2个激活算子、1个卷积算子、量化算子和反量化算子。算子集3与算子集4是一对相互等价的算子集,即算子集4为算子集3的等价算子集,用算子集4替换算子集3,即将relu6替换为relu,并对卷积算子进行量化,得到优化后神经网络模型(或称量化后神经网络模型)。

步骤723、根据算子耗时、性能参数及多个可量化算子中的第二可量化算子的算子参数确定第二可量化算子的量化位宽。

算子耗时可以是第一算子集耗时或等价算子集耗时。性能参数可以是指神经网络模型在硬件平台上上一次运行后的反馈信息。第二可量化算子的算子参数可以包括步长、核大小、尺寸和通道数中至少一个。

本申请实施例提供的神经网络模型优化方法对待优化神经网络模型优化后,待优化神经网络模型中不同的可量化算子的量化位宽可以相同也可以不同。

相比待优化神经网络模型的大小,如果优化后神经网络模型的大小缩小较多,优化后神经网络模型的精度也降低较多;如果优化后神经网络模型的大小缩小较小,优化后神经网络模型处理数据的时延仍然较长,占用的内存容量也较多。为了确保优化后神经网络模型的压缩率,在确定可量化算子的量化位宽时,可以采用贪心算法对待优化神经网络模型的大小做限制。

可选地,如果待优化神经网络模型包含的网络层数较多,还可以使用参数噪声对可量化算子的量化位宽的过程进行干扰,例如参数噪声添加到学习量化位宽模型的参数中。从而,相较于动作噪声,只要开始确定第一层的量化位宽时状态移动、即可保证搜索过程的稳定,从而获得可靠的搜索结果。

步骤730、根据可量化算子的量化位宽对可量化算子进行量化,得到中间模型。

具体的量化方式本申请实施例不予限定。例如,量化方式包括训练后量化(Posttraining quantization,PTQ)和量化感知训练(Quantization aware training,QAT)。

步骤740、判断中间模型的中间结果是否满足目标性能参数。

若中间结果满足目标性能参数,表示根据确定的量化位宽对可量化算子进行量化,优化后神经网络模型的大小满足目标模型大小,根据优化后神经网络模型处理数据的精度和时延均满足目标精度和目标时延。执行步骤750,将中间模型确定为优化后神经网络模型。

若中间结果不满足目标性能参数,表示根据确定的量化位宽对可量化算子进行量化,优化后神经网络模型的大小不满足目标模型大小,和/或,根据优化后神经网络模型处理数据的精度和时延均不满足目标精度和目标时延。例如,优化后神经网络模型的大小大于目标模型大小。又如,根据优化后神经网络模型处理数据的精度低于目标精度。又如,根据优化后神经网络模型处理数据的时延大于目标时延。

可理解地,优化后神经网络模型的大小、精度和时延只要有一个不满足目标性能参数,则可以确定中间结果不满足目标性能参数。中间结果包括待优化神经网络模型的迭代训练过程中任意一次的精度、时延和模型大小。因此,可以将中间结果作为反馈信息,执行步骤760,继续执行步骤720和步骤730,继续搜索满足目标性能参数的量化位宽。

步骤750,将中间模型确定为优化后神经网络模型,输出优化后神经网络模型。

例如,将优化后神经网络模型部署到执行设备310,使执行设备310基于优化后神经网络模型处理数据,在确保神经网络模型处理数据的精度损失在预设范围内的前提下,显著地缩短量化后神经网络模型处理数据的时长,缩小神经网络模型的大小,减小神经网络模型占用的内存容量。

可选地,如果达到最大的循环次数时,也可以将中间模型确定为优化后神经网络模型,输出优化后神经网络模型。

步骤760,返回反馈信息,反馈信息用于确定第二可量化算子的量化位宽。

反馈信息可以是奖励函数的结果。奖励函数采用线性组合精度和整网推理时延的方式,也可以使用其它方式。

如此,通过在反馈信息中引入模型整网推理时延及精度进一步地提高确定第二可量化算子的量化位宽的准确性。

需要说明的是,上述实施例中生成等价算子库、确定算子耗时、量化神经网络模型的计算设备可以是同一物理设备,也可以是不同的物理设备。

在一些实施例中,由训练设备320生成等价算子库。由执行设备310对待优化神经网络模型进行算子集替换的优化操作。例如,执行设备310确定待优化神经网络模型中待替换的第一算子集以及第一算子集的等价算子集,则用等价算子集替换第一算子集。

在根据所确定的每个可量化算子的量化位宽在硬件平台上执行神经网络模型后,在神经网络模型的输出的性能参数没有达到目标性能参数时,则继续确定神经网络模型中每个可量化算子的量化位宽,并根据所确定的多个可量化算子的量化位宽在硬件平台上执行神经网络模型,直到神经网络模型的输出的性能参数达到目标性能参数。

例如,对于待优化神经网络模型中任意一个可能替换的算子和任意一个可能量化的算子,训练设备320可以根据上述步骤720至步骤760的方法进行量化。另外,若训练设备320对待优化神经网络模型已经执行了算子集替换和量化,得到中间模型,则训练设备320可以根据步骤720至步骤760,继续基于中间模型进行量化,遍历所有可能的算子,直到得到优化后神经网络模型。可理解的是,训练设备320根据步骤720至步骤760对待优化神经网络模型进行量化,可以得到多个中间模型,最终得到的优化后神经网络模型可以是多个中间模型中最优模型。

训练设备320对待优化神经网络模型进行量化优化后得到优化后神经网络模型,可以将优化后神经网络模型部署到执行设备310中,执行设备310中基于优化后神经网络模型处理应用数据。示例地,如图7所示,在步骤750之后,执行设备310执行步骤780。步骤770,向执行设备310部署优化后神经网络模型。步骤780,执行设备310基于优化后神经网络模型处理应用数据,以实现识别等应用功能。从而,降低执行设备310处理应用数据的时长。

相对于剪枝技术将神经网络模型重要性低的权重或者通道进行删除,减少神经网络模型的参数量,达到推理加速的效果。权重剪枝又称非结构化剪枝,剪枝完成后导致稀疏化问题,一般需要特定的支持稀疏化计算的硬件,否则不会有加速效果;通道剪枝又称结构化剪枝,结构化剪枝会带来明显的精度损失,剪枝完成后需要训练数据对神经网络模型进行训练来提升精度,不适用于无训练数据的场景。

本申请实施例提供的神经网络模型优化方法,基于多个可量化算子中的第一可量化算子在运行神经网络模型的硬件平台上运行时的算子耗时、神经网络模型在硬件平台上上一次运行后的性能参数和多个可量化算子中的第二可量化算子的算子参数确定第二可量化算子的量化位宽。第一可量化算子为第二可量化算子的前一个可量化算子。神经网络模型包含的多个可量化算子被顺次依据上述步骤执行。在依次确定多个可量化算子的量化位宽后,根据所确定的多个可量化算子中每个可量化算子的量化位宽在硬件平台上执行神经网络模型,并在神经网络模型的输出的性能参数达到目标性能参数时,完成对神经网络模型的优化,从而在确保神经网络模型处理数据的精度损失在预设范围内的前提下,显著地缩短实际运行神经网络模型的硬件平台上量化后神经网络模型处理数据的时长,缩小神经网络模型的大小,减小神经网络模型占用的内存容量。比如量化后神经网络模型与量化前比较损失为0.5%或1%。

本申请实施例提供的神经网络模型优化方法相较于现有量化位宽的搜索方法,搜索时间也大大降低(如resnet50的量化,时间由20h缩短至10h,耗时优提升50%)。本申请实施例提供的神经网络模型优化方法可以使用在需要自动压缩模型内存、加快推理速度的主流应用场景,应用范围广泛。

本申请实施例所述的应用场景可以包括目标检测、监控、自动驾驶、语音识别,商品推荐,机器翻译、AI商品分类和工业质量检测等等。

目标检测是计算机视觉重要的组成部分。计算机视觉是各个应用领域,如制造业、检验、文档分析和医疗诊断等领域中各种智能/自主系统中不可分割的一部分,它是一门关于如何运用照相机/摄像机和计算机来获取用户所需的被拍摄对象的数据与信息的学问。形象地说,就是给计算机安装上眼睛(照相机/摄像机)和大脑(算法)用来代替人眼对目标进行识别和测量等,从而使计算机能够感知环境。因为感知可以看作是从感官信号中提取信息,所以计算机视觉也可以看作是研究如何使人工系统从图像或多维数据中“感知”的科学。总的来说,计算机视觉就是用各种成像系统代替视觉器官获取输入信息,再由计算机来代替大脑对这些输入信息完成处理和解释。计算机视觉的最终研究目标就是使计算机能像人那样通过视觉观察和理解世界,具有自主适应环境的能力。

目标检测方法可以应用在人脸检测、车辆检测、行人计数、自动驾驶、安全系统和医疗领域等场景。例如,在自动驾驶场景中,自动驾驶汽车在行驶过程中,识别周围环境内的物体,以调整自动驾驶汽车的速度和方向,以便于自动驾驶汽车能够安全行驶,避免发生交通事故。物体可以是其它车辆、交通控制设备或者其它类型的物体。又如,在安全系统中,对大量的用户进行识别,辅助工作人员尽快地确定目标人物。通常,将输入数据(如图像或视频)输入到具有目标检测功能的神经网络,神经网络对输入数据进行特征提取,基于提取的特征进行目标检测,得到检测结果。

另外,执行设备310可以在执行步骤780,即执行设备310根据基于优化后神经网络模型处理应用数据之前,已经存储了优化后神经网络模型,因此,执行设备310可以从存储器中读取优化后神经网络模型,基于优化后神经网络模型处理应用数据。

可选地,执行设备310没有存储优化后神经网络模型,需要从服务器下载优化后神经网络模型或自行对神经网络模型进行优化。服务器可以是指云服务器。

示例地,图10为本申请提供的一种系统1000的结构示意图,如图10所示,系统1000可以是利用基础资源向用户提供云服务的实体。系统1000包括云数据中心1010。所述云数据中心1010包括设备资源池(包括计算资源1010、存储资源1012和网络资源1013)和云服务平台1020。云数据中心1010包括的计算资源1010可以是计算设备(例如服务器)。

执行设备1030上可以部署交互装置1031。交互装置1031可以是浏览器或者能够实现与云服务平台1020进行消息交互的应用。用户可以通过交互装置1031访问云服务平台1020,向云数据中心1010上传请求,请求对用于自动驾驶场景的神经网络模型进行优化。云数据中心1010接收到执行设备1030上传的请求后,对用户请求的神经网络模型进行优化,向执行设备1030反馈优化后的神经网络模型301。执行设备1030可以是智能终端或边缘小站。边缘小站可以处理自动驾驶汽车的应用数据,将处理结果传输给自动驾驶汽车。处理结果用于指示自动驾驶汽车运行操作。或者,执行设备1030还可以是自动驾驶汽车,边缘小站将优化后的神经网络模型301部署到自动驾驶汽车,自动驾驶汽车根据优化后神经网络模型处理应用数据,指示自动驾驶汽车运行操作。

可以理解的是,为了实现上述实施例中的功能,计算设备包括了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本申请中所公开的实施例描述的各示例的单元及方法步骤,本申请能够以硬件或硬件和计算机软件相结合的形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用场景和设计约束条件。

上文中结合图1至图10,详细描述了根据本实施例所提供的神经网络模型优化方法,下面将结合图11,描述根据本实施例所提供的神经网络模型优化装置。

图11为本实施例提供的可能的神经网络模型优化装置的结构示意图。这些神经网络模型优化装置可以用于实现上述方法实施例中训练设备320的功能,因此也能实现上述方法实施例所具备的有益效果。在本实施例中,该神经网络模型优化装置可以是如图7所示的训练设备320,还可以是应用于服务器的模块(如芯片)。

如图11所示,神经网络模型优化装置1100包括通信模块1110、耗时模块1120、量化位宽决策模块1130、训练模块1140和存储模块1150。神经网络模型优化装置1100用于实现上述图7中所示的方法实施例中计算设备的功能。

通信模块1110用于获取待优化的神经网络模型,所述神经网络模型包含多个可量化算子,所述多个可量化算子在所述神经网络模型中被顺次执行,以及将优化后神经网络模型部署到执行设备310。例如,通信模块1110用于执行图7中步骤710和步骤770。

耗时模块1120用于确定所述多个可量化算子中的第一可量化算子在运行所述神经网络模型的硬件平台上运行时的算子耗时。以及,耗时模块1120还用于当所述第一算子集耗时大于所述等价算子集耗时时,在根据所确定的所述多个算子的量化位宽在所述硬件平台上执行神经网络模型时,用所述等价算子集替换所述第一算子集。例如,耗时模块1120用于执行图7中步骤721、步骤722至步骤750。

量化位宽决策模块1130用于根据耗时模块1120确定的算子耗时确定第二可量化算子的量化位宽。例如,量化位宽决策模块1130用于执行图7中步骤723。

训练模块1140用于获取所述神经网络模型在所述硬件平台上上一次运行后的性能参数,以及在依次确定所述多个可量化算子的量化位宽后,根据所确定的所述多个可量化算子中每个可量化算子的量化位宽在所述硬件平台上执行神经网络模型,并在所述神经网络模型的输出的性能参数达到目标性能参数时,完成对所述神经网络模型的优化。例如,训练模块1140用于执行图7中步骤730和步骤760。

存储模块1150可以对应上述方法实施例中用于存储等价算子库等信息。

神经网络模型优化装置1100还可以包含搜索模块1160。搜索模块1160用于根据多个应用场景的神经网络模型获取算子集;以及,根据所述算子集搜索所述具有等价关系的算子集,以生成所述等价算子库。例如,搜索模块1160用于执行图4中步骤410至步骤420。

可选地,神经网络模型优化装置1100还可以包含更新模块1170。更新模块1170用新增的算子更新算子集和等价算子库。

应理解的是,本申请实施例的神经网络模型优化装置1100可以通过图形处理器(graphics processing unit,GPU)、神经网络处理器(neural network processing unit,NPU)、特定应用集成电路(application-specific integrated circuit,ASIC)实现,或可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD),现场可编程门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。也可以通过软件实现图4、图7或图8所示的神经网络模型优化方法时,神经网络模型优化装置1100及其各个模块也可以为软件模块。

根据本申请实施例的神经网络模型优化装置1100可对应于执行本申请实施例中描述的方法,并且神经网络模型优化装置1100中的各个单元的上述和其它操作和/或功能分别为了实现图4、图7或图8中的各个方法的相应流程,为了简洁,在此不再赘述。

图12为本实施例提供的一种计算设备1200的结构示意图。如图所示,计算设备1200包括处理器1210、总线1220、存储器1230、内存单元1250(也可以称为主存(mainmemory)单元)和通信接口1240。处理器1210、存储器1230、内存单元1250和通信接口1240通过总线1220相连。

应理解,在本实施例中,处理器1210可以是CPU,该处理器1210还可以是其他通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。

处理器还可以是GPU、NPU、微处理器、ASIC、或一个或多个用于控制本申请方案程序执行的集成电路。

通信接口1240用于实现计算设备1200与外部设备或器件的通信。在本实施例中,通信接口1240用于与其他计算设备进行数据交互。

总线1220可以包括一通路,用于在上述组件(如处理器1210、内存单元1250和存储器1230)之间传送信息。总线1220除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线1220。总线1220可以是快捷外围部件互连标准(Peripheral Component Interconnect Express,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。

作为一个示例,计算设备1200可以包括多个处理器。处理器可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的计算单元。处理器1210获取到待优化的神经网络模型后,确定神经网络模型包含的多个可量化算子中的第一可量化算子在运行神经网络模型的硬件平台上运行时的算子耗时,以及获取神经网络模型在硬件平台上上一次运行后的性能参数。进而,计算设备根据算子耗时、性能参数及多个可量化算子中的第二可量化算子的算子参数确定第二可量化算子的量化位宽。第一可量化算子为第二可量化算子的前一个可量化算子。神经网络模型包含的多个可量化算子被顺次依据上述步骤执行。在依次确定多个可量化算子的量化位宽后,根据所确定的多个可量化算子中每个可量化算子的量化位宽在硬件平台上执行神经网络模型,并在神经网络模型的输出的性能参数达到目标性能参数时,完成对神经网络模型的优化。另外,处理器1210可以调用存储器1230存储的等价算子库,在等价算子库中确认所述第一可量化算子对应的第一算子集是否存在等价算子集;当存在所述等价算子集时,则在所述硬件平台上分别运行所述第一算子集及所述等价算子集,确定第一算子集耗时及等价算子集耗时,当所述第一算子集耗时小于等于所述等价算子集耗时时,将所述第一算子集耗时作为所述算子耗时,当所述第一算子集耗时大于所述等价算子集耗时时,将所述等价算子集耗时作为所述算子耗时。

值得说明的是,图12中仅以计算设备1200包括1个处理器1210和1个存储器1230为例,此处,处理器1210和存储器1230分别用于指示一类器件或设备,具体实施例中,可以根据业务需求确定每种类型的器件或设备的数量。

内存单元1250可以对应上述方法实施例中用于存储等价算子库等信息的存储介质。内存单元1250可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。

存储器1230用于存储数据,可以是固态硬盘或机械硬盘。

上述计算设备1200可以是一个通用设备或者是一个专用设备。例如,计算设备1200可以是手机终端,平板电脑,笔记本电脑,VR设备、AR设备、混合现实(Mixed Reality,MR)设备或扩展现实(Extended Reality,ER)设备,车载终端等,还可以是边缘设备(例如,携带具有处理能力芯片的盒子)等。可选地,计算设备1200也可以是服务器或其他具有计算能力的设备。

应理解,根据本实施例的计算设备1200可对应于本实施例中的神经网络模型优化装置1100,并可以对应于执行根据图4、图7或图8中的相应主体,并且神经网络模型优化装置1100中的各个模块的上述和其它操作和/或功能分别为了实现图4、图7或图8中的相应流程,为了简洁,在此不再赘述。

本实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于计算设备中。当然,处理器和存储介质也可以作为分立组件存在于网络设备或终端设备中。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序或指令。在计算机上加载和执行所述计算机程序或指令时,全部或部分地执行本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其它可编程装置。所述计算机程序或指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序或指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带;也可以是光介质,例如,数字视频光盘(digital video disc,DVD);还可以是半导体介质,例如,固态硬盘(solid state drive,SSD)。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

相关技术
  • 神经网络模型压缩方法、装置和计算机设备
  • 神经网络模型压缩方法、装置和计算机设备
  • 神经网络模型的优化方法及装置、电子设备和存储介质
  • 神经网络模型的优化方法及装置、电子设备和存储介质
  • 神经网络模型建立方法及语音唤醒方法、装置、介质和设备
  • 卷积神经网络模型优化方法、装置、计算机设备及存储介质
  • 神经网络模型的优化方法、装置以及计算机存储介质
技术分类

06120116503593