神经网络模型的量化处理方法、装置、设备及存储介质与流程

专利2022-05-09  21


本申请涉及深度学习技术领域,尤其涉及一种神经网络模型的量化处理方法、装置、设备及存储介质。



背景技术:

神经网络模型包含大量的模型参数,这些模型参数多为浮点型,占用较多的存储空间。同时,神经网络模型基于浮点型的模型参数进行浮点运算,也会占用较多的计算资源。

通常,可对神经网络模型进行量化,以降低神经网络模型的数据量并提升神经网络模型的计算速度。

但是,现有技术提供的神经网络模型的量化方法具有灵活性较差的缺陷。因此,有待提出一种新的解决方案。



技术实现要素:

本申请的多个方面提供一种神经网络模型的量化处理方法、装置、设备及存储介质,用以提升神经网络模型的量化操作的灵活性。

本申请实施例提供一种神经网络模型的量化处理方法,包括:获取神经网络模型中的第一神经网络层所需的计算数据;根据所述计算数据,预测量化后的第一神经网络层发生算术溢出的频次;根据所述算术溢出的频次和所述计算数据,确定用于对所述第一神经网络层进行量化训练的目标计算数据,以对所述第一神经网络层进行量化训练。

本申请实施例还提供一种神经网络模型的量化处理装置,包括:输入模块,用于:获取神经网络模型中的第一神经网络层所需的计算数据;溢出预测模块,用于:根据所述计算数据,预测量化后的第一神经网络层发生算术溢出的频次;量化训练模块,用于:根据所述算术溢出的频次和所述计算数据,确定用于对所述第一神经网络层进行量化训练的目标计算数据,以对所述第一神经网络层进行量化训练。

本申请实施例还提供一种电子设备,包括:存储器和处理器;所述存储器用于存储一条或多条计算机指令;所述处理器用于执行所述一条或多条计算机指令以用于:执行本申请实施例提供的神经网络模型的量化处理方法。

本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现本申请实施例提供的神经网络模型的量化处理方法。

本申请实施例中,在对神经网络模型进行量化训练的过程中,预测神经网络模型中任一神经网络层量化后发生算术溢出的频次,并根据预测的算术溢出的频次确定用于对第一神经网络层进行量化训练的目标计算数据。基于这种方式,便于对量化后的神经网络模型的溢出情况进行控制,有利于提升神经网络模型的量化操作的灵活性。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为本申请一示例性实施例提供的神经网络模型的量化方法的流程示意图;

图2a为本申请另一示例性实施例提供的神经网络模型的量化方法的流程示意图;

图2b为本申请一示例性实施例提供的数据量化过程的示意图;

图3为本申请一示例性实施例提供的阶梯步长的示意图;

图4为本申请另一示例性实施例提供的阶梯步长的示意图;

图5为本申请一示例性实施例提供的通过缩放操作控制映射范围的示意图;

图6为本申请一示例性实施例提供的神经网络模型的数据量化装置的结构示意图;

图7为本申请一示例性实施例提供的包含溢出预测模块的卷积层的结构示意图;

图8为本申请一示例性实施例提供的电子设备的结构示意图。

具体实施方式

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

神经网络模型,指的是对人工神经网络进行训练得到的深度学习模型。神经网络模型包含多种模型参数,一般的模型参数及其运算过程采用浮点数(float数据类型)进行数值表示,比如多采用32bit(量度信息的最小单位)的单精度浮点数或者64bit的双精度浮点数进行表示。

模型量化(quantization),通常是指用整数替代神经网络模型中的浮点数进行数值表示,比如采用8bit或者16bit的定点整数进行数值表示。

