一种自适应量化方法及装置、设备、介质
技术领域
本申请涉及机器学习技术领域,尤其涉及一种自适应量化方法及装置、设备、介质。
背景技术
卷积神经网络在计算机视觉、语音处理、机器学习、图像识别、人脸识别等众多领域取得了巨大的突破,显著地提高了相应的机器算法在图像分类、目标检测和语音识别等多种任务中的性能,并且在互联网、视频监控等行业中得到了广泛应用。
大容量、高复杂度的卷积神经网络能够更全面地对数据进行学习,从而更准确地识别数据,当然,随着网络层数与参数数量的增加,计算和存储代价也会大幅增长。
在现有技术中,使用卷积神经网络对数据进行处理时,通常直接使用浮点数进行计算,但是,这种方式计算速度慢,且硬件功耗大。
发明内容
本申请实施例提供一种自适应量化方法及装置、设备、介质,用以解决现有技术中的如下技术问题:使用卷积神经网络对数据进行处理时,通常直接使用浮点数进行卷积计算,但是,这种方式计算速度慢,且硬件功耗大。
本申请实施例采用下述技术方案:
一种自适应量化方法,包括:
分别对多个原始输入张量进行第一量化处理,得到定点数形式的输入张量,以及计算该定点数形式的输入张量的量化偏移;
计算多个原始输入张量对应的综合的量化偏移,以及自适应量化系数;
根据所述自适应量化系数和所述综合的量化偏移,对所述定点数形式的输入张量及其量化偏移进行第二量化处理,得到量化结果。
可选地,所述分别对多个原始输入张量进行第一量化处理,得到定点数形式的输入张量,以及计算该定点数形式的输入张量的量化偏移,具体包括:
针对多个原始输入张量中的每个原始输入张量,执行:确定该原始输入张量的最值,根据该最值,对该原始输入张量进行第一量化处理,得到定点数形式的输入张量,以及计算该定点数形式的输入张量的量化偏移。
可选地,所述计算多个原始输入张量对应的综合的量化偏移,以及自适应量化系数,具体包括:
根据所述多个原始输入张量分别的最值,确定综合的最值;
根据所述综合的最值,计算综合的量化缩放系数和量化偏移;
根据所述综合的量化缩放系数和所述第一量化处理过程中使用的量化缩放系数,计算自适应量化系数。
可选地,所述多个原始输入张量来自同一个算数逻辑单元ALU,所述方法是针对多个不同的ALU中的每个ALU执行的。
可选地,所述根据该最值,对该原始输入张量进行第一量化处理,具体包括:
根据该最值中的最小值和指定的量化值域的最小值,利用第一函数,对该原始输入张量进行第一量化处理;
所述第一函数包含相应的量化缩放系数,以及浮点数转定点数的转换逻辑。
可选地,所述计算该定点数形式的输入张量的量化偏移,具体包括:
根据该最值中的最小值和所述指定的量化值域的最小值,利用第二函数,计算该定点数形式的输入张量的量化偏移;
所述第二函数包含所述相应的量化缩放系数,以及浮点数转定点数的转换逻辑。
可选地,所述相应的量化缩放系数根据该最值和/或所述指定的量化值域的最值计算得到。
可选地,所述根据所述综合的最值,计算综合的量化缩放系数和量化偏移,具体包括:
根据所述综合的最值和指定的量化值域的最值,计算综合的量化缩放系数和量化偏移。
可选地,所述根据所述综合的量化缩放系数和所述第一量化处理过程中使用的量化缩放系数,计算自适应量化系数,具体包括:
利用对数坐标系,对所述综合的量化缩放系数与所述第一量化处理过程中使用的量化缩放系数之间的比例关系进行转换;
根据所述转换后的比例关系,计算一个或者多个自适应量化系数;
其中,在所述计算的过程中,使用了浮点数转定点数的转换逻辑和/或用于保留精度的系数。
其中,
表示原始输入张量X
i相应的量化缩放系数,Q
low表示所述指定的量化值域的最小值,Q
high表示所述指定的量化值域的最大值,X
mini表示X
i的最小值,X
maxi表示X
i的最大值。
可选地,所述第一函数表示为:
其中,
表示所述第一量化处理后的原始输入张量X
i,X
mini表示X
i的最小值,
表示X
i相应的量化缩放系数,Q
low表示所述指定的量化值域的最小值,round表示将浮点数四舍五入为定点数的函数。
可选地,所述第二函数表示为:
其中,
表示为所述第一量化处理后的X
i计算的量化偏移,X
mini表示X
i的最小值,
表示X
i相应的量化缩放系数,Q
low表示所述量化值域的最小值,round表示将浮点数四舍五入为定点数的函数。
可选地,所述多个自适应量化系数包括第一自适应量化系数和第二自适应量化系数;
所述第一自适应量化系数是通过利用对数坐标系,对所述比例关系进行转换,再使用所述保留精度的系数进行精度调整,计算得到的,和/或
所述第二自适应量化系数是通过利用指数坐标系,根据所述比例关系和所述第一自适应量化系数,进行反向转换,计算得到的。
可选地,所述第一量化处理是根据N进制数的指定位数进行量化的,按照如下公式,计算所述第一自适应量化系数shifti:
其中,
表示原始输入张量X
i相应的量化缩放系数,S
y表示所述综合的量化缩放系数,α表示所期望保留精度的N进制位数,ceil表示向上取最小整数的函数。
可选地,所述第一量化处理是根据N进制数的指定位数进行量化的,按照如下公式,计算所述第二自适应量化系数ri:
其中,
表示原始输入张量X
i相应的量化缩放系数,S
y表示所述综合的量化缩放系数,shift
i表示所述第一自适应量化系数,round表示将浮点数四舍五入为定点数的函数。
可选地,所述第一量化处理是根据N进制数的指定位数进行量化的,所述根据所述自适应量化系数和所述综合的量化偏移,对所述定点数形式的输入张量及其量化偏移进行第二量化处理,得到量化结果,具体包括:
按照如下公式,对所述定点数形式的输入张量及其量化偏移进行第二量化处理,得到量化结果
其中,shift
i表示所述第一自适应量化系数,r
i表示所述第二自适应量化系数,
表示所述第一量化处理后的原始输入张量X
i,
表示为所述第一量化处理后的X
i计算的量化偏移,B
y表示所述综合的量化偏移。
一种自适应量化装置,包括:
第一量化模块,分别对多个原始输入张量进行第一量化处理,得到定点数形式的输入张量,以及计算该定点数形式的输入张量的量化偏移;
自适应量化系数计算模块,计算多个原始输入张量对应的综合的量化偏移,以及自适应量化系数;
第二量化模块,根据所述自适应量化系数和所述综合的量化偏移,对所述定点数形式的输入张量及其量化偏移进行第二量化处理,得到量化结果。
可选地,所述第一量化模块分别对多个原始输入张量进行第一量化处理,得到定点数形式的输入张量,以及计算该定点数形式的输入张量的量化偏移,具体包括:
所述第一量化模块针对多个原始输入张量中的每个原始输入张量,执行:确定该原始输入张量的最值,根据该最值,对该原始输入张量进行第一量化处理,得到定点数形式的输入张量,以及计算该定点数形式的输入张量的量化偏移。
可选地,所述自适应量化系数计算模块计算多个原始输入张量对应的综合的量化偏移,以及自适应量化系数,具体包括:
所述自适应量化系数计算模块根据所述多个原始输入张量分别的最值,确定综合的最值;
根据所述综合的最值,计算综合的量化缩放系数和量化偏移;
根据所述综合的量化缩放系数和所述第一量化处理过程中使用的量化缩放系数,计算自适应量化系数。
可选地,所述多个原始输入张量来自同一个算数逻辑单元ALU,所述装置是针对多个不同的ALU中的每个ALU执行的。
可选地,所述第一量化模块根据该最值,对该原始输入张量进行第一量化处理,具体包括:
所述第一量化模块根据该最值中的最小值和指定的量化值域的最小值,利用第一函数,对该原始输入张量进行第一量化处理;
所述第一函数包含相应的量化缩放系数,以及浮点数转定点数的转换逻辑。
可选地,所述第一量化模块计算该定点数形式的输入张量的量化偏移,具体包括:
所述第一量化模块根据该最值中的最小值和所述指定的量化值域的最小值,利用第二函数,计算该定点数形式的输入张量的量化偏移;
所述第二函数包含所述相应的量化缩放系数,以及浮点数转定点数的转换逻辑。
可选地,所述相应的量化缩放系数根据该最值和/或所述指定的量化值域的最值计算得到。
可选地,所述自适应量化系数计算模块根据所述综合的最值,计算综合的量化缩放系数和量化偏移,具体包括:
所述自适应量化系数计算模块根据所述综合的最值和指定的量化值域的最值,计算综合的量化缩放系数和量化偏移。
可选地,所述自适应量化系数计算模块根据所述综合的量化缩放系数和所述第一量化处理过程中使用的量化缩放系数,计算自适应量化系数,具体包括:
所述自适应量化系数计算模块利用对数坐标系,对所述综合的量化缩放系数与所述第一量化处理过程中使用的量化缩放系数之间的比例关系进行转换;
根据所述转换后的比例关系,计算一个或者多个自适应量化系数;
其中,在所述计算的过程中,使用了浮点数转定点数的转换逻辑和/或用于保留精度的系数。
其中,
表示原始输入张量X
i相应的量化缩放系数,Q
low表示所述指定的量化值域的最小值,Q
high表示所述指定的量化值域的最大值,X
mini表示X
i的最小值,X
maxi表示X
i的最大值。
可选地,所述第一函数表示为:
其中,
表示所述第一量化处理后的原始输入张量X
i,X
mini表示X
i的最小值,
表示X
i相应的量化缩放系数,Q
low表示所述指定的量化值域的最小值,round表示将浮点数四舍五入为定点数的函数。
可选地,所述第二函数表示为:
其中,
表示为所述第一量化处理后的X
i计算的量化偏移,X
mini表示X
i的最小值,
表示X
i相应的量化缩放系数,Q
low表示所述量化值域的最小值,round表示将浮点数四舍五入为定点数的函数。
可选地,所述多个自适应量化系数包括第一自适应量化系数和第二自适应量化系数;
所述第一自适应量化系数是所述自适应量化系数计算模块通过利用对数坐标系,对所述比例关系进行转换,再使用所述保留精度的系数进行精度调整,计算得到的,和/或
所述第二自适应量化系数是所述自适应量化系数计算模块通过利用指数坐标系,根据所述比例关系和所述第一自适应量化系数,进行反向转换,计算得到的。
可选地,所述第一量化处理是根据N进制数的指定位数进行量化的,所述自适应量化系数计算模块按照如下公式,计算所述第一自适应量化系数shifti:
其中,
表示原始输入张量X
i相应的量化缩放系数,S
y表示所述综合的量化缩放系数,α表示所期望保留精度的N进制位数,ceil表示向上取最小整数的函数。
可选地,所述第一量化处理是根据N进制数的指定位数进行量化的,所述自适应量化系数计算模块按照如下公式,计算所述第二自适应量化系数ri:
其中,
表示原始输入张量X
i相应的量化缩放系数,S
y表示所述综合的量化缩放系数,shift
i表示所述第一自适应量化系数,round表示将浮点数四舍五入为定点数的函数。
可选地,所述第一量化处理是根据N进制数的指定位数进行量化的,所述第二量化模块根据所述自适应量化系数和所述综合的量化偏移,对所述定点数形式的输入张量及其量化偏移进行第二量化处理,得到量化结果,具体包括:
所述第二量化模块按照如下公式,对所述定点数形式的输入张量及其量化偏移进行第二量化处理,得到量化结果
其中,shift
i表示所述第一自适应量化系数,r
i表示所述第二自适应量化系数,
表示所述第一量化处理后的原始输入张量X
i,
表示为所述第一量化处理后的X
i计算的量化偏移,B
y表示所述综合的量化偏移。
一种自适应量化设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
分别对多个原始输入张量进行第一量化处理,得到定点数形式的输入张量,以及计算该定点数形式的输入张量的量化偏移;
计算多个原始输入张量对应的综合的量化偏移,以及自适应量化系数;
根据所述自适应量化系数和所述综合的量化偏移,对所述定点数形式的输入张量及其量化偏移进行第二量化处理,得到量化结果。
一种自适应量化非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
分别对多个原始输入张量进行第一量化处理,得到定点数形式的输入张量,以及计算该定点数形式的输入张量的量化偏移;
计算多个原始输入张量对应的综合的量化偏移,以及自适应量化系数;
根据所述自适应量化系数和所述综合的量化偏移,对所述定点数形式的输入张量及其量化偏移进行第二量化处理,得到量化结果。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:利用浮点数转定点数的转换逻辑,以及至少部分步骤能够分块并行执行的自适应量化处理,有利于提高量化精度,提高卷积神经网络性能,降低硬件功耗和设计难度。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请的一些实施例提供的一种自适应量化方法的流程示意图;
图2为本申请的一些实施例提供的图1中的自适应量化方法的一种详细流程示意图;
图3为本申请的一些实施例提供的对应于图1的一种自适应量化装置的结构示意图;
图4为本申请的一些实施例提供的对应于图1的一种自适应量化设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
卷积神经网络目前常用于进行图像处理,在处理过程中会进行较为复杂的计算,主要包括卷积计算、批标准化计算、激活计算等。本申请提供了自适应量化方案,可以用于对原始的数据进行简化处理,再进行上面的计算,而不是直接利用浮点数进行上面的计算。下面对本申请的方案进行详细说明。
图1为本申请的一些实施例提供的一种自适应量化方法的流程示意图。在该流程中,从设备角度而言,执行主体可以是一个或者多个计算设备,比如,基于卷积神经网络的单个机器学习服务器、机器学习服务器集群等,从程序角度而言,执行主体相应地可以是搭载于这些计算设备上的程序,比如,基于卷积神经网络的神经网络建模平台、图像处理平台等,更具体地,可以是这类平台上所使用的卷积神经网络中包含的一个或者多个神经元。
图1中的流程可以包括以下步骤:
S102:分别对多个原始输入张量进行第一量化处理,得到定点数形式的输入张量,以及计算该定点数形式的输入张量的量化偏移。
在本申请的一些实施例中,第一量化处理的具体实施方式可以是多样的。比如,根据原始输入张量的最值,进行均匀量化;或者,根据原始输入张量的分布,进行非均匀量化;等等。
S104:计算多个原始输入张量对应的综合的量化偏移,以及自适应量化系数。
在本申请的一些实施例中,综合的量化偏移可以是根据步骤S102中得到的各定点数形式的输入张量的量化偏移计算得到的,也可以是至少不全依赖于该量化偏移,而根据原始输入张量的最值等其他参数计算得到的,等等。
S106:根据所述自适应量化系数和所述综合的量化偏移,对所述定点数形式的输入张量及其量化偏移进行第二量化处理,得到量化结果。
更具体地,本申请的一些实施例还提供了图1中的自适应量化方法的一种详细流程示意图,如图2所示。
图2中的流程可以包括以下步骤:
S202:针对多个原始输入张量中的每个原始输入张量,执行:确定该原始输入张量的最值,根据该最值,对该原始输入张量进行第一量化处理,得到定点数形式的输入张量,以及计算该定点数形式的输入张量的量化偏移。
在本申请的一些实施例中,对于卷积神经网络,原始输入张量一般表示为向量或者矩阵,其中的元素往往是浮点数形式的。原始输入张量可以是整个卷积神经网络的输入,也可以是卷积神经网络中任意神经元的输入,也可以是任意神经元内处理逻辑的中间输出等。
为了便于描述,下面一些实施例主要以下面的场景为例进行说明:运行卷积神经网络的设备包含有多个算数逻辑单元(Arithmetic Logic Unit,ALU),可以由ALU执行卷积神经网络中常规的计算,可以将每个ALU在指定的一个或者多个计算阶段输出的数据作为原始输入张量。图1中的流程可以是针对多个不同的ALU中的每个ALU执行的,相应地,步骤S202中的多个原始输入张量来自同一个ALU,在步骤S202中,可以并行地针对这多个原始输入张量分别执行本申请的方案中的一些动作,如此,有利于加快整体的处理速度,效率较高。
在本申请的一些实施例中,对于可能是浮点数形式的原始输入张量,通过第一量化处理,执行了一些近似的处理以实现简化。该近似的处理至少包括量化处理,在量化处理的过程中,还会进行浮点数转定点数的转换处理等。在第一量化处理的过程中,会使用相应的量化缩放系数进行量化,当然,还可以使用一些额外的项或者系数进行附加的调节。
在本申请的一些实施例中,量化缩放系数主要决定了对被量化对象的变换尺度。量化缩放系数的计算方式可以是多样的,比如,根据指定的量化值域和/或被量化对象本身的值域计算得到。浮点数转定点数的转换逻辑也可以是多样的,比如,通过四舍五入处理转换,通过直接舍去尾数转换等。
在本申请的一些实施例中,量化偏移可以是适应于当前的原始输入张量而动态变化的。量化偏移用于对步骤S202中第一量化处理后得到的初步量化结果进一步地自适应调整,以使得调整后得到的量化结果更加接近原始数据,从而有利于提高计算精度。量化偏移的计算方式可以是多样的,比如,根据量化缩放系数和/或指定的量化值域和/或被量化对象本身的值域计算得到。
S204:根据所述多个原始输入张量分别的最值,确定综合的最值。
在本申请的一些实施例中,通过步骤S204及其后续步骤,能够对这多个原始输入张量归一化量纲,基于归一化量纲的结果,得到更为精确的量化结果。
在本申请的一些实施例中,最值具体可以指最大值和/或最小值。可以分别针对每个ALU,求其对应的多个原始输入张量综合的最值,为便于描述,可以将该综合的最值对应的值域称为局部值域,这里的“局部”所相对的“全部”可以指:全部ALU对应的全部的原始输入张量。
确定综合的最值的方式可以是多样的。比如,将多个原始输入张量分别的最值中的最值直接作为综合的最值;或者,可以对多个原始输入张量分别的最值取均值,作为综合的最值;等等。
S206:根据所述综合的最值,计算综合的量化缩放系数和量化偏移。
在本申请的一些实施例中,可以将该综合的最值替换步骤S202中的最值,再参照步骤S202中的方案,计算综合的量化缩放系数和量化偏移。或者,也可以采用不同于步骤S202中的方案进行计算。
S208:根据所述综合的量化缩放系数和所述第一量化处理过程中使用的量化缩放系数,计算自适应量化系数。
在本申请的一些实施例中,在自适应量化系数的计算过程中,归一化量纲后,可以进一步地进行近似的处理,以更精确地控制量化精度。自适应量化系数可以有一个或者多个。
S210:根据所述自适应量化系数和所述综合的量化偏移,对所述定点数形式的输入张量及其量化偏移进行第二量化处理,得到量化结果。
在本申请的一些实施例中,基于第一量化处理和第二量化处理,相当于对原始输入张量分两步进行了量化,相比于一步完成量化,有助于在量化位数有限的情况下降低量化精度损失,提升算法性能。
通过图1和图2的方法,利用浮点数转定点数的转换逻辑,以及至少部分步骤能够分块并行执行的自适应量化处理,有利于提高量化精度,提高卷积神经网络性能,降低硬件功耗和设计难度。
基于图1和图2的方法,本申请的一些实施例还提供了该方法的一些具体实施方案,以及扩展方案,下面进行说明。
在本申请的一些实施例中,最值包括最小值和最大值中的至少一个,可以通过遍历原始输入张量中的各元素确定,可以将最小的元素作为最小值,最大的元素作为最大值。
在本申请的一些实施例中,量化值域的最值可以根据指定的量化位数计算得到。量化位数通常是2进制位数的,比如,8位、16位或者32位等2进制数,一般地,位数越高,量化精度也越高。
下面均假定第一量化处理是根据N进制数的指定位数进行量化的,指定的量化位数为N进制数的量化位数w。比如,可以按照如下公式计算指定的量化值域的最值:Qlow=-Nw -1;Qhigh=Nw-1-1;其中,Qlow表示指定的量化值域的最小值,Qhigh表示指定的量化值域的最大值,N一般为2。该例中,考虑了负值,在实际应用中,也可以只取正值的值域。
在本申请的一些实施例中,量化缩放系数可以是基于均匀量化或者非均匀量化的方式计算的,以均匀量化方式计算为例,则比如:
假定针对ALU,有M个量化模块并行地处理该ALU输出的各原始输入张量,将当前输入第i个ALU的输出记作原始输入张量X
i,遍历X
i求得其最小值和最大值分别记作X
mini、X
maxi,X
i相应的量化缩放系数(记作
)比如可以按照公式
计算得到。
若以非均匀量化方式定义,比如,可以在上例公式中再加入包含当前的Xi的系数或者附加项等。上例中的一些参数在下面也会用到,简明起见,不再重复解释参数含义。
在本申请的一些实施例中,对于步骤S202,根据该最值,对该原始输入张量进行第一量化处理,具体比如包括:根据该最值中的最小值和指定的量化值域的最小值,利用第一函数,对该原始输入张量进行第一量化处理;第一函数包含相应的量化缩放系数,以及浮点数转定点数的转换逻辑。进一步地,计算该定点数形式的输入张量的量化偏移,具体可以包括:根据该最值中的最小值和指定的量化值域的最小值,利用第二函数,计算该定点数形式的输入张量的量化偏移;第二函数包含相应的量化缩放系数,以及浮点数转定点数的转换逻辑。
在本申请的一些实施例中,对于第一函数和/或第二函数,在其包含的相应的量化缩放系数以外,还可以包含指定的量化值域的最小值,以及所进行量化处理的对象的最小值等其他因子。
更直观地,本申请提供了一种实际应用场景下,适用的第一函数和第二函数作为示例。
第一函数比如表示为:
第二函数比如表示为:
其中,
表示第一量化处理后的X
i,round表示将浮点数四舍五入为定点数的函数,
表示为
计算的量化偏移。可以将round替换为其他能够实现浮点数转定点数的函数。
在本申请的一些实施例中,通过步骤S202,得到了对多个原始输入张量分别的处理结果,假定后续步骤由一个能够实现归一化量纲的功能逻辑层执行,称为Same Layer。针对某个ALU,假定M个量化模块处理其各原始输入张量,得到定点数形式的输入张量分别记作
为其计算的量化偏移分别记作
各原始输入张量的最小值分别记作X
min1~X
minM,最大值分别记作X
max1~X
maxM,各原始输入张量相应的量化缩放系数分别记作
将这些数据输入Same Layer进行处理,具体处理过程见下面一些实施例。
遍历Xmin1~XminM,获得其中的最小值作为综合的最小值,记作Ymin,遍历Xmax1~XmaxM,求得其中的最大值作为综合的最大值,记作Ymax,综合的最小值和综合的最大值即构成综合的最值。
进一步地,对于步骤S206,根据综合的最值,计算综合的量化缩放系数和量化偏移,具体可以包括:根据综合的最值和指定的量化值域的最值,计算综合的量化缩放系数和量化偏移。比如,将综合的量化缩放系数记作S
y,可以按照公式
计算得到,将综合的量化偏移记作B
y,可以按照公式B
y=round[-S
y·Y
min]+Q
low计算得到。
在本申请的一些实施例中,对于步骤S208,根据综合的量化缩放系数和第一量化处理过程中使用的量化缩放系数,计算自适应量化系数,具体可以包括:利用对数坐标系,对所述综合的量化缩放系数与所述第一量化处理过程中使用的量化缩放系数之间的比例关系进行转换;根据所述转换后的比例关系,计算一个或者多个自适应量化系数;其中,在计算的过程中,使用了浮点数转定点数的转换逻辑和/或用于保留精度的系数。
进一步地,假定计算得到多个自适应量化系数,包括第一自适应量化系数和第二自适应量化系数,第一自适应量化系数是通过利用对数坐标系,对所述比例关系进行转换(求对数),再使用保留精度的系数进行精度调整,计算得到的,和/或第二自适应量化系数是通过利用指数坐标系,根据该比例关系和第一自适应量化系数,进行反向转换(求指数),计算得到的。
例如,假定第一量化处理是根据N进制数的指定位数进行量化的,可以按照如下公式,计算第一自适应量化系数,记作shifti:
可以按照如下公式,计算第二自适应量化系数,记作ri:
其中,α表示所期望保留精度的N进制位数,可以取任意自然数,ceil表示向上取最小整数的函数。
进一步地,对于步骤S210,根据自适应量化系数和综合的量化偏移,对定点数形式的输入张量及其量化偏移进行第二量化处理,得到量化结果,具体可以包括:按照如下公式,对所述定点数形式的输入张量及其量化偏移进行第二量化处理,得到量化结果,记作
在这里,
可以表示对X
i进行第一量化处理,并用相应的量化偏移进行调整后得到的初步的量化结果,进一步地用自适应量化系数对初步的量化结果进行缩放,再用综合的量化偏移进行调整后得到
可以作为最终的量化结果。
需要说明的是,上面列举的一些公式反映了本申请方案的思想,但是并非是唯一实施形式,基于本申请方案的思想,能够得到更多的类似公式替代上面的公式。
基于同样的思路,本申请的一些实施例还提供了上述方法对应的装置、设备和非易失性计算机存储介质。
图3为本申请的一些实施例提供的对应于图1的一种自适应量化装置的结构示意图,该装置包括:
第一量化模块301,分别对多个原始输入张量进行第一量化处理,得到定点数形式的输入张量,以及计算该定点数形式的输入张量的量化偏移;
自适应量化系数计算模块302,计算多个原始输入张量对应的综合的量化偏移,以及自适应量化系数;
第二量化模块303,根据所述自适应量化系数和所述综合的量化偏移,对所述定点数形式的输入张量及其量化偏移进行第二量化处理,得到量化结果。
可选地,所述第一量化模块301分别对多个原始输入张量进行第一量化处理,得到定点数形式的输入张量,以及计算该定点数形式的输入张量的量化偏移,具体包括:
所述第一量化模块301针对多个原始输入张量中的每个原始输入张量,执行:确定该原始输入张量的最值,根据该最值,对该原始输入张量进行第一量化处理,得到定点数形式的输入张量,以及计算该定点数形式的输入张量的量化偏移。
可选地,所述自适应量化系数计算模块302计算多个原始输入张量对应的综合的量化偏移,以及自适应量化系数,具体包括:
所述自适应量化系数计算模块302根据所述多个原始输入张量分别的最值,确定综合的最值;
根据所述综合的最值,计算综合的量化缩放系数和量化偏移;
根据所述综合的量化缩放系数和所述第一量化处理过程中使用的量化缩放系数,计算自适应量化系数。
可选地,所述多个原始输入张量来自同一个算数逻辑单元ALU,所述装置是针对多个不同的ALU中的每个ALU执行的。
可选地,所述第一量化模块301根据该最值,对该原始输入张量进行第一量化处理,具体包括:
所述第一量化模块301根据该最值中的最小值和指定的量化值域的最小值,利用第一函数,对该原始输入张量进行第一量化处理;
所述第一函数包含相应的量化缩放系数,以及浮点数转定点数的转换逻辑。
可选地,所述第一量化模块301计算该定点数形式的输入张量的量化偏移,具体包括:
所述第一量化模块301根据该最值中的最小值和所述指定的量化值域的最小值,利用第二函数,计算该定点数形式的输入张量的量化偏移;
所述第二函数包含所述相应的量化缩放系数,以及浮点数转定点数的转换逻辑。
可选地,所述相应的量化缩放系数根据该最值和/或所述指定的量化值域的最值计算得到。
可选地,所述自适应量化系数计算模块302根据所述综合的最值,计算综合的量化缩放系数和量化偏移,具体包括:
所述自适应量化系数计算模块302根据所述综合的最值和指定的量化值域的最值,计算综合的量化缩放系数和量化偏移。
可选地,所述自适应量化系数计算模块302根据所述综合的量化缩放系数和所述第一量化处理过程中使用的量化缩放系数,计算自适应量化系数,具体包括:
所述自适应量化系数计算模块302利用对数坐标系,对所述综合的量化缩放系数与所述第一量化处理过程中使用的量化缩放系数之间的比例关系进行转换;
根据所述转换后的比例关系,计算一个或者多个自适应量化系数;
其中,在所述计算的过程中,使用了浮点数转定点数的转换逻辑和/或用于保留精度的系数。
其中,
表示原始输入张量X
i相应的量化缩放系数,Q
low表示所述指定的量化值域的最小值,Q
high表示所述指定的量化值域的最大值,X
mini表示X
i的最小值,X
maxi表示X
i的最大值。
可选地,所述第一函数表示为:
其中,
表示所述第一量化处理后的原始输入张量X
i,X
mini表示X
i的最小值,
表示X
i相应的量化缩放系数,Q
low表示所述指定的量化值域的最小值,round表示将浮点数四舍五入为定点数的函数。
可选地,所述第二函数表示为:
其中,
表示为所述第一量化处理后的X
i计算的量化偏移,X
mini表示X
i的最小值,
表示X
i相应的量化缩放系数,Q
low表示所述量化值域的最小值,round表示将浮点数四舍五入为定点数的函数。
可选地,所述多个自适应量化系数包括第一自适应量化系数和第二自适应量化系数;
所述第一自适应量化系数是所述自适应量化系数计算模块302通过利用对数坐标系,对所述比例关系进行转换,再使用所述保留精度的系数进行精度调整,计算得到的,和/或
所述第二自适应量化系数是所述自适应量化系数计算模块302通过利用指数坐标系,根据所述比例关系和所述第一自适应量化系数,进行反向转换,计算得到的。
可选地,所述第一量化处理是根据N进制数的指定位数进行量化的,所述自适应量化系数计算模块302按照如下公式,计算所述第一自适应量化系数shifti:
其中,
表示原始输入张量X
i相应的量化缩放系数,S
y表示所述综合的量化缩放系数,α表示所期望保留精度的N进制位数,ceil表示向上取最小整数的函数。
可选地,所述第一量化处理是根据N进制数的指定位数进行量化的,所述自适应量化系数计算模块302按照如下公式,计算所述第二自适应量化系数ri:
其中,
表示原始输入张量X
i相应的量化缩放系数,S
y表示所述综合的量化缩放系数,shift
i表示所述第一自适应量化系数,round表示将浮点数四舍五入为定点数的函数。
可选地,所述第一量化处理是根据N进制数的指定位数进行量化的,所述第二量化模块303根据所述自适应量化系数和所述综合的量化偏移,对所述定点数形式的输入张量及其量化偏移进行第二量化处理,得到量化结果,具体包括:
所述第二量化模块303按照如下公式,对所述定点数形式的输入张量及其量化偏移进行第二量化处理,得到量化结果
其中,shift
i表示所述第一自适应量化系数,r
i表示所述第二自适应量化系数,
表示所述第一量化处理后的原始输入张量X
i,
表示为所述第一量化处理后的X
i计算的量化偏移,B
y表示所述综合的量化偏移。
图3为本申请的一些实施例提供的对应于图1的一种自适应量化设备的结构示意图,该设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
针对多个原始输入张量中的每个原始输入张量,执行:确定该原始输入张量的最值,根据该最值,对该原始输入张量进行第一量化处理,得到定点数形式的输入张量,以及计算该定点数形式的输入张量的量化偏移;
根据所述多个原始输入张量分别的最值,确定综合的最值;
根据所述综合的最值,计算综合的量化缩放系数和量化偏移;
根据所述综合的量化缩放系数和所述第一量化处理过程中使用的量化缩放系数,计算自适应量化系数;
根据所述自适应量化系数和所述综合的量化偏移,对所述定点数形式的输入张量及其量化偏移进行第二量化处理,得到量化结果。
本申请的一些实施例提供的对应于图1的一种自适应量化非易失性计算机存储介质,存储有计算机可执行指令,该计算机可执行指令设置为:
针对多个原始输入张量中的每个原始输入张量,执行:确定该原始输入张量的最值,根据该最值,对该原始输入张量进行第一量化处理,得到定点数形式的输入张量,以及计算该定点数形式的输入张量的量化偏移;
根据所述多个原始输入张量分别的最值,确定综合的最值;
根据所述综合的最值,计算综合的量化缩放系数和量化偏移;
根据所述综合的量化缩放系数和所述第一量化处理过程中使用的量化缩放系数,计算自适应量化系数;
根据所述自适应量化系数和所述综合的量化偏移,对所述定点数形式的输入张量及其量化偏移进行第二量化处理,得到量化结果。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例提供的装置、设备和介质与方法是一一对应的,因此,装置、设备和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述装置、设备和介质的有益技术效果。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。