量化实现方法及相关产品
技术领域
本申请涉及数据处理领域,尤其涉及一种量化实现方法及相关产品。
背景技术
随着信息技术的不断发展和人们日益增长的需求,人们对信息及时性的要求越来越高了。为了提升深度神经网络在MLU100上推理的运行效率,MLU100支持int8推理运算。现有的大部分深度神经网络采用浮点数(fp32)进行运算和存储,因此需要将现有的神经网络模型量化为MLU100支持的int8模型。现有的量化实现方法一般采取绝对值最大值不失真准则,即将绝对值最大值映射到int8的最大值上,这种量化实现方法与量化时网络的输入图片相关,量化出的网络精度具有一定随机性,导致量化精度较低,因此,如何提升网络量化精度的问题亟待解决。
发明内容
本申请实施例提供一种量化实现方法及相关产品,能够提升网络量化精度。
第一方面,本申请实施例提供一种量化实现方法,所述方法包括:
根据目标数据集,确定待量化目标网络层输入数据中的元素值的最大绝对值;
根据所述最大绝对值确定M个间隔,将所述目标网络层的绝对值化后的输入数据的元素值放入所述M个间隔中;
根据所述M个间隔内的元素值生成Q个量化分布,Q为大于1的整数;
获取所述目标网络层的输入数据对应的原始量化分布;
依据所述Q个量化分布、所述原始量化分布确定所述目标网络层的量化参数。
在一个可能的示例中,所述根据所述M个间隔内的元素值生成Q个量化分布,包括:
获取P个截断阈值,所述截断阈值为所述M个间隔中任一间隔的端点值或者间隔的端点值的均值,P为正整数;
基于所述P个截断阈值将所述目标网络层划分为Q个区间,每一区间包括至少一个间隔;
基于所述Q个区间中每一区间中的元素值生成Q个量化分布,每一区间对应一个量化分布。
在一个可能的示例中,所述依据所述Q个量化分布、所述原始量化分布确定所述目标网络层的量化参数,包括:
确定所述Q个量化分布中每一量化分布与所述原始量化分布之间的相似度值,得到Q个相似度值;
从所述Q个相似度值中选取最大相似度值,并根据所述最大相似度值确定目标截断值;
根据所述目标截断值确定所述目标网络层的量化参数。
在一个可能的示例中,所述量化参数包括定点型数据的小数点位置和缩放因子,所述根据所述目标截断值确定所述目标网络层的量化参数,包括:
根据所述目标截断值确定所述小数点位置;
根据所述小数点位置、所述目标截断值确定所述缩放因子。
在一个可能的示例中,所述确定所述Q个量化分布与所述原始量化分布之间的相似度值,包括:
采用欧氏距离或者相对熵确定所述Q个量化分布中每一量化分布与所述原始量化分布之间的相似度值。
在一个可能的示例中,所述目标网络层包括以下网络层中的至少一种:卷积层、全连接层、反卷积层、归一化层。
在一个可能的示例中,所述间隔的间隔大小为128的整数倍。
在一个可能的示例中,所述根据目标数据集,确定待量化目标网络层输入数据中的最大绝对值,包括:
将所述目标数据集输入到预设浮点型神经网络模型进行正向运算,对所述目标网络层中的输入数据的元素值进行绝对值化处理,并选取元素值的最大值作为最大绝对值。
在一个可能的示例中,所述方法还包括:
根据所述量化参数将所述目标网络层的输入数据中全部或者部分执行浮点型数据转化为定点型数据,得到全部定点数据或者混合数据,该混合数据包括:部分定点数据以及部分浮点数据。
在一个可能的示例中,所述浮点型数据为以下一种:32位浮点型数据、64位浮点型数据。
在一个可能的示例中,所述定点型数据为以下一种:8位定点型数据、16位定点型数据。
第二方面,本申请实施例还提供了一种量化实现装置,所述装置包括:第一确定单元、生成单元、获取单元和第二确定单元,其中,
所述第一确定单元,用于根据目标数据集,确定待量化目标网络层输入数据中的元素值的最大绝对值;以及根据所述最大绝对值确定M个间隔,将所述目标网络层的绝对值化后的输入数据的元素值放入所述M个间隔中;
所述生成单元,用于根据所述M个间隔内的元素值生成Q个量化分布,Q为大于1的整数;
所述获取单元,用于获取所述目标网络层的输入数据对应的原始量化分布;
所述第二确定单元,用于依据所述Q个量化分布、所述原始量化分布确定所述目标网络层的量化参数。
第三方面,本申请实施例还提供了一种神经网络芯片,所述机器学习芯片包括如第二方面所述的量化实现装置,或者,用于执行如第一方面所述的方法。
第四方面,本申请实施例还提供了一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如第三方面所述的神经网络芯片;
其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述芯片与外部设备之间的数据传输;
所述控制器件,用于对所述芯片的状态进行监控。
第五方面,本申请实施例还提供了一种电子设备,所述电子设备包括如第三方面所述的芯片,或者,所述电子设备包括如第四方面所述的板卡,或者,用于执行如第一方面所述的方法。
第六方面,本申请实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。
第七方面,本申请实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
可以看出,在本申请实施例的方案中,根据目标数据集,确定待量化目标网络层输入数据中的元素值的最大绝对值,根据最大绝对值确定M个间隔,将目标网络层的绝对值化后的输入数据的元素值放入M个间隔中,根据M个间隔内的元素值生成Q个量化分布,Q为大于1的整数,获取目标网络层的输入数据对应的原始量化分布,依据Q个量化分布、原始量化分布确定目标网络层的量化参数,由于M个间隔本身容纳了所有的输入数据,利用量化分布之间的相似性从这些输入数据中选取最能代表整个输入数据的输入数据,确定目标截断值,这样的目标截断值更能反映输入数据的特性,进而,能够基于目标截断值得到精准的量化参数,有助于提升网络模型的量化精度。
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A为本申请实施例提供的一种量化实现方法的结构示意图;
图1B为本申请实施例提供的一种数据间隔实现演示示意图;
图1C为本申请实施例提供的一种截断阈值实现演示示意图;
图2为本申请实施例提供的另一种量化实现方法的结构示意图;
图3为本申请实施例提供的另一种量化实现方法的结构示意图;
图4是本申请实施例提供的一种电子设备的结构示意图;
图5A是本申请实施例提供的一种量化实现装置的功能单元组成框图;
图5B是本申请实施例提供的另一种量化实现装置的功能单元组成框图。
具体实施方式
以下分别进行详细说明。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
电子设备可以包括各种具有无线通信功能的手持设备、车载设备、无线耳机、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(userequipment,UE),移动台(mobile station,MS),终端设备(terminal device)等等,电子设备例如可以为智能手机、平板电脑、耳机盒等等。为方便描述,上面提到的设备统称为电子设备。
上述电子设备可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
请参阅图1A,图1A是本申请实施例提供的一种量化实现方法的流程示意图,如图所示,本量化实现方法包括步骤101-步骤105,具体如下:
101、根据目标数据集,确定待量化目标网络层输入数据中的元素值的最大绝对值。
其中,目标数据集可以为一维数据集、二维数据集或者三维数据集等等,在此不作限定。例如,目标数据集为图片,目标数据集为预设网络下的数据集,预设网络为以下至少一种:分类网络、检测网络等等,在此不作限定。目标数据集的数据量处于预设范围,预设范围可以由用户自行设置或者***默认,以图片为例,例如500-1000张图片。具体实现中,可以将目标数据集输入到神经网络模型中进行正向运算,再获取其输入数据的元素值的最大绝对值。
在一个可能的示例中,上述步骤101,根据目标数据集,确定待量化目标网络层输入数据中的最大绝对值,可按照如下方式实施:
将所述目标数据集输入到预设浮点型神经网络模型进行正向运算,对所述目标网络层中的输入数据的元素值进行绝对值化处理,并选取元素值的最大值作为最大绝对值。
其中,上述预设浮点型神经网络模型可以预先设置或者***默认,具体地,可以响应正向计算指令,将目标数据集输入到预设浮点型神经网络模型进行正向运算,上述正向计算指令包括但不限于:卷积运算指令、矩阵乘法指令、向量乘法指令、激活指令等等,本申请具体实施方式并不限制上述正向计算指令的具体表现形式或具体的类别,在正向运算之后,进一步可以获取待量化目标网络层中的输入数据的元素值进行绝对值化处理,即将目标网络层中的所有输入数据的元素值均取绝对值,得到绝对值化后的输入数据的元素值,并从该绝对值化后的输入数据的元素值中选取最大绝对值,以500张图片为例,最大绝对值可以为该500张图片输入到预设浮点型神经网络模型进行正向运算,此时,输入数据对应的最大绝对值。
在一个可能的示例中,上述浮点数据类型可为以下至少一种:32位浮点型数据、64位浮点型数据等等,在此不做限定。
如此,可以将32位浮点型数据转化为16位定点型数据,或者,可以将64位浮点型数据转化为16位定点型数据,或者,将32位浮点型数据转化为8位定点型数据,或者,可以将64位浮点型数据转化为8位定点型数据等等。
在一个可能的示例中,所述目标网络层包括以下网络层中的至少一种:卷积层、全连接层、反卷积层、归一化层。
其中,目标网络层可以为一层或者多层,本申请实施例中,可以将卷积层、全连接层或者反卷积层中的一层或者多层作为待量化目标网络层,利用本申请实施例中的量化实现方法进行量化。
如此,可以实现对预设浮点型神经网络模型中的一个或者多个网络层进行量化,例如,当卷积层包括4层时,即N为4,可以利用本申请实施例中的量化实现方法,对其中的1层卷积层、2层卷积层等进行量化,也可以依据实际情况确定。
102、根据所述最大绝对值确定M个间隔,将所述目标网络层的绝对值化后的输入数据的元素值放入所述M个间隔中。
其中,最大绝对值可以记为MAX,间隔大小可为128的整数倍,如间隔大小为1920时,共有M=MAX/1920个间隔,具体地,0~MAX/1920,MAX/1920~2*MAX/1920,2*MAX/1920~3*MAX/1920,…(i-1)*MAX/1920~i*MAX/1920、…、((MAX/1920)-1)*MAX/1920~MAX,然后,可以将目标网络层的绝对值化后的输入数据的元素值放入1920个间隔中。如图1B所示,基于MAX,将输入数据的元素值划分为M个间隔,如,其中的一个间隔可以为0~MAX/M,以此类推。
在一个可能的示例中,M个间隔中每个间隔之间的等距间隔是相等或者不等距间隔,具体地,可以依据实际具体情况而定。
103、根据所述M个间隔内的元素值生成Q个量化分布,Q为大于1的整数。
其中,M个间隔中每个间隔包含大量的元素值,基于元素值能够生成量化分布,具体地,可以将M个间隔划分为Q个区间,基于每个区间的元素值则可以生成一个量化分布,如此,可以得到Q个量化分布。
在一个可能的示例中,上述步骤103,根据所述M个间隔内的元素值生成Q个量化分布,可包括如下步骤:
31、获取P个截断阈值,所述截断阈值为所述M个间隔中任一间隔的端点值或者间隔的端点值的均值,P为正整数;
32、基于所述P个截断阈值将所述目标网络层划分为Q个区间,每一区间包括至少一个间隔;
33、基于所述Q个区间中每一区间中的元素值生成Q个量化分布,每一区间对应一个量化分布。
其中,P个截断阈值可以由用户自行设置或者***默认。截断阈值可以为M个间隔的端点值或者端点值的均值,截断阈值可以不包括0以及最大绝对值,当然,为了更好地让区间具备代表性,截断阈值可以从M个间隔中第a个间隔开始取值,a为正整数。例如,可以从M个间隔的端点值中取P个端点值,基于P个截断阈值可以将目标网络层划分为Q个区间,每一区间至少包括一个间隔,基于Q个区间中每一区间中的元素值可以生成Q个量化分布,即每一区间可以对应一个量化分布,如此,可以由间隔转化为区间,基于区间内的元素值生成相应的量化分布,有助于后续找到与原始分布最相似的量化分布。举例说明下,在图1B基础上,请参照图1C,黑色实心圆点代表截断阈值,两个相邻截断阈值之间可以构成一个区间,基于不同的截断阈值,可以划分为多个不同的区间。
104、获取所述目标网络层的输入数据对应的原始量化分布。
其中,可以基于目标网络层的输入数据的元素值,生成其相应的原始量化分布。
105、依据所述Q个量化分布、所述原始量化分布确定所述目标网络层的量化参数。
其中,本申请实施例中量化参数可以为以下至少一种:定点型数据的小数点位置(记作position)和缩放因子(记作scale)。上述定点型数据可为以下至少一种:8位定点型数据、16位定点型数据等等,在此不做限定,基于上述量化参数能够将浮点型数据转化成定点型数据。
可选地,上述步骤105,依据所述Q个量化分布、所述原始量化分布确定所述目标网络层的量化参数,可包括如下步骤:
51、确定所述Q个量化分布中每一量化分布与所述原始量化分布之间的相似度值,得到Q个相似度值;
52、从所述Q个相似度值中选取最大相似度值,并根据所述最大相似度值确定目标截断值;
53、根据所述目标截断值确定所述目标网络层的量化参数。
其中,最大相似度值与目标截断值相对应,例如,可以获取该最大相似度值对应的目标量化分布,基于该目标量化分布确定对应的目标区间,将该目标区间对应的截断阈值(如对应的最大值)作为目标截断值,采用上述方式,由于上述M个间隔本身容纳了所有的输入数据,利用量化分布之间的相似性从这些输入数据中选取最能代表整个输入数据的输入数据,确定目标截断值,这样的目标截断值更能反映输入数据的特性,进而,能够基于目标截断值得到精准的量化参数。
在一个可能的示例中,所述量化参数包括定点型数据的小数点位置和缩放因子,上述步骤53,根据所述目标截断值确定所述目标网络层的量化参数,可包括如下步骤:
531、根据所述目标截断值确定所述小数点位置;
532、根据所述小数点位置、所述目标截断值确定所述缩放因子。
其中,目标截断值可以记作|T|,具体实现中,可以通过目标截断值确定小数点位置position,再由小数点位置position、目标截断值确定缩放因子scale,由于上述M个间隔本身容纳了所有的输入数据,从这些输入数据中选取最能代表整个输入数据的输入数据,确定目标截断值,这样的目标截断值更能反映输入数据的特性,进而,能够基于目标截断值得到精准的量化参数。
具体地,可以按照如下公式,通过截断值|T|计算量化position和scale公式如下:
在一个可能的示例中,上述步骤51,确定所述Q个量化分布与所述原始量化分布之间的相似度值,可按照如下方式实施:
采用欧氏距离或者相对熵确定所述Q个量化分布中每一量化分布与所述原始量化分布之间的相似度值。
具体地,可以采用欧氏距离计算Q个量化分布中每一量化分布与原始量化分布之间的相似度值,欧氏距离公式具体如下:
其中,N为间隔个数,N可以由用户自行设置或者***默认,例如,N可以为128的整数倍,x1表示原始量化分布,x2表示Q个量化分布中的任一量化分布,具体运算过程中,将量化分布x1、x2分别划分为N个间隔,x1k为量化分布x1的第k个间隔内的元素值对应的欧式距离值,x2k为量化分布x2的第k个间隔内的元素值对应的欧式距离值,D12为量化分布x1、x2之间的欧式距离值。
或者,可以采用相对熵计算Q个量化分布中每一量化分布与原始量化分布之间的相似度值,相对熵,又称之为KL散度,其公式具体如下:
其中,N为间隔个数,N可以由用户自行设置或者***默认,例如,N可以为128的整数倍,x表示原始量化分布,y表示Q个量化分布中的任一量化分布,具体运算过程中,将量化分布x、y分别划分为N个间隔,p(xi)为原始量化分布在第i个间隔内的元素分布概率,即第i个间隔内的元素数量与原始量化分布的元素的总数量之间的比值,p(yi)为量化分布y在第i个间隔内的元素分布概率,即第i个间隔内的元素数量与原始量化分布的元素的总数量之间的比值,DKL(x||y)为量化分布x、y之间的相对熵。
在一个可能的示例中,上述步骤105之后,还可以包括如下步骤:
根据所述量化参数将所述目标网络层的输入数据中全部或者部分执行浮点型数据转化为定点型数据,得到全部定点数据或者混合数据,该混合数据包括:部分定点数据以及部分浮点数据。
其中,基于上述量化参数可以将目标网络层的输入数据中全部或者部分执行浮点型数据转化为定位型数据,得到全部定点数据和混合数据,混合数据即包括部分定点数据和部分浮点数据,如此,能够让部分或者全部浮点型数据转换为定点型数据。具体地,以32位浮点型数据为例,可以将全部32位浮点型数据转化为16位定点型数据,或者部分32位浮点型数据转化为16位浮点型数据。
在一个可能的示例中,假设目标网络层为第i层,上述步骤,根据所述量化参数将所述目标网络层的输入数据中全部或者部分执行浮点型数据转化为定点型数据,得到全部定点数据或者混合数据,可按照如下方式实施:
解析该第i层计算指令得到多个正向运算指令,将该第i层输入神经元数据以及第i层权值数据中的全部或部分通过量化参数执行浮点型数据转化为定点型数据执行浮点类型与定点类型转换得到全部定点数据或混合数据,该混合数据包括:部分定点数据以及部分浮点数据;
依据多个正向运算指令对全部定点数据执行定点运算或对混合数据执行混合运算得到第i层的正向输出结果。
可选地,上述量化参数包括定点数的小数点位置或者缩放因子,在通过量化参数执行浮点型数据转化为定点型数据方面,包括如下步骤;
基于量化参数,采用如下公式将浮点型数据转化为定点型数据:
当量化参数仅包括小数点位置,则计算公式为:
浮点型数据=定点型数据×2^position;
当量化参数仅包括缩放因子,则计算公式为:
浮点型数据=定点型数据×scale;
当量化参数包括小数点位置和缩放因子,则计算公式为:
浮点型数据=(定点型数据×2^position)/scale;
其中,position表示定点型数据的小数点位置,scale表示缩放因子。
以fp32模型量化为int8为例,fp32模型量化为int8模型的过程相当于信息再编码,将使用fp32的张量tensor转换为使用int8表示的tensor,将fp32转换为int8的操作需要针对可量化层的输入张量(tensor)和权重参数进行,对于权重参数使用最大绝对值映射对精度无影响,而对于输入张量,经过大量实验,发现提前截断能够改善模型精度,因此,截断值的选取决定了量化模型的实现精度,基于上述本申请实施例,能够在不需要量化重训练情况下,通过本申请实施例所提供的方法能够得到与浮点型相当的量化模型,另外,对比于相关技术中采用绝对值最大量化的模型,本申请实施例中的模型精度更高、更稳定。
可以看出,在本申请实施例的方案中,根据目标数据集,确定待量化目标网络层输入数据中的元素值的最大绝对值,根据最大绝对值确定M个间隔,将目标网络层的绝对值化后的输入数据的元素值放入M个间隔中,根据M个间隔内的元素值生成Q个量化分布,Q为大于1的整数,获取目标网络层的输入数据对应的原始量化分布,依据Q个量化分布、原始量化分布确定目标网络层的量化参数,由于M个间隔本身容纳了所有的输入数据,利用量化分布之间的相似性从这些输入数据中选取最能代表整个输入数据的输入数据,确定目标截断值,这样的目标截断值更能反映输入数据的特性,进而,能够基于目标截断值得到精准的量化参数,有助于提升网络模型的量化精度。
与上述图1A所示的实施例一致地,请参阅图2,图2是本申请实施例提供的一种量化实现方法的流程示意图,所述方法应用于脉冲神经网络,该脉冲神经网络包括时钟神经元,所述脉冲神经网络包括时钟神经元,如图所示,本量化实现方法包括:
201、根据目标数据集,确定待量化目标网络层输入数据中的元素值的最大绝对值。
202、根据所述最大绝对值确定M个间隔,将所述目标网络层的绝对值化后的输入数据的元素值放入所述M个间隔中。
203、根据所述M个间隔内的元素值生成Q个量化分布,Q为大于1的整数。
204、获取所述目标网络层的输入数据对应的原始量化分布。
205、依据所述Q个量化分布、所述原始量化分布确定所述目标网络层的量化参数。
206、根据所述量化参数将所述目标网络层的输入数据中全部或者部分执行浮点型数据转化为定点型数据,得到全部定点数据或者混合数据,该混合数据包括:部分定点数据以及部分浮点数据。
其中,上述步骤201-步骤206的具体描述可以参照上述图1A所描述的量化实现方法的相应步骤,在此不再赘述。
可以看出,在本申请实施例的方案中,根据目标数据集,确定待量化目标网络层输入数据中的元素值的最大绝对值,根据最大绝对值确定M个间隔,将目标网络层的绝对值化后的输入数据的元素值放入M个间隔中,根据M个间隔内的元素值生成Q个量化分布,Q为大于1的整数,获取目标网络层的输入数据对应的原始量化分布,依据Q个量化分布、原始量化分布确定目标网络层的量化参数,根据量化参数将目标网络层的输入数据中全部或者部分执行浮点型数据转化为定点型数据,得到全部定点数据或者混合数据,该混合数据包括:部分定点数据以及部分浮点数据,由于M个间隔本身容纳了所有的输入数据,利用量化分布之间的相似性从这些输入数据中选取最能代表整个输入数据的输入数据,确定目标截断值,这样的目标截断值更能反映输入数据的特性,进而,能够基于目标截断值得到精准的量化参数,提升了网络模型的量化精度。
与上述图1A所示的实施例一致地,请参阅图3,图3是本申请实施例提供的一种量化实现方法的流程示意图,如图所示,本量化实现方法包括:
301、根据目标数据集,确定待量化目标网络层输入数据中的元素值的最大绝对值。
302、根据所述最大绝对值确定M个间隔,将所述目标网络层的绝对值化后的输入数据的元素值放入所述M个间隔中。
303、根据所述M个间隔内的元素值生成Q个量化分布,Q为大于1的整数。
304、获取所述目标网络层的输入数据对应的原始量化分布。
305、确定所述Q个量化分布中每一量化分布与所述原始量化分布之间的相似度值,得到Q个相似度值。
306、从所述Q个相似度值中选取最大相似度值,并获取该最大相似度值对应的目标量化分布,基于该目标量化分布确定对应的目标区间,将该目标区间对应的最大值作为目标截断值。
307、根据所述目标截断值确定小数点位置。
308、根据所述小数点位置、所述目标截断值确定缩放因子,基于所述小数点位置、所述缩放因子,将所述目标网络层的输入数据中全部或者部分执行浮点型数据转化为定点型数据。
其中,上述步骤301-步骤308的具体描述可以参照上述图1A所描述的量化实现方法的相应步骤,在此不再赘述。
可以看出,在本申请实施例的方案中,由于M个间隔本身容纳了所有的输入数据,利用量化分布之间的相似性从这些输入数据中选取最能代表整个输入数据的输入数据,确定目标截断值,这样的目标截断值更能反映输入数据的特性,进而,能够基于目标截断值得到精准的量化参数,提升了网络模型的量化精度。
与上述实施例一致地,请参阅图4,图4是本申请实施例提供的一种电子设备的结构示意图,如图所示,该电子设备包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,本申请实施例中,上述程序包括用于执行以下步骤的指令:
根据目标数据集,确定待量化目标网络层输入数据中的元素值的最大绝对值;
根据所述最大绝对值确定M个间隔,将所述目标网络层的绝对值化后的输入数据的元素值放入所述M个间隔中;
根据所述M个间隔内的元素值生成Q个量化分布,Q为大于1的整数;
获取所述目标网络层的输入数据对应的原始量化分布;
依据所述Q个量化分布、所述原始量化分布确定所述目标网络层的量化参数。
可以看出,在本申请实施例的方案中所描述的电子设备,根据目标数据集,确定待量化目标网络层输入数据中的元素值的最大绝对值,根据最大绝对值确定M个间隔,将目标网络层的绝对值化后的输入数据的元素值放入M个间隔中,根据M个间隔内的元素值生成Q个量化分布,Q为大于1的整数,获取目标网络层的输入数据对应的原始量化分布,依据Q个量化分布、原始量化分布确定目标网络层的量化参数,由于M个间隔本身容纳了所有的输入数据,利用量化分布之间的相似性从这些输入数据中选取最能代表整个输入数据的输入数据,确定目标截断值,这样的目标截断值更能反映输入数据的特性,进而,能够基于目标截断值得到精准的量化参数,有助于提升网络模型的量化精度。
在一个可能的示例中,在所述根据所述M个间隔内的元素值生成Q个量化分布方面,上述程序包括用于执行以下步骤的指令:
获取P个截断阈值,所述截断阈值为所述M个间隔中任一间隔的端点值或者间隔的端点值的均值,P为正整数;
基于所述P个截断阈值将所述目标网络层划分为Q个区间,每一区间包括至少一个间隔;
基于所述Q个区间中每一区间中的元素值生成Q个量化分布,每一区间对应一个量化分布。
在一个可能的示例中,在所述依据所述Q个量化分布、所述原始量化分布确定所述目标网络层的量化参数方面,上述程序包括用于执行以下步骤的指令:
确定所述Q个量化分布中每一量化分布与所述原始量化分布之间的相似度值,得到Q个相似度值;
从所述Q个相似度值中选取最大相似度值,并根据所述最大相似度值确定目标截断值;
根据所述目标截断值确定所述目标网络层的量化参数。
在一个可能的示例中,所述量化参数包括定点型数据的小数点位置和缩放因子,在所述根据所述目标截断值确定所述目标网络层的量化参数方面,上述程序包括用于执行以下步骤的指令:
根据所述目标截断值确定所述小数点位置;
根据所述小数点位置、所述目标截断值确定所述缩放因子。
在一个可能的示例中,在所述确定所述Q个量化分布与所述原始量化分布之间的相似度值方面,上述程序包括用于执行以下步骤的指令:
采用欧氏距离或者相对熵确定所述Q个量化分布中每一量化分布与所述原始量化分布之间的相似度值。
在一个可能的示例中,所述目标网络层包括以下网络层中的至少一种:卷积层、全连接层、反卷积层、归一化层。
在一个可能的示例中,所述间隔的间隔大小为128的整数倍。
在一个可能的示例中,在所述根据目标数据集,确定待量化目标网络层输入数据中的最大绝对值方面,上述程序包括用于执行以下步骤的指令:
将所述目标数据集输入到预设浮点型神经网络模型进行正向运算,对所述目标网络层中的输入数据的元素值进行绝对值化处理,并选取元素值的最大值作为最大绝对值。
在一个可能的示例中,上述程序还包括用于执行以下步骤的指令:
根据所述量化参数将所述目标网络层的输入数据中全部或者部分执行浮点型数据转化为定点型数据,得到全部定点数据或者混合数据,该混合数据包括:部分定点数据以及部分浮点数据。
在一个可能的示例中,所述浮点型数据为以下一种:32位浮点型数据、64位浮点型数据。
在一个可能的示例中,所述定点型数据为以下一种:8位定点型数据、16位定点型数据。
上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对电子设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图5A是本申请实施例中所涉及的量化实现装置500的功能单元组成框图。该量化实现装置500,应用于电子设备,所述装置500包括:第一确定单元501、生成单元502、获取单元503和第二确定单元504,其中,
所述第一确定单元501,用于根据目标数据集,确定待量化目标网络层输入数据中的元素值的最大绝对值;以及根据所述最大绝对值确定M个间隔,将所述目标网络层的绝对值化后的输入数据的元素值放入所述M个间隔中;
所述生成单元502,用于根据所述M个间隔内的元素值生成Q个量化分布,Q为大于1的整数;
所述获取单元503,用于获取所述目标网络层的输入数据对应的原始量化分布;
所述第二确定单元504,用于依据所述Q个量化分布、所述原始量化分布确定所述目标网络层的量化参数。
可以看出,在本申请实施例的方案中所描述的量化实现装置,根据目标数据集,确定待量化目标网络层输入数据中的元素值的最大绝对值,根据最大绝对值确定M个间隔,将目标网络层的绝对值化后的输入数据的元素值放入M个间隔中,根据M个间隔内的元素值生成Q个量化分布,Q为大于1的整数,获取目标网络层的输入数据对应的原始量化分布,依据Q个量化分布、原始量化分布确定目标网络层的量化参数,由于M个间隔本身容纳了所有的输入数据,利用量化分布之间的相似性从这些输入数据中选取最能代表整个输入数据的输入数据,确定目标截断值,这样的目标截断值更能反映输入数据的特性,进而,能够基于目标截断值得到精准的量化参数,有助于提升网络模型的量化精度。
在一个可能的示例中,在所述根据所述M个间隔内的元素值生成Q个量化分布方面,所述生成单元502具体用于:
获取P个截断阈值,所述截断阈值为所述M个间隔中任一间隔的端点值或者间隔的端点值的均值,P为正整数;
基于所述P个截断阈值将所述目标网络层划分为Q个区间,每一区间包括至少一个间隔;
基于所述Q个区间中每一区间中的元素值生成Q个量化分布,每一区间对应一个量化分布。
在一个可能的示例中,在所述依据所述Q个量化分布、所述原始量化分布确定所述目标网络层的量化参数方面,所述第二确定单元504具体用于:
确定所述Q个量化分布中每一量化分布与所述原始量化分布之间的相似度值,得到Q个相似度值;
从所述Q个相似度值中选取最大相似度值,并根据所述最大相似度值确定目标截断值;
根据所述目标截断值确定所述目标网络层的量化参数。
在一个可能的示例中,所述量化参数包括定点型数据的小数点位置和缩放因子,在所述根据所述目标截断值确定所述目标网络层的量化参数方面,所述第二确定单元504具体用于:
根据所述目标截断值确定所述小数点位置;
根据所述小数点位置、所述目标截断值确定所述缩放因子。
在一个可能的示例中,在所述确定所述Q个量化分布与所述原始量化分布之间的相似度值方面,所述第二确定单元504具体用于:
采用欧氏距离或者相对熵确定所述Q个量化分布中每一量化分布与所述原始量化分布之间的相似度值。
在一个可能的示例中,所述目标网络层包括以下网络层中的至少一种:卷积层、全连接层、反卷积层、归一化层。
在一个可能的示例中,所述间隔的间隔大小为128的整数倍。
在一个可能的示例中,在所述根据目标数据集,确定待量化目标网络层输入数据中的最大绝对值方面,所述第一确定单元501具体用于:
将所述目标数据集输入到预设浮点型神经网络模型进行正向运算,对所述目标网络层中的输入数据的元素值进行绝对值化处理,并选取元素值的最大值作为最大绝对值。
在一个可能的示例中,如图5B所示,图5B为图5A所描述的量化实现装置的又一变型结构,其与图5A相比较,还可以包括:量化单元505,具体如下:
所述量化单元505,用于根据所述量化参数将所述目标网络层的输入数据中全部或者部分执行浮点型数据转化为定点型数据,得到全部定点数据或者混合数据,该混合数据包括:部分定点数据以及部分浮点数据。
在一个可能的示例中,所述浮点型数据为以下一种:32位浮点型数据、64位浮点型数据。
在一个可能的示例中,所述定点型数据为以下一种:8位定点型数据、16位定点型数据。
在一些实施例里,还申请了一种芯片,其包括了上述机器学习运算装置或组合处理装置。
在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。上述板卡除了包括上述芯片、以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件、接口装置和控制器件;
所述存储器件与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。可选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一些实施例里,申请了一种电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括电子设备。
本申请实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,上述计算机包括电子设备。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元可以采用硬件的形式实现。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上上述,本说明书内容不应理解为对本申请的限制。