神经网络模型的量化操作,包括训练时量化以及训练后量化。其中,训练后量化是指,训练得到采用浮点数表示数值的神经网络模型,接着,使用一批样本输入神经网络模型,统计神经网络模型的输出数据的数值范围,再根据输出数据的数值范围对神经网络模型进行量化处理。其中,训练时量化,是指在训练神经网络模型的过程中,模拟量化行为,采用浮点数来保存定点参数,在神经网络模型训练完成后投入使用时,直接使用保存的定点参数。

一些场景下,量化后的神经网络模型存在算术溢出(arithmeticoverflow)问题。算术溢出,是指计算机进行算术运算产生的结果超出机器所能表示的范围。即,表示输出数据的数值超出了一定长度的定点数能表达的范围。

针对上述算术溢出的技术问题,在本申请一些实施例中,提供了一种解决方案,在该解决方案中,在训练时量化的基础上进行了进一步改进,在神经网络模型中添加了溢出预测模块,该溢出预测模块可对量化后的神经网络模型的算术溢出情况进行预测,有利于降低量化后的神经网络模型出现算术溢出情况。以下将结合附图,详细说明本申请各实施例提供的技术方案。

图1为本申请一示例性实施例提供的神经网络模型的量化处理方法的流程示意图,如图1所示,该方法包括:

步骤101、获取神经网络模型中的第一神经网络层所需的计算数据。

步骤102、根据该计算数据,预测量化后的第一神经网络层发生算术溢出的频次。

步骤103、根据算术溢出的频次和该计算数据,确定用于对第一神经网络层进行量化训练的目标计算数据,以对第一神经网络层进行量化训练。

其中,第一神经网络层,指的是神经网络模型中的任一神经网络层,此处采用“第一”对神经网络层进行限定,仅用于方便描述和区分,并不对神经网络层的顺序或者位置构成任何限制。例如,针对卷积神经网络(convolutionalneuralnetworks,cnn)模型而言,第一神经网络层可包括:卷积神经网络中的输入层、任一卷积层、池化层、全连接层等等,本实施例不做限制。

其中,计算数据,指的是第一神经网络层完成本层计算所需的一种或多种数据,包括前一层传递来的数据,也可包括本层内的模型参数。例如,第一神经网络层实现为cnn中的任意卷积层时,该卷积层所需的计算数据可包括输入卷积层的图像数据以及用于图像特征提取的卷积核以及用于将本层输出数据传递至下一层的激活函数等等,不再赘述。

其中,根据该计算数据,预测量化后的第一神经网络层的输出数据发生算术溢出的频次的操作,可基于神经网络模型中的溢出预测模块实现。该溢出预测模块可感知量化后的神经网络模型的计算过程是否会出现算术溢出现象,并统计溢出频次,进而有利于进一步优化量化后的神经网络模型的精准度。

其中,目标计算数据,是指用于对第一神经网络层进行量化训练的数据,也就是实际参与第一神经网络层的量化训练过程的数据。该目标计算数据可根据第一神经网络层的输出数据的溢出情况进行调整。基于这种方式,可根据预测得到的量化后的神经网络模型的溢出情况,反向调整参与第一神经网络层的实际量化训练过程的计算数据,有利于降低训练完成后的神经网络模型发生算术溢出的概率。

在本实施例中,在对神经网络模型进行量化训练的过程中,预测神经网络模型中任一神经网络层量化后发生算术溢出的频次,并根据预测的算术溢出的频次确定用于对第一神经网络层进行量化训练的目标计算数据。基于这种方式,便于对量化后的神经网络模型的溢出情况进行控制,有利于提升神经网络模型的量化操作的灵活性。

图2a为本申请另一示例性实施例提供的神经网络模型的量化处理方法的流程示意图,如图2a所示,该方法包括:

步骤201、获取神经网络模型中的第一神经网络层所需的计算数据。

步骤202、根据该计算数据,预测量化后的第一神经网络层发生算术溢出的频次。

步骤203、判断该算术溢出的频次是否小于或者等于设定溢出频次阈值;若为是,执行步骤204,若为否,执行步骤205。

步骤204、若该算术溢出的频次小于或者等于设定溢出频次阈值,则将该计算数据作为目标计算数据,并根据该目标数据对第一神经网络层进行量化训练。

步骤205、若该算术溢出的频次大于设定溢出频次阈值,则对该计算数据进行调整,并根据调整后的计算数据执行步骤202。

在步骤201中,第一神经网络层所需的计算数据,可包括第一神经网络层的模型参数,以及,第一神经网络层的输入数据。当第一神经网络层不是神经网络模型中的首个神经网络层时,第一神经网络层的输入数据可以是第一神经网络层的前一神经网络层的输出数据。

其中,神经网络模型不同时,模型参数也不同。例如,针对cnn中的卷积层而言,模型参数可包括本层的权重、激活函数等。

在步骤202中,可根据该计算数据,预测量化后的第一神经网络层发生算术溢出的频次。

可选地,在本实施例中,可推理量化后的第一神经网络层的计算过程,并基于推理的结果获取算术溢出的频次。在深度学习中,推理,是指将训练后的神经网络模型投入使用环节,以使神经网络模型应用其学习到的性能。

可选地,在本步骤中,可推理对计算数据的量化操作,得到量化后的计算数据,并根据量化后的计算数据,推理量化后的第一神经网络层的计算过程,得到第一神经网络层的中间计算结果以及输出数据。

其中,输出数据指的是第一神经网络层需要传递至下一层的计算结果。通常,第一神经网络计算层的计算过程包括多次计算操作,在得到该输出数据之前,每次计算操作得到的结果,可被称为中间计算结果。

其中,对计算数据的量化操作,指的是将计算数据转化为定点整数的操作。可选地,该定点整数,可实现为设定位数的整型数据(int数据类型),例如,8位的整型数据、7位的整型数据等等。

可选地,首先可获取计算数据所属的数值范围。例如,可获取第一神经网络层的输入数据所属的数值范围,以及第一神经网络层的模型参数所属的数值范围。以下为描述方便,将输入数据所属的数值范围描述为[imin,imax],将模型参数所属的数值范围描述为[pmin,pmax]。

接着,可根据计算数据所属的数值范围以及设定位数的整型数据所属的数值范围,确定量化映射关系。以模型参数为例,量化映射关系可描述为:

其中,p指的是量化前浮点型的模型参数,p`指的量化后整数型的模型参数,2b整型数据的位数,int()表示求取整数的函数。

接着,根据该量化映射关系,将计算数据映射为设定位数的整型的计算数据。即,可将浮点型的输入数据和浮点型的模型参数,映射为设定位数的整型的输入数据和整型的模型参数。以下将结合具体的例子进行说明。

例如,浮点型的输入数据为:imin=0、imax=1.0,b=3,基于上述公式表达的映射关系,float:0可量化为int:0,float:0.5可量化为int:128,float:0.0039(1./255)可量化为int:1,float:[0,0.0039]范围内的值都可量化为int:1。

基于上述步骤,可量化得到设定位数的整型的模型参数以及设定位数的整型的输入数据,接下来,可推理量化后的第一神经网络层的计算过程。

可选地,对第一神经网络层量化后的计算过程进行推理时,可根据整型的模型参数和整型的输入数据,按照第一神经网络层的计算逻辑,对第一神经网络层量化后的计算过程进行整数运算。例如,第一神经网络层实现为cnn中的卷积层时,可根据量化后的整型的图像数据和权重参数,按照整数运算规则执行本层内的卷积计算过程,并获取卷积计算过程中产生的中间计算结果和最终计算得到的特征向量。

得到第一神经网络层的中间计算结果以及输出数据后,可判断中间计算结果是否发生算术溢出,并判断输出数据是否发生算术溢出。基于判断结果,可确定第一神经网络层发生算术溢出的频次。在本实施例中,可根据中间计算结果、输出数据以及设定的数据存储范围,计算该算术溢出的频次。例如,若某一中间计算结果超出设定的数据存储范围,则可记一次算术溢出;若输出数据超出设定的数据存储范围,则可记一次算术溢出。

可选地,该设定的数据存储范围可包括1-64位任意整型数据对应的数值范围。例如,可以是1位整型数据对应的数值范围,8位整型数据对应的数值范围,16位整型数据对应的数值范围,或者,32位整型数据对应的数值范围,本实施例包含但不限于此。

其中,中间计算结果对应数据存储范围以及输出数据对应的数据存储范围可以相同,也可以不同,本实施例不做限制。例如,在一些场景下,中间计算结果对应的存储范围可以是8bit的整型数据对应的数值范围,输出数据对应的存储范围可以是16bit的整形数据对应的数值范围。在又一些场景下,中间计算结果和输出数据对应的存储范围均可以是16bit的整型数据对应的数值范围,不再赘述。

例如,在一些典型的情况下,第一神经网络层的计算过程包括乘法和加法操作,如下述公式所示:

r=x1*w1 x2*w2 … xn*wn

其中,xn表示第n个输入数据,wn表示第一神经网络层的第n个权重参数,xn*wn表示执行第n个乘法操作得到的中间计算结果,r表示第一神经网络层的输出数据,n为正整数。应当理解,基于上述公式,每执行一次乘法操作后得到的结果,被称为中间计算结果,每执行一次加法操作得到的结果,也可被称为中间计算结果。例如,中间计算结果还可以为:x1*w1 x2*w2、x1*w1 x2*w2 x3*w3、x1*w1 x2*w2 … xn-1*wn-1等等,不再一一列举。

假设,量化后的模型参数w1、w2…wn以及量化后的输入数据x1、x2…xn均采用8bit整型表示。8bit整型数据对应的数值范围是[-127,128]。假设,x1、x2…xn的取值均为127,且w1、w2…wn的取值均为127。

若n=100,那么基于上述公式进行乘法和加法运算后,可得到100个127*127的相加的结果r=1,612,900。将该输出数据存储为16bit整型数据时,该输出数据r超出了16bit整型数据的对应的数值范围[-32768,32767],则可认为输出数据r发生了算术溢出。

将该输出数据存储为32bit整型数据时,若n足够大,则该输出数据r在一定概率上会超过int32对应的数值范围[-214783648, 2147483647],进而发生算术溢出。

若将中间计算结果存储为10bit整型数据,那么,若中间计算结果xn*wn超出了10bit整型数据对应的数值范围[-1024,1023],则可认为该中间计算结果发生了算术溢出。

在步骤203中,可选地,获取到算术溢出的频次后,可判断该算术溢出的频次是否小于或者等于设定溢出频次阈值。其中,设定溢出频次阈值可根据实际情况进行设置。该设定溢出频次阈值可表征对算术溢出的容忍度。若对算术溢出的容忍度较高,则可设置较大的溢出频次阈值,若对算出溢出的容忍度较低,则可设置较小的溢出频次阈值。

可选地,在一些实施例中,可设置该溢出频次阈值为零,以保证量化训练得到的神经网络模型的精准度。

在步骤204中,若算术溢出的频次小于或者等于设定溢出频次阈值,则可将该计算数据作为目标计算数据,并可根据该目标数据对第一神经网络层进行量化训练。

在步骤205中,若该算术溢出的频次大于设定溢出频次阈值,则可对计算数据进行调整,并根据调整后的计算数据重新回到步骤202以执行预测操作,直至预测得到的输出数据不再发生算术溢出。

在一些可选的实施方式中,对计算数据进行调整,可包括:采用新的数值较小的计算数据替换已有的计算数据,例如,可缩小输入数据的取值范围,或者可缩小模型参数的取值范围。

在另一些可选的实施方式中,对计算数据进行调整,可包括:按照设定的缩放倍数对计算数据进行缩放处理。以下将结合附图以及具体的例子,对缩放计算数据影响算术溢出的原理进行详细地说明。

应当理解,对数据进行量化,即为:将一定范围内连续的浮点数变化为离散的阶梯化的整数。相邻整数之间的阶梯步长,根据浮点数的上下限范围和量化操作对应的整数的映射范围确定。以下将结合具体的例子进行示例性说明。

假设,模型参数pmin=0.0,pmax=255.0。8bit无符号整型数据的数值范围为[0,255]。将模型参数映射为8bit无符号的整数时,阶梯步长(stride)=1。如图2b所示,253.0、253.1、253.2、253.3都可映射成整数的253。

6bit无符号整型数据的数值范围为[0,63]。若将上述模型参数映射为6bit无符号的整数时,阶梯步长=4,那么pmax=255.0会被映射为63,同时[252.0,255.0]之间的所有浮点数值也都会映射到63。

当浮点数的上下限范围相同时,将浮点数量化为8bit整型数据的阶梯步长可参考图3的示意,将浮点数量化为6bit整型数据的阶梯步长可参考图4的示意。基于图3和图4可知,待量化数据所属的数值范围相同时,整型数据对应的映射范围越大,离散整数的阶梯步长越小,待量化数据进行量化后得到的整型数据的取值范围越大。

为防止计算结果溢出,可适当增大阶梯步长,以缩小量化后的计算数据的取值范围。基于上述分析,增大阶梯步长的一种可选方式为:在整型数据对应的映射范围不变的情况下,增大待量化的浮点型的计算数据所属的数值范围。

可选地,在本实施例中,可对计算数据所属的数值范围进行缩放。

首先,可对计算数据进行统计,以统计得到计算数据的上限值和下限值,根据该上限值和下限值确定计算数据所属的数值范围。例如,可分别统计第一神经网络层的模型参数所属的数值范围[pmin,pmax],以及输入数据所属的数值范围[imin,imax]。

接着,可对计算数据所属的数值范围进行缩放。

如图5所示,假设pmin=-1,pmax=1,若将其映射为8bit整型数据,则阶梯步长为1/128。将其缩放4倍后,[4*pmin,4*pmax]=[-4,4]。将缩放后的范围映射到8bit整型数据后,阶梯步长为1/32,那么,[-1,1]的实际映射范围将缩小为[-32,31]。

为描述方便,缩放倍数可采用α表示。其中,缩放系数α的取值可以为整数,也可以包含小数,本实施例不做限制。当α的取值范围足够灵活时,可将计算数据映射到任意的整数范围内,极大提升了量化的灵活性。

可选地,在本实施例中,可按照第一缩放倍数,对第一神经网络层的模型参数进行缩放处理;或者,可按照第二缩放倍数对第一神经网络层的输入数据进行缩放处理。或者,可同时对模型参数和输入数据进行上述缩放处理,本实施例不做限制。

可选地,第一缩放倍数和第二缩放倍数可以相同也可以不同,二者可根据输出数据的算术溢出的频次和/或溢出量确定。当算术溢出的频次较多时,可设置较大的缩放倍数,当算术溢出的频次较小时,可设置较小的缩放倍数;或者,当算术溢出的溢出量较多时,可设置较大的缩放倍数,当算术溢出的溢出量较小时,可设置较小的缩放倍数,本实施例不做限制。

值得说明的是,在一种场景下,若预测得到第一神经网络层未发生算术溢出,且推理第一神经网络层的计算过程时,第一神经网络层的中间计算结果和输出数据所属的数值范围均远小于设定的数据存储范围,则可对第一神经网络层对应的模型参数和/或输入数据进行缩放处理。其中,缩放倍数可以设置在0到1之间,以缩小模型参数和/或输入数据。基于这种方式,可充分利并合理用设定的数据存储范围,有利于提升训练得到的模型的精度。

在本实施例中,通过改变计算数据所属的数值范围来控制量化的映射范围,可灵活地控制神经网络模型的溢出情况,有利于提升神经网络模型的量化操作的灵活性。

除此之外,本申请实施例提供的神经网络模型的量化方法中,预测第一神经网络层的计算结果的算术溢出的频次后,可根据算术溢出的频次确定目标计算数据,目标计算数据更适合于对神经网络模型进行量化训练,一方面,降低了训练完成后的神经网络模型在使用的过程中发生算术溢出的概率,提升生了量化模型的精准度;另一方面,预测溢出的过程和模型的实际训练任务相关,可在不发生溢出的前提下,将浮点型的计算数据映射至尽可能大的整数范围,能够在一定程度上避免模型被过度压缩。

需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤201至步骤204的执行主体可以为设备a;又比如,步骤201和202的执行主体可以为设备a,步骤203的执行主体可以为设备b;等等。

另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如201、202等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。

值得说明的是,本申请上述各实施例提供的神经网络模型的量化处理方法,可被封装为可供第三方使用的工具,例如saas(software-as-a-service,软件即服务)工具。可选地,该saas工具可实现为插件或者应用程序。基于该saas工具,第三方用户可通过便捷地使用神经网络模型的量化处理服务。

例如,在一些场景下,该saas工具可被部署在云平台,第三方用户可访问云平台,以在线使用该saas工具。基于该saas工具,第三方用户可在线量化训练神经网络模型,通过该saas工具实时预测神经网络模型的算术溢出情况,并可根据算术溢出情况对量化训练的过程进行调整。

还值得说明的是,本申请上述各实施例提供的神经网络模型的量化处理方法,可应用于多种不同的神经网络模型,例如,卷积神经网络(convolutionalneuralnetworks,cnn)模型、深度神经网络(deepneuralnetwork,dnn)模型、图卷积神经网络(graphconvolutionalnetworks,gcn)模型、循环神经网络(recurrentneuralnetwork,rnn)模型以及长短期记忆神经网络(longshort-termmemory,lstm)模型一种或多种,或者还可应用于上述一种或多种神经网络变形得到的其他神经网络模型。

在应用于不同的神经网络模型时,saas工具执行神经网络模型的量化处理方法所需的参数也不同。其中,该参数可包括:溢出频次阈值以及对计算数据进行调整所需的缩放倍数等等。

可选地,上述参数可由saas工具提供,也可由用户主动提供。例如,在一些场景下,saas工具可为不同类型的神经网络提供不同的默认参数。在另一些场景下,saas工具可通过与第三方用户进行交互,获取第三方用户提供的个性化定制的参数,并根据第三方用户提供的参数执行量化处理方法,不再赘述。

图6为本申请一示例性实施例提供的神经网络模型的量化处理装置,如图6所示,该装置包括:

输入模块61,用于:获取神经网络模型中的第一神经网络层所需的计算数据。

溢出预测模块62,用于:根据所述计算数据,预测量化后的第一神经网络层发生算术溢出的频次。

量化训练模块63,用于:根据所述算术溢出的频次和所述计算数据,确定用于对所述第一神经网络层进行量化训练的目标计算数据,以对所述第一神经网络层进行量化训练。

进一步可选地,溢出预测模块62,包括:量化子模块621。溢出预测模块62在根据所述计算数据,预测量化后的第一神经网络层发生算术溢出的频次时,具体用于:通过量化子模块621,推理对所述计算数据的量化操作,得到量化后的计算数据;通过计算子模块622,根据所述量化后的计算数据,推理量化后的第一神经网络层的计算过程,得到所述第一神经网络层的中间计算结果以及输出数据;根据所述中间计算结果、所述输出数据以及设定的数据存储范围,计算所述算术溢出的频次。

进一步可选地,量化子模块621在推理对所述计算数据的量化操作时,具体用于:根据所述计算数据所属的数值范围以及设定位数的整型数据所属的数值范围,确定量化映射关系;根据所述量化映射关系,将所述计算数据映射为所述设定位数的整型的计算数据。

进一步可选地,所述设定位数的整型的计算数据包括:整型的模型参数以及整型的输入数据;溢出预测模块62在根据所述量化后的计算数据,推理量化后的第一神经网络层的计算过程时,具体用于:通过计算子模块622,根据所述整型的模型参数和所述整型的输入数据,按照第一神经网络层的计算逻辑,对所述第一神经网络层量化后的计算过程进行整数计算。

进一步可选地,所述设定的数据存储范围包括:1-64位任意整型数据对应的数值范围。

进一步可选地,量化训练模块63在根据所述算术溢出的频次和所述计算数据,确定用于对所述第一神经网络层进行量化训练的目标计算数据时,具体用于:若所述算术溢出的频次小于或者等于设定溢出频次阈值,则将所述计算数据作为所述目标计算数据。

进一步可选地,溢出预测模块62,还包括:调整子模块623;调整子模块623,用于:在所述算术溢出的频次大于设定溢出频次阈值时,调整所述计算数据,以使溢出预测模块62根据调整后的所述计算数据执行所述预测的步骤。

进一步可选地,调整子模块623在对所述计算数据进行调整时,具体用于:按照设定的缩放倍数对所述计算数据所属的数值范围进行缩放处理。

进一步可选地,调整子模块623在按照设定的缩放倍数对所述计算数据所属的数值范围进行缩放处理时,执行以下至少一种操作:按照第一缩放倍数,对所述第一神经网络层的模型参数所属的数值范围进行缩放处理;按照第二缩放倍数对所述第一神经网络层的输入数据所属的数值范围进行缩放处理。

进一步可选地,所述第一缩放倍数和/或所述第二缩放倍数,根据所述算术溢出的频次确定。

以下将结合神经网络模型的结构,对量化处理装置进行进一步说明。

图7示意了对神经网络模型中的卷积层进行量化时的典型操作环节,如图7所示,溢出预测模块62可执行图7中的:缩放、量化、量化卷积以及计算算术溢出的频次n等环节。其中,量化卷积操作是指对量化后的输入数据执行设定整数位的卷积操作,并将计算结果存储为指定位数的整型数据。例如,输入数据为8bit整形数据,计算结果用16bit整数存储。除上述溢出预测模块62执行的环节之外,伪量化(fakequantization)、乘法、加法、卷积等其他环节为模型量化训练需执行的环节,此处不做赘述。

在模型量化训练的过程中,溢出预测模块62可感知溢出是否发生。其中,在量化环节,溢出预测模块62可根据输入数据的上限值、下限值,将float类型的输入数据量化为8bit的整数。以及,可根据权重的上限值、下限值,将float类型的权重量化为8bit的整数。接着,溢出预测模块62可在卷积-int16环节中,根据量化为8bit的输入数据和权重进行卷积计算,并将卷积计算的结果和int16的取值范围进行对比,以预测卷积层发生算术溢出的频次n。若算术溢出的频次n大于设定的溢出频次阈值,则溢出预测模块62可在缩放环节,相应地缩放输入数据的上下限范围,以及权重的上下限范围,并重新执行量化环节的操作,直至算术溢出的频次n小于或者等于设定的溢出频次阈值。

上述结构的优势在于,第一方面,通过缩放输入数据的上下限范围以及权重的上下限范围,达到控制量化映射范围的目的,克服采用固定bit进行量化操作的缺点,可将待量化的数据映射到任意的范围十分灵活。第二方面,溢出的控制和训练任务相关,可以做到在不溢出的前提下,将待量化的数据映射尽可能大的整数范围,从而能够保证模型的容量不被过度压缩。第三方面,溢出预测模块62可以和训练时量化的环节同时工作,能够保障量化模型精准度。

图8示意了本申请一示例性实施例提供的电子设备的结构示意图,如图8所示,该电子设备包括:存储器801、处理器802以及通信组件803。

存储器801,用于存储计算机程序,并可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。

其中,存储器801可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

处理器802,与存储器801耦合,用于执行存储器801中的计算机程序,以用于:获取神经网络模型中的第一神经网络层所需的计算数据;根据所述计算数据,预测量化后的第一神经网络层发生算术溢出的频次;根据所述算术溢出的频次和所述计算数据,确定用于对所述第一神经网络层进行量化训练的目标计算数据,以对所述第一神经网络层进行量化训练。

进一步可选地,处理器802在根据所述计算数据,预测量化后的第一神经网络层发生算术溢出的频次时,具体用于:推理对所述计算数据的量化操作,得到量化后的计算数据;根据所述量化后的计算数据,推理量化后的第一神经网络层的计算过程,得到所述第一神经网络层的中间计算结果以及输出数据;根据所述中间计算结果、所述输出数据以及设定的数据存储范围,计算所述算术溢出的频次。

进一步可选地,处理器802在推理对所述计算数据的量化操作时,具体用于:根据所述计算数据所属的数值范围以及设定位数的整型数据所属的数值范围,确定量化映射关系;根据所述量化映射关系,将所述计算数据映射为所述设定位数的整型的计算数据。

进一步可选地,所述设定位数的整型的计算数据包括:整型的模型参数以及整型的输入数据;处理器802在根据所述量化后的计算数据,推理量化后的第一神经网络层的计算过程时,具体用于:根据所述整型的模型参数和所述整型的输入数据,按照第一神经网络层的计算逻辑,对所述第一神经网络层量化后的计算过程进行整数计算。

进一步可选地,所述设定的数据存储范围包括:1-64位任意整数。

进一步可选地,处理器802在根据所述算术溢出的频次和所述计算数据,确定用于对所述第一神经网络层进行量化训练的目标计算数据时,具体用于:若所述算术溢出的频次小于或者等于设定溢出频次阈值,则将所述计算数据作为所述目标计算数据;若所述算术溢出的频次大于设定溢出频次阈值,则对所述计算数据进行调整,并根据调整后的所述计算数据重新执行所述预测的步骤。

进一步可选地,处理器802在对所述计算数据进行调整时,具体用于:按照设定的缩放倍数对所述计算数据所属的数值范围进行缩放处理。

进一步可选地,处理器802在按照设定的缩放倍数对所述计算数据所属的数值范围进行缩放处理时,执行以下至少一种操作:按照第一缩放倍数,对所述第一神经网络层的模型参数所属的数值范围进行缩放处理;按照第二缩放倍数对所述第一神经网络层的输入数据所属的数值范围进行缩放处理。

进一步可选地,所述第一缩放倍数和/或所述第二缩放倍数,根据所述算术溢出的频次确定。

进一步,如图8所示,该电子设备还包括:显示器804、电源组件805等其它组件。图8中仅示意性给出部分组件,并不意味着电子设备只包括图8所示组件。

其中,通信组件803被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如wifi,2g、3g、4g或5g,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件可基于近场通信(nfc)技术、射频识别(rfid)技术、红外数据协会(irda)技术、超宽带(uwb)技术、蓝牙(bt)技术和其他技术来实现。

其中,显示器804包括屏幕,其屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。

其中,电源组件805,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。

本实施例中,在对神经网络模型进行量化训练的过程中,预测神经网络模型中任一神经网络层量化后发生算术溢出的频次,并根据预测的算术溢出的频次确定用于对第一神经网络层进行量化训练的目标计算数据。基于这种方式,便于对量化后的神经网络模型的溢出情况进行控制,有利于提升神经网络模型的量化操作的灵活性。

相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由电子设备执行的各步骤。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

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

最新回复(0)