CN112085150A - 量化参数调整方法、装置及相关产品 - Google Patents
量化参数调整方法、装置及相关产品 Download PDFInfo
- Publication number
- CN112085150A CN112085150A CN201910888141.4A CN201910888141A CN112085150A CN 112085150 A CN112085150 A CN 112085150A CN 201910888141 A CN201910888141 A CN 201910888141A CN 112085150 A CN112085150 A CN 112085150A
- Authority
- CN
- China
- Prior art keywords
- iteration
- data
- bit width
- target
- current
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Abstract
本公开涉及一种循环神经网络的量化参数调整方法、装置及相关产品,上述方法可以根据所述待量化数据的数据变动幅度,确定目标迭代间隔,以根据所述目标迭代间隔调整所述循环神经网络运算中的量化参数。本公开的循环神经网络的量化参数调整方法、装置及相关产品,能够提高循环神经网络量化过程中的精度,提高量化效率和运算效率。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种循环神经网络的量化参数调整方法、装 置及相关产品。
背景技术
随着人工智能技术的不断发展,其应用领域越来越广泛,在图像识别、语音识别、自然语言处理等领域中都得到了良好的应用。然而,随着人工智能算法的复杂度提高, 待处理数据的数据量和数据维度都在不断增大,不断增大的数据量等对运算装置的数据 处理效率、存储装置的存储容量及访存效率等提出了较大的挑战。
为解决上述技术问题,传统技术采用固定位宽对循环神经网络的运算数据进行量化, 即将浮点型的运算数据转换为定点型的运算数据,以实现循环神经网络的运算数据的压 缩。但循环神经网络的不同运算数据之间可能存在较大的差异,传统量化方法针对整个循环神经网络采用相同量化参数(如点位置)进行量化,往往会导致精度较低,影响数 据运算结果。
发明内容
有鉴于此,本公开提出了一种循环神经网络的量化参数调整方法、装置及相关产品, 能够提高神经网络的量化精度,保证运算结果的正确性和可靠性。
本公开提供了一种神经网络的量化参数调整方法,所述方法包括:
获取待量化数据的数据变动幅度;
根据所述待量化数据的数据变动幅度,确定第一目标迭代间隔,以根据所述第一目 标迭代间隔调整所述循环神经网络运算中的量化参数,其中,所述第一目标迭代间隔包括至少一次迭代,所述循环神经网络的量化参数用于实现对所述循环神经网络运算中待量化数据的量化操作。
本公开还提供了一种循环神经网络的量化参数调整装置,包括存储器和处理器,所 述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现上述任一项所述的方法的步骤。具体地,处理器执行上述计算机程序时,实现如下操作:
获取待量化数据的数据变动幅度;
根据所述待量化数据的数据变动幅度,确定第一目标迭代间隔,以根据所述第一目 标迭代间隔调整所述循环神经网络运算中的量化参数,其中,所述第一目标迭代间隔包括至少一次迭代,所述循环神经网络的量化参数用于实现对所述循环神经网络运算中待量化数据的量化操作。
本公开还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算 机程序,所述计算机程序被执行时,实现上述任一项所述的方法的步骤。具体地,上述计算机程序被执行时,实现如下操作:
获取待量化数据的数据变动幅度;
根据所述待量化数据的数据变动幅度,确定第一目标迭代间隔,以根据所述第一目 标迭代间隔调整所述循环神经网络运算中的量化参数,其中,所述第一目标迭代间隔包括至少一次迭代,所述循环神经网络的量化参数用于实现对所述循环神经网络运算中待量化数据的量化操作。
本公开还提供了一种循环神经网络的量化参数调整装置,所述装置包括:
获取模块,用于获取待量化数据的数据变动幅度;
迭代间隔确定模块,用于根据所述待量化数据的数据变动幅度,确定第一目标迭代 间隔,以根据所述第一目标迭代间隔调整所述循环神经网络运算中的量化参数,其中,所述目标迭代间隔包括至少一次迭代,所述循环神经网络的量化参数用于实现对所述循环神经网络运算中待量化数据的量化操作。
本公开的循环神经网络的量化参数调整方法、装置及相关产品,通过获取待量化数 据的数据变动幅度,并根据该待量化数据的数据变动幅度确定出第一目标迭代间隔,从而可以根据该第一目标迭代间隔调整循环神经网络的量化参数,这样可以根据确定待量化数据的数据分布特性确定循环神经网络在不同运算阶段的量化参数。相较于现有技术中,针对同一循环神经网络的各种运算数据均采用相同的量化参数的方式,本公开的方 法及装置能够提高循环神经网络量化过程中的精度,进而保证运算结果的准确性和可靠 性。进一步地,通过确定目标迭代间隔还可以提高量化效率。
附图说明
本公开所涉及的附图包含在说明书中并且构成说明书的一部分的附图与说明书一起 示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出本公开一实施例的量化参数调整方法的应用环境示意图;
图2示出本公开一实施例的待量化数据和量化数据的对应关系示意图;
图3示出本公开一实施例的待量化数据的转换示意图;
图4示出本公开一实施例的循环神经网络的量化参数调整方法的流程图;
图5a示出本公开一实施例的待量化数据在运算过程中的变动趋势图;
图5b示出本公开一实施例的循环神经网络的展开示意图;
图5c示出本公开一实施例的循环神经网络的周期示意图;
图6示出本公开一实施例的循环神经网络的参数调整方法的流程图;
图7示出本公开一实施例中点位置的变动幅度的确定方法的流程图;
图8示出本公开一实施例中第二均值的确定方法的流程图;
图9示出本公开一实施例中数据位宽调整方法的流程图;
图10示出本公开另一实施例中数据位宽调整方法的流程图;
图11示出本公开又一实施例中数据位宽调整方法的流程图;
图12示出本公开再一实施例中数据位宽调整方法的流程图;
图13示出本公开另一实施例中第二均值的确定方法的流程图;
图14示出本公开另一实施例的量化参数调整方法的流程图;
图15示出本公开一实施例的量化参数调整方法中调整量化参数的流程图;
图16示出本公开另一实施例的参数调整方法中第一目标迭代间隔的确定方法的流程 图;
图17示出本公开再一实施例的量化参数调整方法的流程图;
图18示出本公开一实施例的量化参数调整装置的结构框图;
图19示出根据本公开实施例的板卡的结构框图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整 地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除 一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的, 而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文 清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进 一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的 一个或多个的任何组合以及所有可能组合,并且包括这些组合。
随着人工智能算法的复杂度提高,待处理数据的数据量和数据维度也在不断增大, 而传统的循环神经网络算法通常采用浮点数据格式来执行循环神经网络运算,这就使得 不断增大的数据量等对运算装置的数据处理效率、存储装置的存储容量及访存效率等提 出了较大的挑战。为解决上述问题,可以对循环神经网络运算过程涉及的运算数据进行量化,即将浮点表示的运算数据转化为定点表示的运算数据,从而减小存储装置的存储 容量及访存效率,并提高运算装置的运算效率。但传统的量化方法是在循环神经网络的 整个训练过程中均采用相同的数据位宽和量化参数(如小数点的位置)对循环神经网络 的不同运算数据进行量化,由于不同的运算数据之间具有差异性,或者,训练过程中不 同阶段的运算数据具有差异性,使得采用上述量化方法进行量化时,往往会导致精度不 够,从而会影响运算结果。
基于此,本公开提供了一种循环神经网络的量化参数调整方法,该方法可以应用于 包含存储器110和处理器120的量化参数调整装置中。图1为该量化参数调整装置100 的结构框图,其中,该量化参数调整装置100的处理器120可以是通用处理器,该量化 参数调整装置100的处理器120也可以是人工智能处理器,该量化参数调整装置100的 处理器还可以包含通用处理器和人工智能处理器,此处不作具体限定。该存储器110可 以用于存储循环神经网络运算过程中的运算数据,该运算数据可以是神经元数据、权值 数据或梯度数据中的一种或多种。该存储器110还可以用于存储计算机程序,该计算机 程序被上述的处理器120执行时,能够实现本公开实施例中的量化参数调整方法。该方 法能够应用于循环神经网络的训练或微调过程中,并根据循环神经网络的训练或微调过 程的不同阶段的运算数据的分布特性,动态地调整运算数据的量化参数,从而提高循环 神经网络的量化过程的精度,进而保证运算结果的准确性和可靠性。
若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、 FPGA、DSP和ASIC等等。若无特别说明,所述存储器可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态 随机存取存储器DRAM(Dynamic Random Access Memory)、静态随机存取存储器SRAM (StaticRandom-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic RandomAccess Memory)、高带宽内存HBM(High-Bandwidth Memory)或混合存储立方 HMC(HybridMemory Cube)等等。
为更好地理解本公开的内容,以下首先介绍本公开实施例中量化过程及量化过程涉 及到的量化参数。
本公开实施例中,量化是指将第一数据格式的运算数据转化为第二数据格式的运算 数据。其中,该第一数据格式的运算数据可以是浮点表示的运算数据,该第二数据格式的运算数据可以是定点表示的运算数据。由于浮点表示的运算数据通常会占用较大的存储空间,因此通过将浮点表示的运算数据转换为定点表示的运算数据,可以节约存储空间,并提高运算数据的访存效率及运算效率等。
可选地,量化过程中的量化参数可以包括点位置和/或缩放系数,其中,点位置是指 量化后的运算数据中小数点的位置。缩放系数是指量化数据的最大值与待量化数据的最 大绝对值之间的比值。进一步地,量化参数还可以包括偏移量,偏移量是针对非对称的待量化数据而言,是指该待量化数据中多个元素的中间值,具体地,偏移量可以是待量 化数据中多个元素的中点值。当该待量化数据为对称的待量化数据时,量化参数可以不 包含偏移量,此时可以根据该待量化数据确定点位置和/或缩放系数等量化参数。
图2示出本公开一实施例的待量化数据和量化数据的对应关系示意图,如图2所示, 待量化数据为相对于原点对称的数据,假设Z1为待量化数据中元素的绝对值的最大值, 待量化数据对应的数据位宽为n,A为用数据位宽n对待量化数据进行量化后的量化数据 可以表示的最大值,A为2s(2n-1-1),A需要包含Z1,且Z1要大于因此有公式(1) 的约束:
2s(2n-1-1)≥Z1>2s-1(2n-1-1)公式(1)
处理器可以根据待量化数据中的绝对值最大值Z1和数据位宽n,计算得到点位置s。 例如,可以利用如下公式(2)计算得到待量化数据对应的点位置s:
其中,ceil为向上取整,Z1为待量化数据中的绝对值最大值,s为点位置,n为数据位 宽。
此时,当采用点位置s对待量化数据进行量化时,浮点表示的待量化数据Fx可以表示为:Fx≈Ix×2s,其中,Ix是指量化后的n位二进制表示值,s表示点位置。其中,该 待量化数据对应的量化数据为:
其中,s为点位置,Ix为量化数据,Fx为待量化数据,round为进行四舍五入的取整运算。可以理解的是,也可以采用其他的取整运算方法,例如采用向上取整、向下取整、 向零取整等取整运算,替换公式(3)中的四舍五入的取整运算。可以理解的是,在数据 位宽一定的情况下,根据点位置量化得到的量化数据中,小数点后的位数越多,量化数 据的量化精度越大。
进一步地,该待量化数据对应的中间表示数据Fx1可以是:
其中,s为根据上述公式(2)确定的点位置,Fx为待量化数据,round为进行四舍五入的取整运算。Fx1可以是对上述的量化数据Ix进行反量化获得的数据,该中间表示数据 Fx1的数据表示格式与上述的待量化数据Fx的数据表示格式一致,该中间表示数据Fx1可 以用于计算量化误差,详见下文。其中,反量化是指量化的逆过程。
可选地,缩放系数可以包括第一缩放系数,该第一缩放系数可以按照如下方 式进行计算:
其中,Z1为待量化数据中的绝对值最大值,A为用数据位宽n对待量化数据进行 量化后数据的量化数据可以表示的最大值,A为2s(2n-1-1)。
此时,处理器可以采用点位置和第一缩放系数结合的方式对待量化数据Fx进行量化,获 得量化数据:
其中,s为根据上述公式(2)确定的点位置,f1为第一缩放系数,Ix为量化数据,Fx为待 量化数据,round为进行四舍五入的取整运算。可以理解的是,也可以采用其他的取整运算方法,例如采用向上取整、向下取整、向零取整等取整运算,替换公式(6)中的四 舍五入的取整运算。
进一步地,该待量化数据对应的中间表示数据Fx1可以是:
其中,s为根据上述公式(2)确定的点位置,f1为缩放系数,Fx为待量化数据,round为 进行四舍五入的取整运算。Fx1可以是对上述的量化数据Ix进行反量化获得的数据,该中间表示数据Fx1的数据表示格式与上述的待量化数据Fx的数据表示格式一致,该中间表示数据Fx1可以用于计算量化误差,详见下文。其中,反量化是指量化的逆过程。
可选地,该缩放系数还可以包括第二缩放系数,该第二缩放系数可以按照如下方式 进行计算:
处理器可以单独使用第二缩放系数对待量化数据Fx进行量化,获得量化数据:
其中,f2为第二缩放系数,Ix为量化数据,Fx为待量化数据,round为进行四舍五入的取整运算。可以理解的是,也可以采用其他的取整运算方法,例如采用向上取整、向 下取整、向零取整等取整运算,替换公式(9)中的四舍五入的取整运算。可以理解的是, 在数据位宽一定的情况下,采用不同的缩放系数,可以调整量化后数据的数值范围。
进一步地,该待量化数据对应的中间表示数据Fx1可以是:
其中,f2为第二缩放系数,Fx为待量化数据,round为进行四舍五入的取整运算。Fx1可 以是对上述的量化数据Ix进行反量化获得的数据,该中间表示数据Fx1的数据表示格式与 上述的待量化数据Fx的数据表示格式一致,该中间表示数据Fx1可以用于计算量化误差,详见下文。其中,反量化是指量化的逆过程。
进一步地,上述第二缩放系数可以是根据点位置和第一缩放系数f1确定。即第二缩 放系数可以按照如下公式进行计算:
f2=2s×f1公式(11)
其中,s为根据上述公式(2)确定的点位置,f1是按照上述公式(5)计算获 得的第一缩放系数。
可选地,本公开实施例的量化方法不仅能够实现对称数据的量化,还可以实现对非 对称数据的量化。此时,处理器可以将非对称的数据转化为对称数据,以避免数据的“溢出”。具体地,量化参数还可以包括偏移量,该偏移量可以是待量化数据的中点值,该偏 移量可以用于表示待量化数据的中点值相对于原点的偏移量。图3示出本公开一实施例的 待量化数据的转换示意图,如图3所示,处理器可以对待量化数据的数据分布进行统计, 获得待量化数据中所有元素中的最小值Zmin,以及该待量化数据中所有元素中的最大值 Zmax,之后处理器可以根据该最小值Zmin和最大值Zmax计算获得上述偏移量。具体的偏 移量计算方式如下:
其中,o表示偏移量,Zmin表示待量化数据所有元素中的最小值,Zmax表示待量化数据所有元素中的最大值。
进一步地,处理器可以根据该待量化数据所有元素中的最小值Zmin和最大值Zmax确定该待量化数据中的绝对值最大值Z2,
这样,处理器可以根据偏移量o将待量化数据进行平移,将非对称的待量化数据转化 为对称的待量化数据,如图3所示。处理器还可以根据该待量化数据中的绝对值最大值Z2进一步确定点位置s,其中,点位置可以按照如下公式进行计算:
其中,ceil为向上取整,s为点位置,n为数据位宽。
之后,处理器可以根据该偏移量及其对应的点位置对待量化数据进行量化,获得量 化数据:
其中,s为根据上述公式(14)确定的点位置,o为偏移量,Ix为量化数据,Fx为待量化数据,round为进行四舍五入的取整运算。可以理解的是,也可以采用其他的取整运 算方法,例如采用向上取整、向下取整、向零取整等取整运算,替换公式(15)中的四 舍五入的取整运算。
进一步地,该待量化数据对应的中间表示数据Fx1可以是:
其中,s为根据上述公式(14)确定的点位置,o为偏移量,Fx为待量化数据,round为进 行四舍五入的取整运算。Fx1可以是对上述的量化数据Ix进行反量化获得的数据,该中间表示数据Fx1的数据表示格式与上述的待量化数据Fx的数据表示格式一致,该中间表示数据Fx1可以用于计算量化误差,详见下文。其中,反量化是指量化的逆过程。
进一步可选地,处理器可以根据该待量化数据中的绝对值最大值Z2进一步确定点位 置s和第一缩放系数f1,其中,点位置s具体计算方式可参见上述公式(14)。第一缩放系数f1可以按照如下公式进行计算:
处理器可以根据偏移量及其对应的第一缩放系数f1和点位置s,对待量化数据进行量 化,获得量化数据:
其中,f1为第一缩放系数,s为根据上述公式(14)确定的点位置,o为偏移量,Ix为量化数据,Fx为待量化数据,round为进行四舍五入的取整运算。可以理解的是,也可以 采用其他的取整运算方法,例如采用向上取整、向下取整、向零取整等取整运算,替换 公式(18)中的四舍五入的取整运算。
进一步地,该待量化数据对应的中间表示数据Fx1可以是:
其中,f1为第一缩放系数,s为根据上述公式(14)确定的点位置,o为偏移量,Fx为待量化数据,round为进行四舍五入的取整运算。Fx1可以是对上述的量化数据Ix进行反 量化获得的数据,该中间表示数据Fx1的数据表示格式与上述的待量化数据Fx的数据表示 格式一致,该中间表示数据Fx1可以用于计算量化误差,详见下文。其中,反量化是指量 化的逆过程。
可选地,该缩放系数还可以包括第二缩放系数,该第二缩放系数可以按照如下方式 进行计算:
处理器可以单独使用第二缩放系数对待量化数据Fx进行量化,获得量化数据:
其中,f2为第二缩放系数,Ix为量化数据,Fx为待量化数据,round为进行四舍五入的取整运算。可以理解的是,也可以采用其他的取整运算方法,例如采用向上取整、向 下取整、向零取整等取整运算,替换公式(21)中的四舍五入的取整运算。可以理解的 是,在数据位宽一定的情况下,采用不同的缩放系数,可以调整量化后数据的数值范围。
进一步地,该待量化数据对应的中间表示数据Fx1可以是:
其中,f2为第二缩放系数,Fx为待量化数据,round为进行四舍五入的取整运算。Fx1可 以是对上述的量化数据Ix进行反量化获得的数据,该中间表示数据Fx1的数据表示格式与 上述的待量化数据Fx的数据表示格式一致,该中间表示数据Fx1可以用于计算量化误差,详见下文。其中,反量化是指量化的逆过程。
进一步地,上述第二缩放系数可以根据点位置和第一缩放系数f1确定。即第二缩放 系数可以按照如下公式进行计算:
f2=2s×f1公式(23)
其中,s为根据上述公式(14)确定的点位置,f1是按照上述公式(17)计算 获得的第一缩放系数。
可选地,处理器还可以根据偏移量o对待量化数据进行量化,此时点位置s和/或缩放 系数可以为预设值。此时,处理器根据偏移量对待量化数据进行量化,获得量化数据:
Ix=round(Fx-o)公式(24)
其中,o为偏移量,Ix为量化数据,Fx为待量化数据,round为进行四舍五入的取整运算。可以理解的是,也可以采用其他的取整运算方法,例如采用向上取整、向下取整、 向零取整等取整运算,替换公式(24)中的四舍五入的取整运算。可以理解的是,在数 据位宽一定的情况下,采用不同的偏移量,可以调整量化后数据的数值与量化前数据之 间的偏移量。
进一步地,该待量化数据对应的中间表示数据Fx1可以是:
Fx1=round(Fx-o)+o公式(25)
其中,o为偏移量,Fx为待量化数据,round为进行四舍五入的取整运算。Fx1可以是对上述的量化数据Ix进行反量化获得的数据,该中间表示数据Fx1的数据表示格式与上述的待量化数据Fx的数据表示格式一致,该中间表示数据Fx1可以用于计算量化误差,详见 下文。其中,反量化是指量化的逆过程。
本公开的量化操作不仅可以用于上述浮点数据的量化,还可以用于实现定点数据的 量化。可选地,该第一数据格式的运算数据也可以是定点表示的运算数据,该第二数据格式的运算数据可以是定点表示的运算数据,且第二数据格式的运算数据的数据表示范围小于第一数据格式的数据表示范围,第二数据格式的小数点位数大于第一数据格式的小数点位数,即第二数据格式的运算数据相较于第一数据格式的运算数据具有更高的精度。例如,该第一数据格式的运算数据为占用16位的定点数据,该第二数据格式可以是 占用8位的定点数据。本公开实施例中,可以通过定点表示的运算数据进行量化处理,从 而进一步减小运算数据占用的存储空间,提高运算数据的访存效率及运算效率。
本公开一实施例的循环神经网络的量化参数调整方法,能够应用于循环神经网络的 训练或微调过程中,从而在循环神经网络的训练或微调过程中,动态地调整循环神经网络运算过程中运算数据的量化参数,以提高该循环神经网络的量化精度。其中,循环神 经网络可以是深度循环神经网络或卷积循环神经网络等等,此处不作具体限定。
应当清楚的是,循环神经网络的训练(Training)是指对循环神经网络(该循环神经 网络的权值可以是随机数)进行多次迭代运算(iteration),使得循环神经网络的权值能 够满足预设条件的过程。其中,一次迭代运算一般包括一次正向运算、一次反向运算和一次权值更新运算。正向运算是指根据循环神经网络的输入数据进行正向推理,获得正 向运算结果的过程。反向运算是根据正向运算结果与预设参考值确定损失值,并根据该 损失值确定权值梯度值和/或输入数据梯度值的过程。权值更新运算是指根据权值梯度值 调整循环神经网络的权值的过程。具体地,循环神经网络的训练过程如下:处理器可以 采用权值为随机数的循环神经网络对输入数据进行正向运算,获得正向运算结果。之后 处理器根据该正向运算结果与预设参考值确定损失值,根据该损失值确定权值梯度值和/ 或输入数据梯度值。最后,处理器可以根据权值梯度值更新循环神经网络的梯度值,获 得新的权值,完成一次迭代运算。处理器循环执行多次迭代运算,直至循环神经网络的 正向运算结果满足预设条件。例如,当循环神经网络的正向运算结果收敛于预设参考值 时,结束训练。或者,当循环神经网络的正向运算结果与预设参考值确定的损失值小于 或等于预设精度时,结束训练。
微调是指对循环神经网络(该循环神经网络的权值已经处于收敛状态而非随机数) 进行多次迭代运算,以使得循环神经网络的精度能够满足预设需求的过程。该微调过程 与上述训练过程基本一致,可以认为是对处于收敛状态的循环神经网络进行重训练的过 程。推理(Inference)是指采用权值满足预设条件的循环神经网络进行正向运算,从而实现识别或分类等功能的过程,如采用循环神经网络进行图像识别等等。
本公开实施例中,在上述循环神经网络的训练或微调过程中,可以在循环神经网络 运算的不同阶段采用不同的量化参数对循环神经网络的运算数据进行量化,并根据量化 后的数据进行迭代运算,从而可以减小循环神经网络运算过程中的数据存储空间,提高数据访存效率及运算效率。图4示出本公开一实施例的循环神经网络的量化参数调整方 法的流程图。如图4所示,上述方法可以包括步骤S100至步骤S200。
在步骤S100中,获取待量化数据的数据变动幅度。
可选地,处理器可以直接读取该待量化数据的数据变动幅度,该待量化数据的数据 变动幅度可以是用户输入的。
可选地,处理器也可以根据当前检验迭代的待量化数据和历史迭代的待量化数据, 计算获得上述的待量化数据的数据变动幅度,其中当前检验迭代是指当前执行的迭代运 算,历史迭代是指在当前检验迭代之前执行的迭代运算。例如,处理器可以获取当前检验迭代的待量化数据中元素的最大值以及元素的平均值,以及各个历史迭代的待量化数据中元素的最大值以及元素的平均值,并根据各次迭代中元素的最大值和元素的平均值,确定待量化数据的变动幅度。若当前检验迭代的待量化数据中元素的最大值与预设数量的历史迭代的待量化数据中元素的最大值较为接近,且当前检验迭代的待量化数据中元素的平均值与预设数量的历史迭代的待量化数据中元素的平均值较为接近时,则可以确定上述的待量化数据的数据变动幅度较小。否则,则可以确定待量化数据的数据变动幅 度较大。再如,该待量化数据的数据变动幅度可以采用待量化数据的滑动平均值或方差 等进行表示,此处不作具体限定。
本公开实施例中,该待量化数据的数据变动幅度可以用于确定是否需要调整待量化 数据的量化参数。例如,若待量化数据的数据变动幅度较大,则可以说明需要及时调整量化参数,以保证量化精度。若待量化数据的数据变动幅度较小,则当前检验迭代及其 之后一定数量的迭代可以沿用历史迭代的量化参数,从而可以避免频繁的调整量化参数, 提高量化效率。
其中,每次迭代涉及至少一个待量化数据,该待量化数据可以是浮点表示的运算数 据,也可以是定点表示的运算数据。可选地,每次迭代的待量化数据可以是神经元数据、权值数据或梯度数据中的至少一种,梯度数据还可以包括神经元梯度数据和权值梯度数据等。
在步骤S200中,根据所述待量化数据的数据变动幅度,确定第一目标迭代间隔,以根据所述第一目标迭代间隔调整所述循环神经网络运算中的量化参数,其中,所述第一 目标迭代间隔包括至少一次迭代,所述循环神经网络的量化参数用于实现对所述循环神 经网络运算中待量化数据的量化操作。
可选地,该量化参数可以包括上述的点位置和/或缩放系数,其中,缩放系数可以包 括第一缩放系数和第二缩放系数。具体的点位置计算方法可以参见上述的公式(2),缩放系数的计算方法可参见上述的公式(5)或(8),此处不再赘述。可选地,该量化参数 还可以包括偏移量,该偏移量的计算方法可参见上述的公式(12);更进一步地,处理器 还可以根据按照公式(14)确定点位置,根据上述的公式(17)或(20)确定缩放系数。 本申请实施例中,处理器可以根据确定的目标迭代间隔,更新上述的点位置、缩放系数 或偏移量中的至少一种,以调整该循环神经网络运算中的量化参数。也就是说,该循环 神经网络运算中的量化参数可以根据循环神经网络运算中待量化数据的数据变动幅度进 行更新,从而可以保证量化精度。
可以理解的是,通过对循环神经网络训练或微调过程中的运算数据的变化趋势进行 统计和分析,可以得到待量化数据的数据变动曲线。图5a示出本公开一实施例的待量化数据在运算过程中的变动趋势图,如图5a所示,根据该数据变动曲线可以获知,在循环 神经网络训练或微调的初期,不同迭代的待量化数据的数据变动较为剧烈,随着训练或 微调运算的进行,不同迭代的待量化数据的数据变动逐渐趋于平缓。因此,在循环神经 网络训练或微调的初期,可以较为频繁地调整量化参数;在循环神经网络训练或微调的 中期和后期,可以间隔多次迭代或周期再调整量化参数。本公开的方法即是通过确定合 适的迭代间隔,以取得量化精度和量化效率的平衡。
具体地,处理器可以通过待量化数据的数据变动幅度,确定第一目标迭代间隔,以根据该第一目标迭代间隔调整循环神经网络运算中的量化参数。可选地,该第一目标迭 代间隔可以随着待量化数据的数据变动幅度的减小而增大。也就是说,该待量化数据的 数据变动幅度越大时,则该第一目标迭代间隔越小,表明量化参数的调整越频繁。该待 量化数据的数据变动幅度越小时,则该第一目标迭代间隔越大,表明量化参数的调整越 不频繁。当然,在其他实施例中,上述的第一目标迭代间隔还可以是超参数,例如,该 第一目标迭代间隔可以是用户自定义设置的。
可选地,上述的权值数据、神经元数据及梯度数据等各种待量化数据可以分别具有 的不同的迭代间隔。相应地,处理器可以分别获取各种待量化数据对应的数据变动幅度, 以分别根据每种待量化数据的数据变动幅度,确定相应种类的待量化数据对应的第一目 标迭代间隔。也就是说,各种待量化数据的量化过程可以是异步进行的。本公开实施例中,由于不同种类的待量化数据之间具有差异性,因此可以采用不同的待量化数据的数 据变动幅度,确定相应的第一目标迭代间隔,并分别根据相应的第一目标迭代间隔确定 对应的量化参数,从而可以保证待量化数据的量化精度,进而保证循环神经网络的运算 结果的正确性。
当然,在其他实施例中,针对不同种类的待量化数据还可以确定相同的目标迭代间 隔(包括第一目标迭代间隔、预设迭代间隔、第二目标迭代间隔中的任一个),以根据该目标迭代间隔调整相应待量化数据对应的量化参数。例如,处理器可以分别获取各种待 量化数据的数据变动幅度,并根据最大的待量化数据的数据变动幅度确定目标迭代间隔, 并根据该目标迭代间隔分别确定各种待量化数据的量化参数。更进一步地,不同种类的 待量化数据还可以采用相同的量化参数。
进一步可选地,上述的循环神经网络可以包括至少一个运算层,该待量化数据可以 是各个运算层涉及的神经元数据、权值数据或梯度数据中的至少一种。此时,处理器可以获得当前运算层涉及的待量化数据,并根据上述方法确定当前运算层中各种待量化数据的数据变动幅度及对应的第一目标迭代间隔。
可选地,处理器可以在每次迭代运算过程中均确定一次上述的待量化数据的数据变 动幅度,并根据相应的待量化数据的数据变动幅度确定一次第一目标迭代间隔。也就是说,处理器可以在每次迭代均计算一次第一目标迭代间隔。具体的第一目标迭代间隔的 计算方式可参见下文中的描述。进一步地,处理器可以根据预设条件从各次迭代中选定 检验迭代,在各次检验迭代处确定待量化数据的变动幅度,并根据检验迭代对应的第一 目标迭代间隔对量化参数等的更新调整。此时,若该迭代不是选定检验迭代,处理器可 以忽略该迭代对应的第一目标迭代间隔。
可选地,每个目标迭代间隔可以对应一检验迭代,该检验迭代可以是该目标迭代间 隔的起始迭代,也可以是该目标迭代间隔的终止迭代。处理器可以在各个目标迭代间隔的检验迭代处调整循环神经网络的量化参数,以实现根据目标迭代间隔调整循环神经网络运算的量化参数。其中,检验迭代可以是用于核查当前量化参数是否满足待量化数据 的需求的时间点。该调整前的量化参数可以与调整后的量化参数相同,也可以与调整后 的量化参数不同。可选地,相邻的检验迭代之间的间隔可以大于或等于一个目标迭代间 隔。
例如,该目标迭代间隔可以从当前检验迭代开始计算迭代数量,该当前检验迭代可 以是该目标迭代间隔的起始迭代。例如,当前检验迭代为第100次迭代,处理器根据待量化数据的数据变动幅度,确定目标迭代间隔的迭代间隔为3,则处理器可以确定该目标迭代间隔包括3次迭代,分别为第100次迭代、第101次迭代和第102次迭代。处理器可以在 该第100次迭代处调整循环神经网络运算中的量化参数。其中,当前检验迭代是处理器当 前执行量化参数更新调整时对应的迭代运算。
可选地,目标迭代间隔还可以是从当前检验迭代的下一次迭代开始计算迭代数量, 该当前检验迭代可以是当前检验迭代之前的上一迭代间隔的终止迭代。例如,当前检验 迭代为第100次迭代,处理器根据待量化数据的数据变动幅度,确定目标迭代间隔的迭代 间隔为3,则处理器可以确定该目标迭代间隔包括3次迭代,分别为第101次迭代、第102次迭代和第103次迭代。处理器可以在该第100次迭代和第103次迭代处调整循环神经网络运算中的量化参数。本公开对目标迭代间隔的确定方式不作具体限定。
图5b示出本公开一实施例的循环神经网络的展开示意图。如图5b所示,给出了循环 神经网络的隐藏层的展开示意图,t-1,t,t+1表示时间序列。X表示输入的样本。St表示样本在时间t处的记忆,St=f(W*St-1+U*Xt)。W表示输入的权重,U表示此刻输入的样 本的权重,V表示输出的样本权重。由于不同的循环神经网络展开的层数不同,不同在对 循环神经网络进行量化参数更新时,不同周期中所包含的迭代总数是不同的。图5c示出 本公开一实施例的循环神经网络的周期示意图。如图5c所示,iter1、iter2、iter3、iter4为 循环神经网络的三个周期,其中,第一个周期iter1中包括t0、t1、t2、t3四个迭代。第二 个周期iter2中包括t0、t1两个迭代。第三个周期iter3中包括t0、t1、t2三个迭代。第四个 周期iter2中包括t0、t1、t2、t3、t4五个迭代。在计算循环神经网络在何时能够更新量化 参数时,需要结合不同周期中迭代的总数进行计算。
在一个实施例中,根据上文中点位置、缩放系数及偏移量的计算公式可以看出,量化参数往往与待量化数据相关,因此,上述操作S100中,待量化数据的数据变动幅度也 可以通过量化参数的变动幅度间接确定,该待量化数据的数据变动幅度可以通过量化参 数的变动幅度进行表征。具体地,图6示出本公开一实施例的循环神经网络的参数调整方 法的流程图,如图6所示,上述操作S100可以包括操作S110,操作S200可以包括操作S210 (详见下文描述)。
S110、获取点位置的变动幅度;其中,所述点位置的变动幅度能够用于表征所述待量化数据的数据变动幅度,所述点位置的变动幅度与所述待量化数据的数据变动幅度正相关。
可选地,点位置的变动幅度能够间接反应待量化数据的变动幅度。该点位置的变动 幅度可以是根据当前检验迭代的点位置和至少一次历史迭代的点位置确定的。其中,当前检验迭代的点位置及各次历史迭代的点位置可以根据公式(2)进行确定。当然,当前 检验迭代的点位置及各次历史迭代的点位置还可以根据公式(14)进行确定。
例如,处理器还可以计算当前检验迭代的点位置和历史迭代的点位置的方差等,并 根据该方差确定点位置的变动幅度。再如,处理器可以根据当前检验迭代的点位置和历史迭代的点位置的平均值,确定点位置的变动幅度。具体地,如图7所示,上述操作S110 可以包括操作S111至操作S113,操作S210可以包括操作S211(详见下文描述)。
S111、根据所述当前检验迭代之前的上一检验迭代对应的点位置,以及所述上一检 验迭代之前的历史迭代对应的点位置,确定第一均值。其中,上一检验迭代为上一次调整所述量化参数时对应的迭代,上一检验迭代与所述当前检验迭代之间间隔至少一个迭代间隔。
可选地,至少一次历史迭代可以分属于至少一个迭代间隔中,每个迭代间隔可以对 应有一个检验迭代,相邻的两个检验迭代可以具有一个迭代间隔。上述操作S111中的上一检验迭代可以是目标迭代间隔之前的上一迭代间隔对应的检验迭代。
可选地,该第一均值可以按照如下公式进行计算:
M1=a1×st-1+a2×st-2+a3×st-3+…+am×s1公式(26)
其中,a1~am是指各次迭代的点位置对应的计算权重,st-1是指上一检验迭代对应的 点位置,st-2,st-3…s1是指上一检验迭代之前的历史迭代对应的点位置,M1是指上述 的第一均值。进一步地,根据数据的分布特性,历史迭代与该上一检验迭代距离越远, 对该上一检验迭代附近的迭代的点位置的分布及变动幅度影响越小,因此,上述计算权 重可以按照a1~am的顺序依次减小。
例如,上一检验迭代为循环神经网络运算的第100次迭代,历史迭代可以是第1次迭 代至第99次迭代,则处理器可以获得该第100次迭代的点位置(即st-1),并获得该第100次迭代之前的历史迭代的点位置,即s1可以指循环神经网络的第1次迭代对应的点位置……,st-3可以指循环神经网络的第98次迭代对应的点位置,st-2可以指循环神经网络 的第99次迭代对应的点位置。进一步地,处理器可以根据上述公式计算获得第一均值。
更进一步地,该第一均值可以根据各个迭代间隔对应的检验迭代的点位置进行计算。 例如,该第一均值可以按照如下公式进行计算:
M1=a1×st-1+a2×st-2+a3×st-3+…+am×s1;
其中,a1~am是指各次检验迭代的点位置对应的计算权重,st-1是指上一检验迭代对 应的点位置,st-2,st-3…s1是指上一检验迭代之前的预设数量的迭代间隔的检验迭代对应的点位置,M1是指上述的第一均值。
例如,上一检验迭代为循环神经网络运算的第100次迭代,历史迭代可以是第1次迭 代至第99次迭代,该99次历史迭代可以分属于11个迭代间隔。比如,第1次迭代至第9次迭代属于第1个迭代间隔,第10次迭代至第18次迭代属于第2个迭代间隔,……,第90次 迭代至第99次迭代属于第11个迭代间隔。则处理器可以获得该第100次迭代的点位置(即 st -1),并获得该第100次迭代之前的迭代间隔中检验迭代的点位置,即s1可以指循环神经 网络的第1个迭代间隔的检验迭代对应的点位置(比如s1可以指循环神经网络的第1次迭 代对应的点位置),……,st-3可以指循环神经网络的第10个迭代间隔的检验迭代对应的 点位置(比如st-3可以指循环神经网络的第81次迭代对应的点位置),st-2可以指循环神 经网络的第11个迭代间隔的检验迭代对应的点位置(比如,st-2可以指循环神经网络的 第90次迭代对应的点位置)。进一步地,处理器可以根据上述公式计算获得第一均值M1。
本公开实施例中,为方便举例说明,假定该迭代间隔包含的迭代数量相同。而在实际使用过程中,如图5c所示,该循环神经网络中迭代间隔包含的迭代数量不相同。可选 地,该迭代间隔包含的迭代数量随迭代的增加而增加,即随着循环神经网络训练或微调 的进行,迭代间隔可以越来越大。
再进一步地,为进一步简化计算,降低数据占用的存储空间,上述第一均值M1可以采用如下公式进行计算:
M1=α×st-1+(1-α)×M0公式(27)
其中,α是指上一检验迭代对应的点位置的计算权重,st-1是指上一检验迭代对应的 点位置,M0是指该上一检验迭代之前的检验迭代对应的滑动平均值,该M0的具体计算方式可参照上述的M1的计算方式,此处不再赘述。
S112、根据当前检验迭代对应的点位置及所述当前检验迭代之前的历史迭代的点位 置,确定第二均值。其中,当前检验迭代对应的点位置可以根据当前检验迭代的目标数据位宽和待量化数据确定。
可选地,该第二均值M2可以按照如下公式进行计算:
M2=b1×st+b2×st-1+b3×st-2+…+bm×s1公式(28)
其中,b1~bm是指各次迭代的点位置对应的计算权重,st是指当前检验迭代对应的点 位置,st-1,st-2…s1是指当前检验迭代之前的历史迭代对应的点位置,M2是指上述的第二均值。进一步地,根据数据的分布特性,历史迭代与该当前检验迭代距离越远,对 该当前检验迭代附近的迭代的点位置的分布及变动幅度影响越小,因此,上述计算权重 可以按照b1~bm的顺序依次减小。
例如,当前检验迭代为循环神经网络运算的第101次迭代,该当前检验迭代之前的历 史迭代是指第1次迭代至第100次迭代。则处理器可以获得该第101次迭代的点位置(即st), 并获得该第101次迭代之前的历史迭代的点位置,即s1可以指循环神经网络的第1次迭代 对应的点位置……,st-2可以指循环神经网络的第99次迭代对应的点位置,st-1可以指循环神经网络的第100次迭代对应的点位置。进一步地,处理器可以根据上述公式计算获得第二均值M2。
可选地,该第二均值可以根据各个迭代间隔对应的检验迭代的点位置进行计算。具 体地,图8示出本公开一实施例中第二均值的确定方法的流程图,如图8所示,上述操作S112可以包括如下操作:
S1121、获取预设数量的中间滑动平均值,其中,各个所述中间滑动平均值是根据所 述当前检验迭代之前所述预设数量的检验迭代确定,所述检验迭代为调整所述神经网络 量化过程中的参数时对应的迭代;
S1122、根据所述当前检验迭代的点位置以及所述预设数量的中间滑动平均值,确定 所述第二均值。
例如,该第二均值可以按照如下公式进行计算:
M2=b1×st+b2×st-1+b3×st-2+…+bm×s1;
其中,b1~bm是指各次迭代的点位置对应的计算权重,st是指当前检验迭代对应的点 位置,st-1,st-2…s1是指当前检验迭代之前的检验迭代对应的点位置,M2是指上述的第二均值。
例如,当前检验迭代为第100次迭代,历史迭代可以是第1次迭代至第99次迭代,该99次历史迭代可以分属于11个迭代间隔。比如,第1次迭代至第9次迭代属于第1个迭代间隔,第10次迭代至第18次迭代属于第2个迭代间隔,……,第90次迭代至第99次迭代属于 第11个迭代间隔。则处理器可以获得该第100次迭代的点位置(即st),并获得该第100次 迭代之前的迭代间隔中检验迭代的点位置,即s1可以指循环神经网络的第1个迭代间隔的 检验迭代对应的点位置(比如s1可以指循环神经网络的第1次迭代对应的点位置),……, st-2可以指循环神经网络的第10个迭代间隔的检验迭代对应的点位置(比如st-2可以指循 环神经网络的第81次迭代对应的点位置),st-1可以指循环神经网络的第11个迭代间隔的 检验迭代对应的点位置(比如,st-1可以指循环神经网络的第90次迭代对应的点位置)。 进一步地,处理器可以根据上述公式计算获得第二均值M2。
本公开实施例中,为方便举例说明,假定该迭代间隔包含的迭代数量相同。而在实际使用过程中,该迭代间隔包含的迭代数量可以不相同。可选地,该迭代间隔包含的迭 代数量随迭代的增加而增加,即随着循环神经网络训练或微调的进行,迭代间隔可以越 来越大。
更进一步地,为简便计算,降低数据占用的存储空间,处理器可以根据所述当前检验迭代对应的点位置以及所述第一均值,确定所述第二均值,即上述第二均值可以采用 如下公式进行计算:
M2=β×st+(1-β)×M1公式(29)
其中,β是指当前检验迭代对应的点位置的计算权重,M1是指上述的第一均值。
S113、根据所述第一均值和所述第二均值确定第一误差,所述第一误差用于表征所 述当前检验迭代及所述历史迭代的点位置的变动幅度。
可选地,第一误差可以等于第二均值与上述的第一均值之间的差值的绝对值。具体 地,上述的第一误差可以按照如下公式进行计算:
diffupdate 1=|M2-M1|=β|s(t)-M1|公式(30)
可选地,上述的当前检验迭代的点位置可以根据当前检验迭代的待量化数据和当前 检验迭代对应的目标数据位宽确定,具体的点位置计算方式可以参见上文的公式(2)或公式(14)。其中,上述当前检验迭代对应的目标数据位宽可以是超参数。进一步可选地, 该当前检验迭代对应的目标数据位宽可以是用户自定义输入的。可选地,在循环神经网 络训练或微调过程中的待量化数据对应的数据位宽可以是不变的,即同一循环神经网络 的同种待量化数据采用同一数据位宽进行量化,例如,针对该循环神经网络在各次迭代 中的神经元数据均采用8比特的数据位宽进行量化。
可选地,循环神经网络训练或微调过程中的待量化数据对应的数据位宽为可变的, 以保证数据位宽能够满足待量化数据的量化需求。也就是说,处理器可以根据待量化数 据,自适应的调整该待量化数据对应的数据位宽,获得该待量化数据对应的目标数据位宽。具体地,处理器可以首先确定当前检验迭代对应的目标数据位宽,之后,处理器可 以根据该当前检验迭代对应的目标数据位宽及该当前检验迭代对应的待量化数据,确定 当前检验迭代对应的点位置。
图9示出本公开一实施例中数据位宽调整方法的流程图,如图9所示,上述操作S110 可以包括:
S114、根据所述当前检验迭代的待量化数据和所述当前检验迭代的量化数据,确定 量化误差,其中,所述当前检验迭代的量化数据是通过对所述当前检验迭代的待量化数据进行量化获得。
可选地,上述处理器可以采用初始数据位宽对待量化数据进行量化,获得上述的量 化数据。该当前检验迭代的初始数据位宽可以是超参数,该当前检验迭代的初始数据位宽也可以是根据该当前检验迭代之前的上一检验迭代的待量化数据确定的。
具体地,处理器可以根据当前检验迭代的待量化数据和当前检验迭代的量化数据, 确定中间表示数据。可选地,所述中间表示数据与上述的待量化数据的表示格式一致。例如,处理器可以对上述的量化数据进行反量化,获得与待量化数据的表示格式一致的 中间表示数据,其中,反量化是指量化的逆过程。例如,该量化数据可以采用上述公式 (3)获得,处理器还可以按照上述公式(4)对量化数据进行反量化,获得相应的中间 表示数据,并根据待量化数据和中间表示数据确定量化误差。
进一步地,处理器可以根据待量化数据及其对应的中间表示数据计算获得量化误差。 设当前检验迭代的待量化数据为Fx=[z1,z2…,zm],该待量化数据对应的中间表示数据为 Fx1=[z1 (n),z2 (n)…,zm (n)]。处理器可以根据该待量化数据Fx及其对应的中间表示数据Fx1确定误差项,并根据该误差项确定量化误差。
可选地,处理器可以根据中间表示数据Fx1中各元素的和,以及待量化数据Fx中各元 素的和确定上述的误差项,该误差项可以是中间表示数据Fx1中各元素的和与待量化数据 Fx中各元素的和的差值。之后,处理器可以根据该误差项确定量化误差。具体的量化误差可以按照如下公式进行确定:
其中,zi为待量化数据中的元素,zi (n)为中间表示数据Fx1的元素。
可选地,处理器可以分别计算待量化数据中各元素与中间表示数据Fx1中相应元素的 差值,获得m个差值,并将该m个差值的和作为误差项。之后,处理器可以根据该误差项确定量化误差。具体的量化误差可以按照如下公式确定:
其中,zi为待量化数据中的元素,zi (n)为中间表示数据Fx1的元素。
可选地,上述待量化数据中各元素与中间表示数据Fx1中相应元素的差值可以约等于 2s-1,因此,上述量化误差还可以按照如下公式确定:
其中,m为目标数据对应的中间表示数据Fx1的数量,s为点位置,zi为待量化数据中的元素。
可选地,所述中间表示数据也可以与上述的量化数据的数据表示格式一致,并根据 该中间表示数据和量化数据确定量化误差。例如,待量化数据可以表示为:Fx≈Ix×2s,则可以确定出中间表示数据该中间表示数据Ix1可以与上述的量化数据具有相同的数据表示格式。此时处理器可以根据中间表示数据Ix1和上述公式(3)计算获得的确定量化误差。具体的量化误差确定方式可参照上述的公式(31)~公式(33)。
S115、根据所述量化误差,确定所述当前检验迭代对应的目标数据位宽。
具体地,处理器可以根据该量化误差,自适应地调整当前检验迭代对应的数据位宽, 确定该当前检验迭代调整后的目标数据位宽。当该量化误差满足预设条件时,则可以保 持当前检验迭代对应的数据位宽不变,即该当前检验迭代的目标数据位宽可以等于初始 数据位宽。当量化误差不满足预设条件时,处理器可以调整当前检验迭代的待量化数据对应的数据位宽,获得当前检验迭代对应的目标数据位宽。当处理器采用该目标数据位 宽对当前检验迭代的待量化数据进行量化时,量化误差满足上述的预设条件。可选地, 上述的预设条件可以是用户设置的预设阈值。
可选地,图10示出本公开另一实施例中数据位宽调整方法的流程图,如图10所示,上述操作S115可以包括:
S1150、处理器可以判断上述的量化误差是否大于或等于第一预设阈值。
若所述量化误差大于或等于第一预设阈值,则可以执行操作S1151,增大所述当前检 验迭代对应的数据位宽,获得当前检验迭代的目标数据位宽。当量化误差小于第一预设阈值时,则可以保持当前检验迭代的数据位宽不变。
进一步可选地,处理器可以经过一次调整获得上述的目标数据位宽。例如,当前检验迭代的初始数据位宽为n1,处理器可以经一次调整确定该目标数据位宽n2=n1+t,其中,t为数据位宽的调整值。其中,采用该目标数据位宽n2对当前检验迭代的待量化数据进行量化时,获得的量化误差可以小于所述第一预设阈值。
进一步可选地,处理器可以经过多次调整获得目标数据位宽,直至量化误差小于第 一预设阈值,并将该量化误差小于第一预设阈值时的数据位宽作为目标数据位宽。具体地,若所述量化误差大于或等于第一预设阈值,则根据第一预设位宽步长确定第一中间 数据位宽;之后处理器可以根据该第一中间数据位宽对当前检验迭代的待量化数据进行 量化,获得量化数据,并根据所述当前检验迭代中待量化数据和所述当前检验迭代的量 化数据,确定量化误差,直至所述量化误差小于所述第一预设阈值。处理器可以将该量 化误差小于第一预设阈值时对应的数据位宽,作为该目标数据位宽。
例如,当前检验迭代的初始数据位宽为n1,处理器可以采用该初始数据位宽n1对当 前检验迭代的待量化数据A进行量化,获得量化数据B1,并根据该待量化数据A和量化数据B1计算获得量化误差C1。在量化误差C1大于或等于第一预设阈值时,处理器确定第一 中间数据位宽n2=n1+t1,其中,t1为第一预设位宽步长。之后,处理器可以根据该第一中 间数据位宽n2对当前检验迭代的待量化数据进行量化,获得当前检验迭代的量化数据B2, 并根据该待量化数据A和量化数据B2计算获得量化误差C2。若该量化误差C2大于或等于 第一预设阈值时,处理器确定第一中间数据位宽n2=n1+t1+t1,之后根据该新的第一中间 数据位宽对当前检验迭代的待量化数据A进行量化,并计算相应的量化误差,直至量化误 差小于第一预设阈值。若量化误差C1小于第一预设阈值,则可以保持该初始数据位宽n1 不变。
更进一步地,上述的第一预设位宽步长可以是恒定值,例如,每当量化误差大于第一预设阈值时,则处理器可以将当前检验迭代对应的数据位宽增大相同的位宽值。可选地,上述的第一预设位宽步长也可以是可变值,例如,处理器可以计算量化误差与第一 预设阈值的差值,若该量化误差与第一预设阈值的差值越小,则第一预设位宽步长的值 越小。
可选地,图11示出本公开又一实施例中数据位宽调整方法的流程图,如图11所示,上述操作S115还可以包括:
S1152、处理器可以判断上述的量化误差是否小于或等于第一预设阈值。
若所述量化误差小于或等于第二预设阈值,则可以执行操作S1153,减小所述当前检 验迭代对应的数据位宽,获得当前检验迭代的目标数据位宽。当量化误差大于第二预设阈值时,则可以保持当前检验迭代的数据位宽不变。
进一步可选地,处理器可以经过一次调整获得上述的目标数据位宽。例如,当前检验迭代的初始数据位宽为n1,处理器可以经一次调整确定该目标数据位宽n2=n1-t,其中,t为数据位宽的调整值。其中,采用该目标数据位宽n2对当前检验迭代的待量化数据进行量化时,获得的量化误差可以大于所述第二预设阈值。
进一步可选地,处理器可以经过多次调整获得目标数据位宽,直至量化误差大于第 二预设阈值,并将该量化误差大于第二预设阈值时的数据位宽作为目标数据位宽。具体地,若所述量化误差小于或等于第一预设阈值,则根据第二预设位宽步长确定第二中间 数据位宽;之后处理器可以根据该第二中间数据位宽对当前检验迭代的待量化数据进行 量化,获得量化数据,并根据所述当前检验迭代中待量化数据和所述当前检验迭代的量 化数据,确定量化误差,直至所述量化误差大于所述第二预设阈值。处理器可以将该量 化误差大于第二预设阈值时对应的数据位宽,作为该目标数据位宽。
例如,当前检验迭代的初始数据位宽为n1,处理器可以采用该初始数据位宽n1对当 前检验迭代的待量化数据A进行量化,获得量化数据B1,并根据该待量化数据A和量化数据B1计算获得量化误差C1。在量化误差C1小于或等于第二预设阈值时,处理器确定第二 中间数据位宽n2=n1-t2,其中,t2为第二预设位宽步长。之后,处理器可以根据该第二中 间数据位宽n2对当前检验迭代的待量化数据进行量化,获得当前检验迭代的量化数据B2, 并根据该待量化数据A和量化数据B2计算获得量化误差C2。若该量化误差C2小于或等于 第二预设阈值时,处理器确定第二中间数据位宽n2=n1-t2-t2,之后根据该新的第二中间 数据位宽对当前检验迭代的待量化数据A进行量化,并计算相应的量化误差,直至量化误 差大于第二预设阈值。若量化误差C1大于第二预设阈值,则可以保持该初始数据位宽n1 不变。
更进一步地,上述的第二预设位宽步长可以是恒定值,例如,每当量化误差小于第二预设阈值时,则处理器可以将当前检验迭代对应的数据位宽减小相同的位宽值。可选地,上述的第二预设位宽步长也可以是可变值,例如,处理器可以计算量化误差与第二 预设阈值的差值,若该量化误差与第二预设阈值的差值越小,则第二预设位宽步长的值 越小。
可选地,图12示出本公开再一实施例中数据位宽调整方法的流程图,如图12所示,当处理器确定量化误差小于第一预设阈值,且量化误差大于第二预设阈值时,可以保持 当前检验迭代的数据位宽不变,其中,第一预设阈值大于第二预设阈值。即当前检验迭 代的目标数据位宽可以等于初始数据位宽。其中,图12中仅以举例的方式说明本公开一 实施例的数据位宽确定方式,图12中各个操作的顺序可以适应性调整,此处并不作具体 限定。
本公开实施例中,由于当前检验迭代的数据位宽发生变化时,会相应的带来点位置 的变化。但此时点位置的变化并非是待量化数据的数据变动引起的,根据上述公式(30)确定的第一误差计算获得的目标迭代间隔可能不准确,从而会影响量化的精度。因此, 在当前检验迭代的数据位宽发生变化时,可以相应的调整上述的第二均值,以保证第一 误差能够准确的反映点位置的变动幅度,进而保证目标迭代间隔的准确性和可靠性。具 体地,图13示出本公开另一实施例中第二均值的确定方法的流程图,如图13所示,上述 方法还可以包括:
S116、根据所述目标数据位宽,确定所述当前检验迭代的数据位宽调整值;
具体地,处理器可以根据当前检验迭代的目标数据位宽和初始数据位宽,确定当前 检验迭代的数据位宽调整值。其中,该数据位宽调整值=目标数据位宽-初始数据位宽。当然,处理器还可以直接获得当前检验迭代的数据位宽调整值。
S117、根据所述当前检验迭代的数据位宽调整值,更新上述的第二均值。
具体地,若数据位宽调整值大于预设参数(例如,该预设参数可以等于零)时,即当前检验迭代的数据位宽增加时,处理器可以相应地减少第二均值。若数据位宽调整值 小于预设参数(例如,该预设参数可以等于零)时,即当前检验迭代的数据位宽减少时, 处理器可以相应地增加第二均值。若数据位宽调整值等于预设参数,即当数据位宽调整 值等于0时,此时当前检验迭代对应的待量化数据未发生改变,更新后的第二均值等于更 新前的第二均值,该更新前的第二均值根据上述公式(29)计算获得。可选地,若数据 位宽调整值等于预设参数,即当数据位宽调整值等于0时,处理器可以不更新第二均值, 即处理器可以不执行上述操作S117。
例如,更新前的第二均值M2=β×st+(1-β)×M1;当前检验迭代对应的目标数 据位宽n2=初始数据位宽n1+Δn时,其中,Δn表示数据位宽调整值。此时,更新后的第二 均值M2=β×(st-Δn)+(1-β)×(M1-Δn)。当前检验迭代对应的目标数据位 宽n2=初始数据位宽n1-Δn时,其中,Δn表示数据位宽调整值,此时,更新后的第二均值 M2=β×(st-Δn)+(1-β)×(M1+Δn),其中,st是指当前检验迭代是根据目 标数据位宽确定的点位置。
再如,更新前的第二均值M2=β×st+(1-β)×M1;当前检验迭代对应的目标数 据位宽n2=初始数据位宽n1+Δn时,其中,Δn表示数据位宽调整值。此时,更新后的第二 均值M2=β×st+(1-β)×M1-Δn。再如,当前检验迭代对应的目标数据位宽n2=初 始数据位宽n1-Δn时,其中,Δn表示数据位宽调整值,此时,更新后的第二均值 M2=β×st+(1-β)×M1+Δn,其中,st是指当前检验迭代是根据目标数据位宽确定 的点位置。
进一步地,如图6所示,上述操作S200可以包括:
S210、根据点位置的变动幅度,确定第一目标迭代间隔,其中,该第一目标迭代间隔与上述的点位置的变动幅度负相关。即上述的点位置的变动幅度越大,则该第一目标 迭代间隔越小。上述的点位置的变动幅度越小,则该第一目标迭代间隔越大。
如上所述,上述的第一误差可以表征点位置的变动幅度,因此,如图7所示,上述操作S210可以包括:
S211、处理器可以根据所述第一误差确定所述第一目标迭代间隔,其中,第一目标迭代间隔与所述第一误差负相关。即第一误差越大,则说明点位置的变化幅度越大,进 而表明待量化数据的数据变动幅度越大,此时,第一目标迭代间隔越小。
具体地,处理器可以根据以下公式计算得到第一目标迭代间隔I:
其中,I为第一目标迭代间隔,diffupdate 1表示上述的第一误差,δ和γ可以为超参数。
可以理解的是,第一误差可以用于衡量点位置的变动幅度,第一误差越大,表明点位置的变动幅度越大,进而说明待量化数据的数据变动幅度越大,第一目标迭代间隔需 要设置得越小。也就是说,第一误差越大,量化参数的调整越频繁。
在本实施例中,通过计算点位置的变动幅度(第一误差),并根据点位置的变动幅度 确定第一目标迭代间隔。由于量化参数根据第一目标迭代间隔确定,也就使得根据量化参数进行量化得到的量化数据,能够更加符合目标数据的点位置的变动趋势,在保证量 化精度的同时,提高循环神经网络的运行效率。
可选地,处理器在当前检验迭代处确定第一目标迭代间隔后,可以进一步在当前检 验迭代处确定第一目标迭代间隔对应的量化参数和数据位宽等参数,从而根据第一目标 迭代间隔更新量化参数。其中,量化参数可以包括点位置和/或缩放系数。进一步地,该量化参数还可以包括偏移量。该量化参数的具体计算方式可参见上文中的描述。图14示 出本公开另一实施例的量化参数调整方法的流程图,如图14所示,上述方法还可以包括:
S300、处理器根据第一目标迭代间隔调整循环神经网络运算中的量化参数。
具体地,处理器可以根据第一目标迭代间隔以及每个周期中迭代的总数确定更新迭 代(亦可称检验迭代),并在各个更新迭代处更新第一目标迭代间隔,还可以在各个更新迭代处更新量化参数。例如,循环神经网络运算中的数据位宽保持不变,此时,处理器 可以在各个更新迭代处直接根据更新迭代的待量化数据,调整点位置等量化参数。再如, 循环神经网络运算中的数据位宽可变,此时,处理器可以在各个更新迭代处更新数据位 宽,并根据更新后的数据位宽和该更新迭代的待量化数据,调整点位置等量化参数。
本公开实施例中,处理器在各个检验迭代处更新量化参数,以保证当前量化参数满 足待量化数据的量化需求。其中,更新前的第一目标迭代间隔与更新后的第一目标迭代间隔可以相同,也可以不同。更新前的数据位宽与更新后的数据位宽可以相同,也可以 不同;即不同迭代间隔的数据位宽可以相同,也可以不同。更新前的量化参数与更新后 的量化参数可以相同,也可以不同;即不同迭代间隔的量化参数可以相同,也可以不同。
可选地,上述操作S300中,处理器可以在更新迭代处确定第一目标迭代间隔中的量 化参数,以调整循环神经网络运算中的量化参数。
在一种可能的实现方式中,当该方法用于循环神经网络的训练或微调过程中时,操 作S200可以包括:
处理器确定当前检验迭代是否大于第一预设迭代,其中,在当前检验迭代大于第一 预设迭代时,根据所述待量化数据的数据变动幅度确定第一目标迭代间隔。在当前检验迭代小于或等于第一预设迭代时,根据预设迭代间隔调整所述量化参数。
其中,当前检验迭代是指处理器当前执行的迭代运算。可选地,该第一预设迭代可以是超参数,该第一预设迭代可以是根据待量化数据的数据变动曲线确定的,该第一预 设迭代也可以是用户自定义设置的。可选地,该第一预设迭代可以小于一个周期(epoch) 包含的迭代总数,其中,一个周期是指数据集中的所有待量化数据均完成一次正向运算 和一次反向运算。
可选地,处理器可以读取用户输入的第一预设迭代,并根据该第一预设迭代与预设 迭代间隔的对应关系,确定预设迭代间隔。可选地,该预设迭代间隔可以是超参数,该预设迭代间隔也可以是用户自定义设置的。此时,处理器可以直接读取用户输入的第一 预设迭代和预设迭代间隔,并根据该预设迭代间隔更新循环神经网络运算中的量化参数。 本公开实施例中,处理器无需根据待量化数据的数据变动幅度,确定目标迭代间隔。
例如,用户输入的第一预设迭代为第100次迭代,预设迭代间隔为5,则在当前检验迭代小于或等于第100次迭代时,可以根据预设迭代间隔更新量化参数。即处理器可以 确定在循环神经网络的训练或微调的第1次迭代至第100次迭代,每间隔5次迭代更新 一次量化参数。具体地,处理器可以确定第1次迭代对应的数据位宽n1及点位置s1等 量化参数,并采用该数据位宽n1和点位置s1等量化参数对第1次迭代至第5次迭代的 待量化数据进行量化,即第1次迭代至第5次迭代可以采用相同的量化参数。之后,处 理器可以确定第6次迭代对应的数据位宽n2及点位置s2等量化参数,并采用该数据位 宽n2和点位置s2等量化参数对第6次迭代至第10次迭代的待量化数据进行量化,即第 6次迭代至第10次迭代可以采用相同的量化参数。同理,处理器可以按照上述量化方式 直至完成第100次迭代。其中,每个迭代间隔中数据位宽及点位置等量化参数的确定方 式可以参见上文的描述,此处不再赘述。
再如,用户输入的第一预设迭代为第100次迭代,预设迭代间隔为1,则在当前检验迭代小于或等于第100次迭代时,可以根据预设迭代间隔更新量化参数。即处理器可以 确定在循环神经网络的训练或微调的第1次迭代至第100次迭代,每次迭代均更新量化 参数。具体地,处理器可以确定第1次迭代对应的数据位宽n1及点位置s1等量化参数, 并采用该数据位宽n1和点位置s1等量化参数对第1次迭代的待量化数据进行量化。之 后,处理器可以确定第2次迭代对应的数据位宽n2及点位置s2等量化参数,并采用该 数据位宽n2和点位置s2等量化参数对第2次迭代的待量化数据进行量化,……。同理, 处理器可以确定出第100次迭代的数据位宽n100以及点位置s100等量化参数,并采用 该数据位宽n100和点位置s100等量化参数对第100次迭代的待量化数据进行量化。其 中,每个迭代间隔中数据位宽及点位置等量化参数的确定方式可以参见上文的描述,此 处不再赘述。
上文仅以数据位宽和量化参数同步更新的方式举例说明,在其他可选的实施例中, 在每个目标迭代间隔中,处理器还可以根据点位置的变动幅度确定点位置的迭代间隔, 并根据该点位置迭代间隔更新点位置等量化参数。
可选地,在当前检验迭代大于第一预设迭代时,可以表明循环神经网络的训练或微 调处于中期阶段,此时可以获得历史迭代的待量化数据的数据变动幅度,并根据该待量化数据的数据变动幅度确定第一目标迭代间隔,该第一目标迭代间隔可以大于上述的预设迭代间隔,从而可以减少量化参数的更新次数,提高量化效率及运算效率。具体地, 在所述当前检验迭代大于第一预设迭代时,根据所述待量化数据的数据变动幅度确定第 一目标迭代间隔。
承接上例,用户输入的第一预设迭代为第100次迭代,预设迭代间隔为1,则在当前检验迭代小于或等于第100次迭代时,可以根据预设迭代间隔更新量化参数。即处理器可以确定在循环神经网络的训练或微调的第1次迭代至第100次迭代,每次迭代均更新量化参数,具体实现方式可以参见上文中的描述。在当前检验迭代大于第100次迭代时,处理 器可以根据当前检验迭代的待量化数据及其之前的历史迭代的待量化数据,确定待量化 数据的数据变动幅度,并根据该待量化数据的数据变动幅度确定第一目标迭代间隔。具 体地,在当前检验迭代大于第100次迭代时,处理器可以自适应地调整当前检验迭代对应 的数据位宽,获得该当前检验迭代对应的目标数据位宽,并将该当前检验迭代对应的目 标数据位宽作为第一目标迭代间隔的数据位宽,其中,第一目标迭代间隔中迭代对应的 数据位宽一致。同时,处理器可以根据当前检验迭代对应的目标数据位宽和待量化数据, 确定当前检验迭代对应的点位置,并根据当前检验迭代对应的点位置确定第一误差。处 理器还可以根据当前检验迭代对应的待量化数据,确定量化误差,并根据量化误差确定 第二误差。之后,处理器可以根据第一误差和第二误差确定第一目标迭代间隔,该第一 目标迭代间隔可以大于上述的预设迭代间隔。进一步地,处理器可以确定第一目标迭代 间隔中的点位置或缩放系数等量化参数,具体确定方式可参见上文中的描述。
例如,当前检验迭代为第100次迭代,处理器根据待量化数据的数据变动幅度,确定 第一目标迭代间隔的迭代间隔为3,则处理器可以确定该第一目标迭代间隔包括3次迭代, 分别为第100次迭代、第101次迭代和第102次迭代。处理器还可以根据第100次迭代的待 量化数据确定量化误差,并根据量化误差确定第二误差和第100次迭代对应的目标数据位 宽,将该目标数据位宽作为第一目标迭代间隔对应的数据位宽,其中,第100次迭代、第101次迭代和第102次迭代对应的数据位宽均为该第100次迭代对应的目标数据位宽。处理器还可以根据该第100次迭代的待量化数据和该第100次迭代对应的目标数据位宽确定该第100次迭代对应的点位置和缩放系数等量化参数。之后,采用该第100次迭代对应的量 化参数对第100次迭代、第101次迭代和第102次迭代进行量化。
在一种可能的实现方式中,操作S200还可以包括:
在当前检验迭代大于或等于第二预设迭代、且当前检验迭代需要进行量化参数调整 时,根据所述第一目标迭代间隔和各周期中迭代的总数确定与所述当前检验迭代对应的 第二目标迭代间隔;
根据所述第二目标迭代间隔确定出与所述当前检验迭代相对应的更新迭代,以在所 述更新迭代中调整所述量化参数,所述更新迭代为所述当前检验迭代之后的迭代;
其中,所述第二预设迭代大于第一预设迭代,所述循环神经网络的量化调整过程包 括多个周期,所述多个周期中迭代的总数不一致。
在当前检验迭代大于第一预设迭代时,处理器可以进一步确定当前检验迭代是否大 于第二预设迭代。其中,所述第二预设迭代大于所述第一预设迭代,所述第二预设迭代间隔大于所述预设迭代间隔。可选地,上述第二预设迭代可以是超参数,第二预设迭代 可以大于至少一个周期的迭代总数。可选地,第二预设迭代可以根据待量化数据的数据 变动曲线确定。可选地,第二预设迭代也可以是用户自定义设置的。
在一种可能的实现方式中,根据所述第一目标迭代间隔和各周期中迭代的总数确定 与所述当前检验迭代对应的第二目标迭代间隔,包括:
根据当前检验迭代在当前周期中的迭代排序数和所述当前周期之后的周期中迭代的 总数,确定出对应所述当前检验迭代的更新周期,所述更新周期中迭代的总数大于或等 于所述迭代排序数;
根据所述第一目标迭代间隔、所述迭代排序数、所述当前周期与更新周期之间的周 期中迭代的总数,确定出所述第二目标迭代间隔。
举例来说,如图5c所示,假定在第一目标迭代周期I=1。在第一周期iter1的t1迭代中 确定需要更新量化参数,则第一周期iter1的t2迭代所对应的下一个更新迭代可以为第二 周期iter2中的t1迭代。在第一周期iter1的t2迭代中确定需要更新量化参数,由于第一周期 iter1的t2迭代的迭代排序数3大于第二周期的迭代总数,则第一周期iter1的t2迭代所对应 的下一个更新迭代会变为第三周期iter3中的t2迭代。在第一周期iter1的t3迭代中确定需要 更新量化参数,由于第一周期iter1的t2迭代的迭代排序数4大于第二周期、第三周期的迭 代总数,则第一周期iter1的t3迭代所对应的下一个更新迭代会变为第四周期iter4中的t3迭 代。
这样,处理器可以根据预设迭代间隔和第二目标迭代间隔对量化参数和第一目标迭 代间隔进行更新,为便于描述本文中对实际进行量化参数和第一目标迭代间隔更新的预 设迭代间隔和第二目标迭代间隔称为参考迭代间隔或目标迭代间隔。
在一种情况下,该循环神经网络运算中的各次迭代对应的数据位宽均不发生变化, 即该循环神经网络运算中各次迭代对应的数据位宽均相同,此时,处理器可以通过确定 参考迭代间隔中的点位置等量化参数,实现根据参考迭代间隔对循环神经网络运算中的 量化参数的调整的目的。其中,该参考迭代间隔中迭代对应的量化参数可以是一致的。也就是说,参考迭代间隔中的各次迭代均采用同一点位置,仅在各次检验迭代处更新确 定点位置等量化参数,从而可以避免每次迭代都对量化参数进行更新调整,从而减少了 量化过程中的计算量,提高了量化操作的效率。
可选地,针对上述数据位宽不变的情况,参考迭代间隔中迭代对应的点位置可以保 持一致。具体地,处理器可以根据当前检验迭代的待量化数据和该当前检验迭代对应的目标数据位宽,确定当前检验迭代对应的点位置,并将该当前检验迭代对应的点位置作 为该参考迭代间隔对应的点位置,该参考迭代间隔中迭代均沿用当前检验迭代对应的点 位置。可选地,该当前检验迭代对应的目标数据位宽可以是超参数。例如,该当前检验 迭代对应的目标数据位宽是由用户自定义输入的。该当前检验迭代对应的点位置可以参 见上文的公式(2)或公式(14)计算。
在一种情况下,该循环神经网络运算中的各次迭代对应的数据位宽可以发生变化, 即不同参考迭代间隔对应的数据位宽可以不一致,但参考迭代间隔中各次迭代的数据位 宽保持不变。其中,该参考迭代间隔中迭代对应的数据位宽可以是超参数,例如,该参考迭代间隔中迭代对应的数据位宽可以是用户自定义输入的。在一种情况下,该参考迭 代间隔中迭代对应的数据位宽也可以是处理器计算获得的,例如,处理器可以根据当前 检验迭代的待量化数据,确定当前检验迭代对应的目标数据位宽,并将该当前检验迭代 对应的目标数据位宽作为参考迭代间隔对应的数据位宽。
此时,为简化量化过程中的计算量,该参考迭代间隔中对应的点位置等量化参数也 可以保持不变。也就是说,参考迭代间隔中的各次迭代均采用同一点位置,仅在各次检验迭代处更新确定点位置等量化参数以及数据位宽,从而可以避免每次迭代都对量化参数进行更新调整,从而减少了量化过程中的计算量,提高了量化操作的效率。
可选地,针对上述参考迭代间隔对应的数据位宽不变的情况,参考迭代间隔中迭代 对应的点位置可以保持一致。具体地,处理器可以根据当前检验迭代的待量化数据和该当前检验迭代对应的目标数据位宽,确定当前检验迭代对应的点位置,并将该当前检验 迭代对应的点位置作为该参考迭代间隔对应的点位置,该参考迭代间隔中迭代均沿用当 前检验迭代对应的点位置。可选地,该当前检验迭代对应的目标数据位宽可以是超参数。 例如,该当前检验迭代对应的目标数据位宽是由用户自定义输入的。该当前检验迭代对 应的点位置可以参见上文的公式(2)或公式(14)计算。
可选地,参考迭代间隔中迭代对应的缩放系数可以一致。处理器可以根据当前检验 迭代的待量化数据,确定当前检验迭代对应的缩放系数,并将该当前检验迭代对应的缩放系数作为参考迭代间隔中各次迭代的缩放系数。其中,该参考迭代间隔中迭代对应的 缩放系数一致。
可选地,参考迭代间隔中迭代对应的偏移量一致。处理器可以根据当前检验迭代的 待量化数据,确定当前检验迭代对应的偏移量,并将该当前检验迭代对应的偏移量作为参考迭代间隔中各次迭代的偏移量。进一步地,处理器还可以确定待量化数据所有元素 中的最小值和最大值,并进一步确定点位置和缩放系数等量化参数,具体可参见上文中 的描述。该参考迭代间隔中迭代对应的偏移量一致。
例如,该参考迭代间隔可以从当前检验迭代开始计算迭代数量,即参考迭代间隔对 应的检验迭代可以是参考迭代间隔的起始迭代。例如,当前检验迭代为第100次迭代,处理器根据待量化数据的数据变动幅度,确定参考迭代间隔的迭代间隔为3,则处理器可以确定该参考迭代间隔包括3次迭代,分别为第100次迭代、第101次迭代和第102次迭代。 进而处理器可以根据第100次迭代对应的待量化数据和目标数据位宽,确定该第100次迭 代对应的点位置等量化参数,并可以采用该第100次迭代对应的点位置等量化参数对第 100次迭代、第101次迭代和第102次迭代进行量化。这样,处理器在第101次迭代和第102 次迭代无需计算点位置等量化参数,减少了量化过程中的计算量,提高了量化操作的效 率。
可选地,参考迭代间隔还可以是从当前检验迭代的下一次迭代开始计算迭代数量, 即该参考迭代间隔对应的检验迭代也可以是该参考迭代间隔的终止迭代。例如,当前检 验迭代为第100次迭代,处理器根据待量化数据的数据变动幅度,确定参考迭代间隔的迭 代间隔为3。则处理器可以确定该参考迭代间隔包括3次迭代,分别为第101次迭代、第102 次迭代和第103次迭代。进而处理器可以根据第100次迭代对应的待量化数据和目标数据 位宽,确定该第100次迭代对应的点位置等量化参数,并可以采用该第100次迭代对应的点位置等量化参数对第101次迭代、第102次迭代和第103次迭代进行量化。这样,处理器 在第102次迭代和第103次迭代无需计算点位置等量化参数,减少了量化过程中的计算量, 提高了量化操作的效率。
本公开实施例中,同一参考迭代间隔中各次迭代对应的数据位宽及量化参数均一致, 即同一参考迭代间隔中各次迭代对应的数据位宽、点位置、缩放系数及偏移量均保持不 变,从而在循环神经网络的训练或微调过程中,可以避免频繁地调整待量化数据的量化参数,减少了量化过程中的计算量,从而可以提高量化效率。并且,通过在训练或微调 的不同阶段根据数据变动幅度,动态地调整量化参数,可以保证量化精度。
在另一情况下,该循环神经网络运算中的各次迭代对应的数据位宽可以发生变化, 但参考迭代间隔中各次迭代的数据位宽保持不变。此时,参考迭代间隔中迭代对应的点 位置等量化参数也可以不一致。处理器还可以根据当前检验迭代对应的目标数据位宽,确定参考迭代间隔对应的数据位宽,其中,参考迭代间隔中迭代对应的数据位宽一致。 之后,处理器可以根据该参考迭代间隔对应的数据位宽和点位置迭代间隔,调整循环神 经网络运算过程中的点位置等量化参数。可选地,图15示出本公开一实施例的量化参数 调整方法中调整量化参数的流程图,如图15所示,上述操作S300还可以包括:
S310、根据当前检验迭代的待量化数据,确定参考迭代间隔对应的数据位宽;其中, 该参考迭代间隔中迭代对应的数据位宽一致。也就是说,循环神经网络运算过程中的数 据位宽每隔一个参考迭代间隔更新一次。可选地,该参考迭代间隔对应的数据位宽可以为当前检验迭代的目标数据位宽。该当前检验迭代的目标数据位宽可参见上文中的操作S114和S115,此处不再赘述。
例如,该参考迭代间隔可以从当前检验迭代开始计算迭代数量,即参考迭代间隔对 应的检验迭代可以是参考迭代间隔的起始迭代。例如,当前检验迭代为第100次迭代,处理器根据待量化数据的数据变动幅度,确定参考迭代间隔的迭代间隔为6,则处理器可以确定该参考迭代间隔包括6次迭代,分别为第100次迭代至第105次迭代。此时,处理器可 以确定第100次迭代的目标数据位宽,且第101次迭代至第105次迭代沿用该第100次迭代 的目标数据位宽,无需在第101次迭代至第105次迭代计算目标数据位宽,从而减少计算 量,提高量化效率及运算效率。之后,第106次迭代可以作为当前检验迭代,并重复上述 确定参考迭代间隔,以及更新数据位宽的操作。
可选地,参考迭代间隔还可以是从当前检验迭代的下一次迭代开始计算迭代数量, 即该参考迭代间隔对应的检验迭代也可以是该参考迭代间隔的终止迭代。例如,当前检 验迭代为第100次迭代,处理器根据待量化数据的数据变动幅度,确定参考迭代间隔的迭 代间隔为6。则处理器可以确定该参考迭代间隔包括6次迭代,分别为第101次迭代至第106 次迭代。此时,处理器可以确定第100次迭代的目标数据位宽,且第101次迭代至106次迭 代沿用该第100次迭代的目标数据位宽,无需在第101次迭代至106次迭代计算目标数据位 宽,从而减少计算量,提高量化效率及运算效率。之后,第106次迭代可以作为当前检验迭代,并重复上述确定参考迭代间隔,以及更新数据位宽的操作。
S320、处理器根据获取的点位置迭代间隔和所述参考迭代间隔对应的数据位宽,调 整所述参考迭代间隔中迭代对应的点位置,以调整所述循环神经网络运算中的点位置等 量化参数。
其中,所述点位置迭代间隔包含至少一次迭代,所述点位置迭代间隔中迭代的点位 置一致。可选地,该点位置迭代间隔可以是超参数,例如,该点位置迭代间隔可以是用户自定义输入的。
可选地,所述点位置迭代间隔小于或等于所述参考迭代间隔。当该点位置迭代间隔 与上述的参考迭代间隔相同时,处理器可以在当前检验迭代处同步更新数据位宽和点位 置等量化参数。进一步可选地,参考迭代间隔中迭代对应的缩放系数可以一致。更进一步地,参考迭代间隔中迭代对应的偏移量一致。此时,该参考迭代间隔中的迭代对应的 数据位宽和点位置等量化参数均相同,从而可以降低计算量,提高量化效率和运算效率。 具体实现过程与上述实施例基本一致,可参见上文的描述,此处不再赘述。
当点位置迭代间隔小于上述的参考迭代间隔时,处理器可以在参考迭代间隔对应的 检验迭代处更新数据位宽和点位置等量化参数,并在该点位置迭代间隔确定的子检验迭 代处更新点位置等量化参数。由于在数据位宽不变的情况下,点位置等量化参数可以根据待量化数据进行微调,因此,在同一参考迭代间隔内也可以对点位置等量化参数进行 调整,以进一步提高量化精度。
具体地,处理器可以根据当前检验迭代和点位置迭代间隔确定子检验迭代,该子检 验迭代用于调整点位置,该子检验迭代可以是参考迭代间隔中的迭代。进一步地,处理器可以根据子检验迭代的待量化数据和参考迭代间隔对应的数据位宽,调整参考迭代间隔中迭代对应的点位置,其中,点位置的确定方式可以参照上述的公式(2)或公式(14), 此处不再赘述。
例如,当前检验迭代为第100次迭代,该参考迭代间隔为6,该参考迭代间隔包含的迭代为第100次迭代至第105次迭代。处理器获取的点位置迭代间隔为Is1=3,则可以从当前检验迭代开始间隔三次迭代调整一次点位置。具体地,处理器可以将第100次迭代作为上述的子检验迭代,并计算获得该第100次迭代对应的点位置s1,在第100次迭代、第101 次迭代和第102次迭代共用点位置s1进行量化。之后,处理器可以根据点位置迭代间隔Is1将第103次迭代作为上述的子检验迭代,同时处理器还可以根据第103次迭代对应的待量 化数据和参考迭代间隔对应的数据位宽n确定第二个点位置迭代间隔对应的点位置s2,则 在第103次迭代至第105次迭代中可以共用上述的点位置s2进行量化。本公开实施例中, 上述的更新前的点位置s1与更新后的点位置s2的值可以相同,也可以不同。进一步地, 处理器可以在第106次迭代重新根据待量化数据的数据变动幅度,确定下一参考迭代间隔 以及该下一参考迭代间隔对应的数据位宽及点位置等量化参数。
再如,当前检验迭代为第100次迭代,该参考迭代间隔为6,该参考迭代间隔包含的迭代为第101次迭代至第106次迭代。处理器获取的点位置迭代间隔为Is1=3,则可以从当前检验迭代开始间隔三次迭代调整一次点位置。具体地,处理器可以根据当前检验迭代 的待量化数据和当前检验迭代对应的目标数据位宽n1,确定第一个点位置迭代间隔对应 的点位置为s1,则在第101次迭代、第102次迭代和103次迭代共用上述的点位置s1进行量 化。之后,处理器可以根据点位置迭代间隔Is1将第104次迭代作为上述的子检验迭代,同 时处理器还可以根据第104次迭代对应的待量化数据和参考迭代间隔对应的数据位宽n1 确定第二个点位置迭代间隔对应的点位置s2,则在第104次迭代至第106次迭代中可以共 用上述的点位置s2进行量化。本公开实施例中,上述的更新前的点位置s1与更新后的点 位置s2的值可以相同,也可以不同。进一步地,处理器可以在106次迭代重新根据待量化 数据的数据变动幅度,确定下一参考迭代间隔以及该下一参考迭代间隔对应的数据位宽 及点位置等量化参数。
可选地,该点位置迭代间隔可以等于1,即每次迭代均更新一次点位置。可选地,该点位置迭代间隔可以相同,也可以不同。例如,该参考迭代间隔包含的至少一个点位置 迭代间隔可以是依次增大的。此处仅以举例的说明本实施例的实现方式,并不用于限定 本公开。
可选地,该参考迭代间隔中迭代对应的缩放系数也可以不一致。进一步可选地,该缩放系数可以与上述的点位置同步更新,也就是说,该缩放系数对应的迭代间隔可以等 于上述的点位置迭代间隔。即每当处理器更新确定点位置时,会相应地更新确定缩放系 数。
可选地,该参考迭代间隔中迭代对应的偏移量也可以不一致。进一步地,该偏移量可以与上述的点位置同步更新,也就是说,该偏移量对应的迭代间隔可以等于上述的点 位置迭代间隔。即每当处理器更新确定点位置时,会相应地更新确定偏移量。当然,该 偏移量也可以与上述地点位置或数据位宽异步更新,此处不作具体限定。更进一步地, 处理器还可以确定待量化数据所有元素中的最小值和最大值,并进一步确定点位置和缩 放系数等量化参数,具体可参见上文中的描述。
在另一种实施例中,处理器可以根据点位置的变动幅度和待量化数据的数据位宽的 变化,综合确定待量化数据的数据变动幅度,并根据该待量化数据的数据变动幅度确定参考迭代间隔,其中,该参考迭代间隔可以用于更新确定数据位宽,即处理器可以在每 个参考迭代间隔的检验迭代处更新确定数据位宽。由于点位置可以反映定点数据的精度, 数据位宽可以反映定点数据的数据表示范围,因而通过综合点位置的变动幅度和待量化 数据的数据位宽变化,可以保证量化后的数据既能够兼顾精度,也能够满足数据表示范 围。可选地,点位置的变化幅度可以采用上述的第一误差进行表征,数据位宽的变化可 以根据上述的量化误差进行确定。具体地,图16示出本公开另一实施例的参数调整方法 中第一目标迭代间隔的确定方法的流程图,如图16所示,上述方法可以包括:
S400、获取第一误差,第一误差能够表征点位置的变动幅度,该点位置的变动幅度可以表示待量化数据的数据变动幅度;具体地,上述第一误差的计算方式可参见上文中 操作S110中的描述,此处不再赘述。
S500、获取第二误差,所述第二误差用于表征所述数据位宽的变化。
可选地,上述的第二误差可以根据量化误差进行确定,该第二误差与上述的量化误 差正相关。在一种可能的实现方式中,上述操作S500可以包括:
根据所述当前检验迭代中待量化数据和所述当前检验迭代的量化数据,确定量化误 差;
根据所述量化误差确定所述第二误差,所述第二误差与所述量化误差正相关。
其中,所述当前检验迭代的量化数据根据初始数据位宽对所述当前检验迭代的待量 化数据进行量化获得。其中,具体的量化误差确定方式可参见上文中操作S114中的描述, 此处不再赘述。
具体地,第二误差可以按照如下公式进行计算:
diffupdate 2=θ*diffbit 2公式(34)
其中,diffupdate 2表示上述的第二误差,diffbit表示上述的量化误差,θ可以为超参数。
S600、根据所述第二误差和所述第一误差,确定所述第一目标迭代间隔。
具体地,处理器可以根据第一误差和第二误差计算获得目标误差,并根据目标误差 确定目标迭代间隔。可选地,目标误差可以是第一误差和第二误差进行加权平均计算获得。例如,目标误差=K*第一误差+(1-K)*第二误差,其中,K为超参数。之后,处理 器可以根据该目标误差确定目标迭代间隔,目标迭代间隔与该目标误差负相关。即目标 误差越大,目标迭代间隔越小。
可选地,该目标误差还可以根据第一误差和第二误差中的最值进行确定,此时第一 误差或第二误差的权重取值为0。在一种可能的实现方式中,上述操作S600可以包括:
将所述第一误差和所述第二误差中最大值作为目标误差;
根据所述目标误差确定所述第一目标迭代间隔,其中,所述目标误差与所述第一目 标迭代间隔负相关。
具体地,处理器可以比较第一误差diffupdate 1和第二误差diffupdate 2的大小,当第一误 差diffupdate 1大于第二误差diffupdate 2时,则该目标误差等于第一误差diffupdate 1。当第一 误差diffupdate 1小于第二误差时,则该目标误差等于第二误差diffupdate 2。当第一误差 diffupdate 1等于第二误差时,则该目标误差可以时第一误差diffupdate 1或第二误差diffupdate 2。即目标误差diffupdate可以按照如下公式进行确定:
diffupdate=max(diffupdate1,diffupdate2) 公式(35)
其中,diffupdate是指目标误差,diffupdate 1是指第一误差,diffupdate 2是指第二误差。
具体地,第一目标迭代间隔可以按照如下方式进行确定,
可以根据以下公式计算得到第一目标迭代间隔:
其中,I表示目标迭代间隔,diffupdate表示上述的目标误差,δ和γ可以为超参数。
可选地,上述实施例中,循环神经网络运算中数据位宽可变,并可以通过第二误差衡量数据位宽的变化趋势。此种情况下,处理器在确定第一目标迭代间隔后,可以确定 第二目标迭代间隔以及确定第二目标迭代间隔中迭代对应的数据位宽,其中,该第二目 标迭代间隔中迭代对应的数据位宽一致。具体地,处理器可以根据当前检验迭代的待量 化数据,确定第二目标迭代间隔对应的数据位宽。也就是说,循环神经网络运算过程中 的数据位宽每隔一个第二目标迭代间隔更新一次。可选地,该第二目标迭代间隔对应的 数据位宽可以为当前检验迭代的目标数据位宽。该当前检验迭代的目标数据位宽可参见 上文中的操作S114和S115,此处不再赘述。
例如,该第二目标迭代间隔可以从当前检验迭代开始计算迭代数量,即第二目标迭 代间隔对应的检验迭代可以是第二目标迭代间隔的起始迭代。例如,当前检验迭代为第100次迭代,处理器根据待量化数据的数据变动幅度,确定第二目标迭代间隔的迭代间隔为6,则处理器可以确定该第二目标迭代间隔包括6次迭代,分别为第100次迭代至第105 次迭代。此时,处理器可以确定第100次迭代的目标数据位宽,且第101次迭代至第105次 迭代沿用该第100次迭代的目标数据位宽,无需在第101次迭代至第105次迭代计算目标数 据位宽,从而减少计算量,提高量化效率及运算效率。之后,第106次迭代可以作为当前 检验迭代,并重复上述确定第二目标迭代间隔,以及更新数据位宽的操作。
可选地,第二目标迭代间隔还可以是从当前检验迭代的下一次迭代开始计算迭代数 量,即该第二目标迭代间隔对应的检验迭代也可以是该第二目标迭代间隔的终止迭代。例如,当前检验迭代为第100次迭代,处理器根据待量化数据的数据变动幅度,确定第二 目标迭代间隔的迭代间隔为6。则处理器可以确定该第二目标迭代间隔包括6次迭代,分 别为第101次迭代至第106次迭代。此时,处理器可以确定第100次迭代的目标数据位宽, 且第101次迭代至106次迭代沿用该第100次迭代的目标数据位宽,无需在第101次迭代至 106次迭代计算目标数据位宽,从而减少计算量,提高量化效率及运算效率。之后,第106 次迭代可以作为当前检验迭代,并重复上述确定目标迭代间隔,以及更新数据位宽的操 作。
再进一步地,处理器还可以在检验迭代处确定第二目标迭代间隔中的量化参数,以 根据第二目标迭代间隔调整循环神经网络运算中的量化参数。即该循环神经网络运算中 的点位置等量化参数可以与数据位宽同步更新。
在一种情况下,该第二目标迭代间隔中迭代对应的量化参数可以是一致的。可选地, 处理器可以根据当前检验迭代的待量化数据和该当前检验迭代对应的目标数据位宽,确 定当前检验迭代对应的点位置,并将该当前检验迭代对应的点位置作为该第二目标迭代 间隔对应的点位置,其中该第二目标迭代间隔中迭代对应的点位置一致。也就是说,第二目标迭代间隔中的各次迭代均沿用当前检验迭代的点位置等量化参数,避免了每次迭代都对量化参数进行更新调整,从而减少了量化过程中的计算量,提高了量化操作的效率。
可选地,第二目标迭代间隔中迭代对应的缩放系数可以一致。处理器可以根据当前 检验迭代的待量化数据,确定当前检验迭代对应的缩放系数,并将该当前检验迭代对应的缩放系数作为第二目标迭代间隔中各次迭代的缩放系数。其中,该第二目标迭代间隔 中迭代对应的缩放系数一致。
可选地,第二目标迭代间隔中迭代对应的偏移量一致。处理器可以根据当前检验迭 代的待量化数据,确定当前检验迭代对应的偏移量,并将该当前检验迭代对应的偏移量作为第二目标迭代间隔中各次迭代的偏移量。进一步地,处理器还可以确定待量化数据 所有元素中的最小值和最大值,并进一步确定点位置和缩放系数等量化参数,具体可参 见上文中的描述。该第二目标迭代间隔中迭代对应的偏移量一致。
例如,该第二目标迭代间隔可以从当前检验迭代开始计算迭代数量,即第二目标迭 代间隔对应的检验迭代可以是第二目标迭代间隔的起始迭代。例如,当前检验迭代为第100次迭代,处理器根据待量化数据的数据变动幅度,确定第二目标迭代间隔的迭代间隔为3,则处理器可以确定该第二目标迭代间隔包括3次迭代,分别为第100次迭代、第101 次迭代和第102次迭代。进而处理器可以根据第100次迭代对应的待量化数据和目标数据 位宽,确定该第100次迭代对应的点位置等量化参数,并可以采用该第100次迭代对应的 点位置等量化参数对第100次迭代、第101次迭代和第102次迭代进行量化。这样,处理器 在第101次迭代和第102次迭代无需计算点位置等量化参数,减少了量化过程中的计算量, 提高了量化操作的效率。
可选地,第二目标迭代间隔还可以是从当前检验迭代的下一次迭代开始计算迭代数 量,即该第二目标迭代间隔对应的检验迭代也可以是该第二目标迭代间隔的终止迭代。例如,当前检验迭代为第100次迭代,处理器根据待量化数据的数据变动幅度,确定第二 目标迭代间隔的迭代间隔为3。则处理器可以确定该第二目标迭代间隔包括3次迭代,分 别为第101次迭代、第102次迭代和第103次迭代。进而处理器可以根据第100次迭代对应 的待量化数据和目标数据位宽,确定该第100次迭代对应的点位置等量化参数,并可以采 用该第100次迭代对应的点位置等量化参数对第101次迭代、第102次迭代和第103次迭代 进行量化。这样,处理器在第102次迭代和第103次迭代无需计算点位置等量化参数,减 少了量化过程中的计算量,提高了量化操作的效率。
本公开实施例中,同一第二目标迭代间隔中各次迭代对应的数据位宽及量化参数均 一致,即同一第二目标迭代间隔中各次迭代对应的数据位宽、点位置、缩放系数及偏移量均保持不变,从而在循环神经网络的训练或微调过程中,可以避免频繁地调整待量化 数据的量化参数,减少了量化过程中的计算量,从而可以提高量化效率。并且,通过在 训练或微调的不同阶段根据数据变动幅度,动态地调整量化参数,可以保证量化精度。
在另一种情况下,处理器还可以根据点位置等量化参数对应的点位置迭代间隔确定 第二目标迭代间隔中的量化参数,以根据调整循环神经网络运算中的量化参数。即该循环神经网络运算中的点位置等量化参数可以与数据位宽异步更新,处理器可以在第二目标迭代间隔的检验迭代处更新数据位宽和点位置等量化参数,处理器还可以根据点位置迭代间隔单独更新第二目标迭代间隔中迭代对应的点位置。
具体地,处理器还可以根据当前检验迭代对应的目标数据位宽,确定第二目标迭代 间隔对应的数据位宽,其中,第二目标迭代间隔中迭代对应的数据位宽一致。之后,处理器可以根据该第二目标迭代间隔对应的数据位宽和点位置迭代间隔,调整循环神经网络运算过程中的点位置等量化参数。在确定第二目标迭代间隔对应的数据位宽之后,根 据获取的点位置迭代间隔和所述第二目标迭代间隔对应的数据位宽,调整所述第二目标 迭代间隔中迭代对应的点位置,以调整所述循环神经网络运算中的点位置。其中,所述 点位置迭代间隔包含至少一次迭代,所述点位置迭代间隔中迭代的点位置一致。可选地, 该点位置迭代间隔可以是超参数,例如,该点位置迭代间隔可以是用户自定义输入的。
在一种可选的实施例中,上述的方法可以用于循环神经网络的训练或微调过程中, 以实现对循环神经网络微调或训练过程涉及的运算数据的量化参数进行调整,以提高循 环神经网络运算过程中涉及的运算数据的量化精度及效率。该运算数据可以是神经元数 据、权值数据或梯度数据中的至少一种。如图5a所示,根据待量化数据的数据变动曲线可知,在训练或微调的初期阶段,各次迭代的待量化数据之间的差异性较大,待量化数 据的数据变动幅度较为剧烈,此时可以目标迭代间隔的值可以较小,以及时地更新目标 迭代间隔中的量化参数,保证量化精度。在训练或微调的中期阶段,待量化数据的数据 变动幅度逐渐趋于平缓,此时可以增大目标迭代间隔的值,以避免频繁地更新量化参数, 以提高量化效率及运算效率。在训练或微调的后期阶段,此时循环神经网络的训练或微 调趋于稳定(即当循环神经网络的正向运算结果趋近于预设参考值时,该循环神经网络 的训练或微调趋于稳定),此时可以继续增大目标迭代间隔的值,以进一步提高量化效率 及运算效率。基于上述数据变动趋势,可以在循环神经网络的训练或微调的不同阶段采 用不同的方式确定目标迭代间隔,以在保证量化精度的基础上,提高量化效率及运算效 率。
进一步地,图17示出本公开再一实施例的量化参数调整方法的流程图,如图17所示, 上述方法还可以包括:
在当前迭代大于第一预设迭代时,处理器还可以执行操作S712,即处理器可以进一 步确定当前迭代是否大于第二预设迭代。其中,所述第二预设迭代大于所述第一预设迭代,所述第二预设迭代间隔大于所述第一预设迭代间隔。可选地,上述第二预设迭代可 以是超参数,第二预设迭代可以大于至少一个训练周期的迭代总数。可选地,第二预设 迭代可以根据待量化数据的数据变动曲线确定。可选地,第二预设迭代也可以是用户自 定义设置的。
在所述当前迭代大于或等于第二预设迭代时,则处理器可以执行操作S714,将第二 预设迭代间隔作为所述目标迭代间隔,并根据所述第二预设迭代间隔调整所述神经网络 量化过程中的参数。在当前迭代大于第一预设迭代,且当前迭代小于第二预设迭代时,则处理器可以执行上述的操作S713,根据所述待量化数据的数据变动幅度确定目标迭代间隔,并根据所述目标迭代间隔调整量化参数。
可选地,处理器可以读取用户设置的第二预设迭代,并根据第二预设迭代与第二预 设迭代间隔的对应关系,确定第二预设迭代间隔,该第二预设迭代间隔大于第一预设迭代间隔。可选地,当所述神经网络的收敛程度满足预设条件时,则确定所述当前迭代大 于或等于第二预设迭代。例如,在当前迭代的正向运算结果趋近于预设参考值时,可以 确定该神经网络的收敛程度满足预设条件,此时可以确定当前迭代大于或等于第二预设 迭代。或者,在当前迭代对应的损失值小于或等于预设阈值时,则可以确定该神经网络 的收敛程度满足预设条件。
可选地,上述的第二预设迭代间隔可以是超参数,该第二预设迭代间隔可以大于或 等于至少一个训练周期的迭代总数。可选地,该第二预设迭代间隔可以是用户自定义设置的。处理器可以直接读取用户输入的第二预设迭代和第二预设迭代间隔,并根据该第 二预设迭代间隔更新神经网络运算中的量化参数。例如,该第二预设迭代间隔可以等于 一个训练周期的迭代总数,即每个训练周期(epoch)更新一次量化参数。
再进一步地,上述方法还包括:
当所述当前迭代大于或等于第二预设迭代,处理器还可以在每次检验迭代处确定当 前数据位宽是否需要调整。如果当前数据位宽需要调整,则处理器可以从上述的操作S714 切换至操作S713,以重新确定数据位宽,使得数据位宽能够满足待量化数据的需求。
具体地,处理器可以根据上述的第二误差确定数据位宽是否需要调整。处理器还可 以执行上述操作S715,确定第二误差是否大于预设误差值,当所述当前迭代大于或等于第二预设迭代且所述第二误差大于预设误差值时,则切换执行操作S713,根据所述待量 化数据的数据变动幅度确定迭代间隔,以根据所述迭代间隔重新确定所述数据位宽。若 当前迭代大于或等于第二预设迭代,且第二误差小于或等于预设误差值,则继续执行操 作S714,将第二预设迭代间隔作为所述目标迭代间隔,并根据所述第二预设迭代间隔调 整所述神经网络量化过程中的参数。其中,预设误差值可以是根据量化误差对应的预设 阈值确定的,当第二误差大于预设误差值时,此时说明数据位宽可能需要进一步调整, 处理器可以根据所述待量化数据的数据变动幅度确定迭代间隔,以根据所述迭代间隔重 新确定所述数据位宽。
例如,第二预设迭代间隔为一个训练周期的迭代总数。在当前迭代大于或等于第二 预设迭代时,处理器可以按照第二预设迭代间隔更新量化参数,即每个训练周期(epoch) 更新一次量化参数。此时,每个训练周期的起始迭代作为一个检验迭代,在每个训练周 期的起始迭代处,处理器可以根据该检验迭代的待量化数据确定量化误差,根据量化误 差确定第二误差,并根据如下公式确定第二误差是否大于预设误差值:
diffupdate 2=θ*diffbit 2>T
其中,diffupdate 2表示第二误差,diffbit表示量化误差,θ表示超参数,T表示预设误差值。可选地,该预设误差值可以等于第一预设阈值除以超参数。当然,该预设误差值 也可以是超参数。例如,该预设误差值可以按照如下公式计算获得:T=th/10,其中,th 表示第一预设阈值,超参数的取值为10。
若第二误差diffupdate 2大于预设误差值T,则说明数据位宽可能不能满足预设要求, 此时,可以不再采用第二预设迭代间隔更新量化参数,处理器可以按照待量化数据的数 据变动幅度确定目标迭代间隔,以保证数据位宽满足预设要求。即在第二误差diffupdate 2大于预设误差值T时,处理器从上述的操作S714切换至上述的操作S713。
当然,在其他实施例中,处理器可以根据上述的量化误差,确定数据位宽是否需要调整。例如,第二预设迭代间隔为一个训练周期的迭代总数。在当前检验迭代大于或等 于第二预设迭代时,处理器可以按照第二预设迭代间隔更新量化参数,即每个训练周期(epoch)更新一次量化参数。其中,每个训练周期的起始迭代作为一个检验迭代。在每 个训练周期的起始迭代处,处理器可以根据该检验迭代的待量化数据确定量化误差,并 在该量化误差大于或等于第一预设阈值时,则说明数据位宽可能不能满足预设要求,即 处理器从上述的操作S714切换至上述的操作S713。
在一个可选的实施例中,上述的点位置、缩放系数和偏移量等量化参数可以通过显 示装置进行显示。此时,用户可以通过显示装置获知循环神经网络运算过程中的量化参数,用户还可以自适应修改处理器确定的量化参数。同理,上述的数据位宽和目标迭代 间隔等也可以通过显示装置进行显示。此时,用户可以通过显示装置获知循环神经网络 运算过程中的目标迭代间隔和数据位宽等参数,用户还可以自适应修改处理器确定的目 标迭代间隔和数据位宽等参数。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制, 因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也 应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定 是本公开所必须的。
本公开一实施例还提供了一种循环神经网络的量化参数调整装置200,该量化参数调 整装置200可以设置于一处理器中。例如,该量化参数调整装置200可以置于通用处理器 中,再如,该量化参数调整装置也可以置于一人工智能处理器中。图18示出本公开一实
获取模块210,用于获取待量化数据的数据变动幅度;
迭代间隔确定模块220,用于根据所述待量化数据的数据变动幅度,确定第一目标迭 代间隔,以根据所述第一目标迭代间隔调整所述循环神经网络运算中的量化参数,其中, 所述目标迭代间隔包括至少一次迭代,所述循环神经网络的量化参数用于实现对所述循 环神经网络运算中待量化数据的量化操作。
在一种可能的实现方式中,所述装置还包括:
预设间隔确定模块,用于在当前检验迭代小于或等于第一预设迭代时,根据预设迭 代间隔调整所述量化参数。
在一种可能的实现方式中,所述迭代间隔确定模块,还用于在当前检验迭代大于第 一预设迭代时,根据所述待量化数据的数据变动幅度确定第一目标迭代间隔。
在一种可能的实现方式中,所述迭代间隔确定模块,包括:
第二目标迭代间隔确定子模块,在当前检验迭代大于或等于第二预设迭代、且当前 检验迭代需要进行量化参数调整时,根据所述第一目标迭代间隔和各周期中迭代的总数 确定与所述当前检验迭代对应的第二目标迭代间隔;
更新迭代确定子模块,根据所述第二目标迭代间隔确定出与所述当前检验迭代相对 应的更新迭代,以在所述更新迭代中调整所述量化参数,所述更新迭代为所述当前检验迭代之后的迭代;
其中,所述第二预设迭代大于第一预设迭代,所述循环神经网络的量化调整过程包 括多个周期,所述多个周期中迭代的总数不一致。
在一种可能的实现方式中,所述第二目标迭代间隔确定子模块,包括:
更新周期确定子模块,根据当前检验迭代在当前周期中的迭代排序数和所述当前周 期之后的周期中迭代的总数,确定出对应所述当前检验迭代的更新周期,所述更新周期中迭代的总数大于或等于所述迭代排序数;
确定子模块,根据所述第一目标迭代间隔、所述迭代排序数、所述当前周期与更新周期之间的周期中迭代的总数,确定出所述第二目标迭代间隔。
在一种可能的实现方式中,所述迭代间隔确定模块,还用于当所述循环神经网络的 收敛程度满足预设条件时,则确定所述当前检验迭代大于或等于第二预设迭代。
在一种可能的实现方式中,所述量化参数包括点位置,所述点位置为所述待量化数 据对应的量化数据中小数点的位置;所述装置还包括:
量化参数确定模块,用于根据当前检验迭代对应的目标数据位宽和所述当前检验迭 代的待量化数据,确定参考迭代间隔中迭代对应的点位置,以调整所述循环神经网络运算中的点位置;
其中,所述参考迭代间隔中迭代对应的点位置一致,所述参考迭代间隔包括所述第 二目标迭代间隔或所述预设迭代间隔。
在一种可能的实现方式中,所述量化参数包括点位置,所述点位置为所述待量化数 据对应的量化数据中小数点的位置;所述装置还包括:
数据位宽确定模块,用于根据所述当前检验迭代对应的目标数据位宽,确定参考迭 代间隔对应的数据位宽,其中,所述参考迭代间隔中迭代对应的数据位宽一致,所述参考迭代间隔包括所述第二目标迭代间隔或所述预设迭代间隔;
量化参数确定模块,用于根据获取的点位置迭代间隔和参考迭代间隔对应的数据位 宽,调整所述参考迭代间隔中迭代对应的点位置,以调整所述神经网络运算中的点位置;
其中,所述点位置迭代间隔包含至少一次迭代,所述点位置迭代间隔中迭代的点位 置一致。
在一种可能的实现方式中,所述点位置迭代间隔小于或等于所述参考迭代间隔。
在一种可能的实现方式中,所述量化参数还包括缩放系数,所述缩放系数与所述点 位置同步更新。
在一种可能的实现方式中,所述量化参数还包括偏移量,所述偏移量与所述点位置 同步更新。
在一种可能的实现方式中,所述数据位宽确定模块包括:
量化误差确定子模块,用于根据所述当前检验迭代的待量化数据和所述当前检验迭 代的量化数据,确定量化误差,其中,所述当前检验迭代的量化数据对所述当前检验迭代的待量化数据进行量化获得;
数据位宽确定子模块,用于根据所述量化误差,确定所述当前检验迭代对应的目标 数据位宽。
在一种可能的实现方式中,所述数据位宽确定单元用于根据所述量化误差,确定所 述当前检验迭代对应的目标数据位宽时,具体用于:
若所述量化误差大于或等于第一预设阈值,则增加所述当前检验迭代对应的数据位 宽,获得所述当前检验迭代对应的目标数据位宽;或者,
若所述量化误差小于或等于第二预设阈值,则减小所述当前检验迭代对应的数据位 宽,获得所述当前检验迭代对应的目标数据位宽。
在一种可能的实现方式中,所述数据位宽确定单元用于若所述量化误差大于或等于 第一预设阈值,则增加所述当前检验迭代对应的数据位宽,获得所述当前检验迭代对应的目标数据位宽时,具体用于:
若所述量化误差大于或等于第一预设阈值,则根据第一预设位宽步长确定第一中间 数据位宽;
返回执行根据所述当前检验迭代中待量化数据和所述当前检验迭代的量化数据,确 定量化误差,直至所述量化误差小于所述第一预设阈值;其中,所述当前检验迭代的量化数据是根据所述第一中间数据位宽对所述当前检验迭代的待量化数据进行量化获得。
在一种可能的实现方式中,所述数据位宽确定单元用于若所述量化误差小于或等于 第二预设阈值,则减小所述当前检验迭代对应的数据位宽,获得所述当前检验迭代对应的目标数据位宽时,具体用于:
若所述量化误差小于或等于第二预设阈值,则根据第二预设位宽步长确定第二中间 数据位宽;
返回执行根据所述当前检验迭代中待量化数据和所述当前检验迭代的量化数据,确 定量化误差,直至所述量化误差大于所述第二预设阈值;其中,所述当前检验迭代的量化数据是根据所述第二中间数据位宽对所述当前检验迭代的待量化数据进行量化获得。
在一种可能的实现方式中,所述获取模块包括:
第一获取模块,用于获取点位置的变动幅度;其中,所述点位置的变动幅度能够用于表征所述待量化数据的数据变动幅度,所述点位置的变动幅度与所述待量化数据的数据变动幅度正相关。
在一种可能的实现方式中,所述第一获取模块包括:
第一均值确定单元,用于根据当前检验迭代之前的上一检验迭代对应的点位置,以 及所述上一检验迭代之前的历史迭代对应的点位置,确定第一均值,其中,所述上一检验迭代为所述目标迭代间隔之前的上一迭代间隔对应的检验迭代;
第二均值确定单元,用于根据所述当前检验迭代对应的点位置及所述当前检验迭代 之前的历史迭代的点位置,确定第二均值;其中,所述当前检验迭代对应的点位置根据所述当前检验迭代对应的目标数据位宽和待量化数据确定;
第一误差确定单元,用于根据所述第一均值和所述第二均值确定第一误差,所述第 一误差用于表征所述点位置的变动幅度。
在一种可能的实现方式中,所述第二均值确定单元具体用于:
获取预设数量的中间滑动平均值,其中,各个所述中间滑动平均值是根据所述当前 检验迭代之前所述预设数量的检验迭代确定的;
根据所述当前检验迭代的点位置以及所述预设数量的中间滑动平均值,确定所述第 二均值。
在一种可能的实现方式中,所述第二均值确定单元具体用于根据所述当前检验迭代 对应的点位置以及所述第一均值,确定所述第二均值。
在一种可能的实现方式中,所述第二均值确定单元用于根据获取的所述当前检验迭 代的数据位宽调整值,更新所述第二均值;
其中,所述当前检验迭代的数据位宽调整值根据所述当前检验迭代的目标数据位宽 和初始数据位宽确定。
在一种可能的实现方式中,所述第二均值确定单元用于根据获取的所述当前检验迭 代的数据位宽调整值,更新所述第二均值时,具体用于:
当所述当前检验迭代的数据位宽调整值大于预设参数时,则根据所述当前检验迭代 的数据位宽调整值减小所述第二均值;
当所述当前检验迭代的数据位宽调整值小于预设参数时,则根据所述当前检验迭代 的数据位宽调整值增大所述第二均值。
在一种可能的实现方式中,所述迭代间隔确定模块用于根据所述第一误差确定所述 目标迭代间隔,所述目标迭代间隔与所述第一误差负相关。
在一种可能的实现方式中,所述获取模块还包括:
第二获取模块,用于获取数据位宽的变化趋势;根据所述点位置的变动幅度和所述 数据位宽的变化趋势,确定所述待量化数据的数据变动幅度。
在一种可能的实现方式中,所述迭代间隔确定模块还用于根据获取的第一误差和第 二误差,确定所述目标迭代间隔;其中,所述第一误差用于表征点位置的变动幅度,所述第二误差用于表征数据位宽的变化趋势。
在一种可能的实现方式中,所述迭代间隔确定模块用于根据获取的第一误差和第二 误差,确定所述目标迭代间隔时,具体用于:
将所述第一误差和所述第二误差中最大值作为目标误差;
根据所述目标误差确定所述目标迭代间隔,其中,所述目标误差与所述目标迭代间 隔负相关。
在一种可能的实现方式中,所述第二误差根据量化误差确定;
其中,所述量化误差根据所述当前检验迭代中待量化数据和所述当前检验迭代的量 化数据确定,所述第二误差与所述量化误差正相关。
在一种可能的实现方式中,所述迭代间隔确定模块,还用于当所述当前检验迭代大 于或等于第二预设迭代,且第二误差大于预设误差值时,则根据所述待量化数据的数据变动幅度确定第一目标迭代间隔。
应当清楚的是,本申请实施例各个模块或单元的工作原理与上述方法中各个操作的 实现过程基本一致,具体可参见上文的描述,此处不再赘述。应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。例如,上述实施例中所述 单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如, 多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或 不执行。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的 形式实现。所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模 拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用 时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质 上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形 式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的 全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、 随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可 以存储程序代码的介质。
在一个实施例中,本公开还提供了一种计算机可读存储介质,该存储介质中存储有 计算机程序,该计算机程序被处理器或装置执行时,实现如上述任一实施例中的方法。具体地,该计算机程序被处理器或装置执行时,实现如下方法:
获取待量化数据的数据变动幅度;
根据所述待量化数据的数据变动幅度,确定目标迭代间隔,以根据所述目标迭代间 隔调整所述循环神经网络运算中的量化参数,其中,所述目标迭代间隔包括至少一次迭代,所述循环神经网络的量化参数用于实现对所述循环神经网络运算中待量化数据的量化操作。
应当清楚的是,本申请实施例各个操作的实现与上述方法中各个操作的实现过程基 本一致,具体可参见上文的描述,此处不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分, 可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使 描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
在一种可能的实现方式中,还公开了一种人工智能芯片,其包括了上述量化参数调 整装置。
在一种可能的实现方式中,还公开了一种板卡,其包括存储器件、接口装置和控制器件以及上述人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件 以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现 所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯 片的状态进行监控。
图19示出根据本公开实施例的板卡的结构框图,参阅图19,上述板卡除了包括上述 芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
所述存储器件390与所述人工智能芯片通过总线连接,用于存储数据。所述存储器件 可以包括多组存储单元393。每一组所述存储单元与所述人工智能芯片通过总线连接。可 以理解,每一组所述存储单元可以是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超仪和/或心电图仪。
依照以下条款可以更好地理解本公开的内容:
条款A1.一种循环神经网络的量化参数调整方法,所述方法包括:
获取待量化数据的数据变动幅度;
根据所述待量化数据的数据变动幅度,确定第一目标迭代间隔,以根据所述第一目 标迭代间隔调整所述循环神经网络运算中的量化参数,其中,所述第一目标迭代间隔包括至少一次迭代,所述循环神经网络的量化参数用于实现对所述循环神经网络运算中待量化数据的量化操作。
条款A2.根据条款A1所述的方法,所述方法还包括:
在当前检验迭代小于或等于第一预设迭代时,根据预设迭代间隔调整所述量化参数。
条款A3.根据条款A1所述的方法,根据所述待量化数据的数据变动幅度,确定第一目标迭代间隔,包括:
在当前检验迭代大于第一预设迭代时,根据所述待量化数据的数据变动幅度确定第 一目标迭代间隔。
条款A4.根据条款A1至条款A3任一项所述的方法,根据所述待量化数据的数据变动 幅度,确定第一目标迭代间隔,以根据所述第一目标迭代间隔调整所述循环神经网络运算中的量化参数,包括:
在当前检验迭代大于或等于第二预设迭代、且当前检验迭代需要进行量化参数调整 时,根据所述第一目标迭代间隔和各周期中迭代的总数确定与所述当前检验迭代对应的 第二目标迭代间隔;
根据所述第二目标迭代间隔确定出与所述当前检验迭代相对应的更新迭代,以在所 述更新迭代中调整所述量化参数,所述更新迭代为所述当前检验迭代之后的迭代;
其中,所述第二预设迭代大于第一预设迭代,所述循环神经网络的量化调整过程包 括多个周期,所述多个周期中迭代的总数不一致。
条款A5.根据条款A4所述的方法,根据所述第一目标迭代间隔和各周期中迭代的总 数确定与所述当前检验迭代对应的第二目标迭代间隔,包括:
根据当前检验迭代在当前周期中的迭代排序数和所述当前周期之后的周期中迭代的 总数,确定出对应所述当前检验迭代的更新周期,所述更新周期中迭代的总数大于或等 于所述迭代排序数;
根据所述第一目标迭代间隔、所述迭代排序数、所述当前周期与更新周期之间的周 期中迭代的总数,确定出所述第二目标迭代间隔。
条款A6.根据条款A4所述的方法,根据所述待量化数据的数据变动幅度,确定第一目标迭代间隔,以根据所述第一目标迭代间隔调整所述循环神经网络运算中的量化参数,还包括:
当所述循环神经网络的收敛程度满足预设条件时,则确定所述当前检验迭代大于或 等于第二预设迭代。
条款A7.根据条款A4所述的方法,所述量化参数包括点位置,所述点位置为所述待量化数据对应的量化数据中小数点的位置;所述方法还包括:
根据当前检验迭代对应的目标数据位宽和所述当前检验迭代的待量化数据,确定参 考迭代间隔中迭代对应的点位置,以调整所述循环神经网络运算中的点位置;
其中,所述参考迭代间隔中迭代对应的点位置一致,所述参考迭代间隔包括所述第 二目标迭代间隔或所述预设迭代间隔。
条款A8.根据条款A4所述的方法,所述量化参数包括点位置,所述点位置为所述待量化数据对应的量化数据中小数点的位置;所述方法还包括:
根据所述当前检验迭代对应的目标数据位宽,确定参考迭代间隔对应的数据位宽, 其中,所述参考迭代间隔中迭代对应的数据位宽一致,所述参考迭代间隔包括所述第二 目标迭代间隔或所述预设迭代间隔;
根据获取的点位置迭代间隔和所述参考迭代间隔对应的数据位宽,调整所述参考迭 代间隔中迭代对应的点位置,以调整所述循环神经网络运算中的点位置;
其中,所述点位置迭代间隔包含至少一次迭代,所述点位置迭代间隔中迭代的点位 置一致。
条款A9.根据条款A8所述的方法,所述点位置迭代间隔小于或等于所述参考迭代间 隔。
条款A10.根据条款A7至条款A9任一项所述的方法,所述量化参数还包括缩放系数, 所述缩放系数与所述点位置同步更新。
条款A11.根据条款A7至条款A9任一项所述的方法,所述量化参数还包括偏移量,所述偏移量与所述点位置同步更新。
条款A12.根据条款A7至条款A9任一项所述的方法,所述方法还包括:
根据所述当前检验迭代的待量化数据和所述当前检验迭代的量化数据,确定量化误 差,其中,所述当前检验迭代的量化数据对所述当前检验迭代的待量化数据进行量化获得;
根据所述量化误差,确定所述当前检验迭代对应的目标数据位宽。
条款A13.根据条款A12所述的方法,所述根据所述量化误差,确定所述当前检验迭代对应的目标数据位宽,包括:
若所述量化误差大于或等于第一预设阈值,则增加所述当前检验迭代对应的数据位 宽,获得所述当前检验迭代对应的目标数据位宽;或者,
若所述量化误差小于或等于第二预设阈值,则减小所述当前检验迭代对应的数据位 宽,获得所述当前检验迭代对应的目标数据位宽。
条款A14.根据条款A13所述的方法,若所述量化误差大于或等于第一预设阈值,则增加所述当前检验迭代对应的数据位宽,获得所述当前检验迭代对应的目标数据位宽, 包括:
若所述量化误差大于或等于第一预设阈值,则根据第一预设位宽步长确定第一中间 数据位宽;
返回执行根据所述当前检验迭代中待量化数据和所述当前检验迭代的量化数据,确 定量化误差,直至所述量化误差小于所述第一预设阈值;其中,所述当前检验迭代的量化数据是根据所述第一中间数据位宽对所述当前检验迭代的待量化数据进行量化获得。
条款A15.根据条款A13所述的方法,所述若所述量化误差小于或等于第二预设阈值, 则减小所述当前检验迭代对应的数据位宽,包括:
若所述量化误差小于或等于第二预设阈值,则根据第二预设位宽步长确定第二中间 数据位宽;
返回执行根据所述当前检验迭代中待量化数据和所述当前检验迭代的量化数据,确 定量化误差,直至所述量化误差大于所述第二预设阈值;其中,所述当前检验迭代的量化数据是根据所述第二中间数据位宽对所述当前检验迭代的待量化数据进行量化获得。
条款A16.根据条款A1至条款A15任一项所述的方法,所述获取待量化数据的数据变 动幅度,包括:
获取点位置的变动幅度;其中,所述点位置的变动幅度能够用于表征所述待量化数 据的数据变动幅度,所述点位置的变动幅度与所述待量化数据的数据变动幅度正相关。
条款A17.根据条款A16所述的方法,所述获取点位置的变动幅度,包括:
根据当前检验迭代之前的上一检验迭代对应的点位置,以及所述上一检验迭代之前 的历史迭代对应的点位置,确定第一均值,其中,所述上一检验迭代为所述参考迭代间隔之前的上一迭代间隔对应的检验迭代;
根据所述当前检验迭代对应的点位置及所述当前检验迭代之前的历史迭代的点位置, 确定第二均值;其中,所述当前检验迭代对应的点位置根据所述当前检验迭代对应的目 标数据位宽和待量化数据确定;
根据所述第一均值和所述第二均值确定第一误差,所述第一误差用于表征所述点位 置的变动幅度。
条款A18.根据条款A17所述的方法,根据所述当前检验迭代对应的点位置及所述当 前检验迭代之前的历史迭代的点位置,确定第二均值,包括:
获取预设数量的中间滑动平均值,其中,各个所述中间滑动平均值是根据所述当前 检验迭代之前所述预设数量的检验迭代确定的;
根据所述当前检验迭代的点位置以及所述预设数量的中间滑动平均值,确定所述第 二均值。
条款A19.根据条款A17所述的方法,所述根据所述当前检验迭代对应的点位置及所 述当前检验迭代之前的历史迭代的点位置,确定第二均值,包括:
根据所述当前检验迭代对应的点位置以及所述第一均值,确定所述第二均值。
条款A20.根据条款A17所述的方法,所述方法还包括:
根据获取的所述当前检验迭代的数据位宽调整值,更新所述第二均值;其中,所述当前检验迭代的数据位宽调整值根据所述当前检验迭代的目标数据位宽和初始数据位宽确定。
条款A21.根据条款A20所述的方法,所述根据获取的所述当前检验迭代的数据位宽 调整值,更新所述第二均值,包括:
当所述当前检验迭代的数据位宽调整值大于预设参数时,则根据所述当前检验迭代 的数据位宽调整值减小所述第二均值;
当所述当前检验迭代的数据位宽调整值小于预设参数时,则根据所述当前检验迭代 的数据位宽调整值增大所述第二均值。
条款A22.根据条款A17所述的方法,所述根据所述待量化数据的数据变动幅度,确定第一目标迭代间隔,包括:
根据所述第一误差确定所述第一目标迭代间隔,所述第一目标迭代间隔与所述第一 误差负相关。
条款A23.根据条款A16至条款A22任一项所述的方法,所述获取待量化数据的数据变动幅度,还包括:
获取数据位宽的变化趋势;
根据所述点位置的变动幅度和所述数据位宽的变化趋势,确定所述待量化数据的数 据变动幅度。
条款A24.根据条款A23所述的方法,根据所述待量化数据的数据变动幅度,确定第一目标迭代间隔,还包括:
根据获取的第一误差和第二误差,确定所述第一目标迭代间隔;其中,所述第一误差用于表征点位置的变动幅度,所述第二误差用于表征数据位宽的变化趋势。
条款A25.根据条款A23所述的方法,根据获取的第一误差和第二误差,确定所述第一目标迭代间隔,包括:
将所述第一误差和所述第二误差中最大值作为目标误差;
根据所述目标误差确定所述第一目标迭代间隔,其中,所述目标误差与所述第一目 标迭代间隔负相关。
条款A26.根据条款A24或条款A25所述的方法,所述第二误差根据量化误差确定;
其中,所述量化误差根据当前检验迭代中待量化数据和所述当前检验迭代的量化数 据确定,所述第二误差与所述量化误差正相关。
条款A27.根据条款A4所述的方法,所述方法还包括:
当所述当前检验迭代大于或等于第二预设迭代,且第二误差大于预设误差值时,则 根据所述待量化数据的数据变动幅度确定第一目标迭代间隔。
条款A28.根据条款A1-条款A27任一项所述的方法,所述待量化数据为神经元数据、 权值数据或梯度数据中的至少一种。
条款A29.一种循环神经网络的量化参数调整装置,包括存储器和处理器,所述存储 器存储有计算机程序,所述处理器执行所述计算机程序时,实现如条款A1-28任一项所述 的方法的步骤。
条款A30.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序, 所述计算机程序被执行时,实现如条款A1-条款A28任一项所述的方法的步骤。
条款A31.一种循环神经网络的量化参数调整装置,所述装置包括:
获取模块,用于获取待量化数据的数据变动幅度;
迭代间隔确定模块,用于根据所述待量化数据的数据变动幅度,确定第一目标迭代 间隔,以根据所述第一目标迭代间隔调整所述循环神经网络运算中的量化参数,其中,所述目标迭代间隔包括至少一次迭代,所述循环神经网络的量化参数用于实现对所述循环神经网络运算中待量化数据的量化操作。
条款A32.根据条款A31所述的装置,所述装置还包括:
预设间隔确定模块,用于在当前检验迭代小于或等于第一预设迭代时,根据预设迭 代间隔调整所述量化参数。
条款A33.根据条款A31所述的装置,
所述迭代间隔确定模块,还用于在当前检验迭代大于第一预设迭代时,根据所述待 量化数据的数据变动幅度确定第一目标迭代间隔。
条款A34.根据条款A31至条款A33任一项所述的装置,所述迭代间隔确定模块,包括:
第二目标迭代间隔确定子模块,在当前检验迭代大于或等于第二预设迭代、且当前 检验迭代需要进行量化参数调整时,根据所述第一目标迭代间隔和各周期中迭代的总数 确定与所述当前检验迭代对应的第二目标迭代间隔;
更新迭代确定子模块,根据所述第二目标迭代间隔确定出与所述当前检验迭代相对 应的更新迭代,以在所述更新迭代中调整所述量化参数,所述更新迭代为所述当前检验迭代之后的迭代;
其中,所述第二预设迭代大于第一预设迭代,所述循环神经网络的量化调整过程包 括多个周期,所述多个周期中迭代的总数不一致。
条款A35.根据条款A34所述的装置,所述第二目标迭代间隔确定子模块,包括:
更新周期确定子模块,根据当前检验迭代在当前周期中的迭代排序数和所述当前周 期之后的周期中迭代的总数,确定出对应所述当前检验迭代的更新周期,所述更新周期中迭代的总数大于或等于所述迭代排序数;
确定子模块,根据所述第一目标迭代间隔、所述迭代排序数、所述当前周期与更新周期之间的周期中迭代的总数,确定出所述第二目标迭代间隔。
条款A36.根据条款A34所述的装置,
所述迭代间隔确定模块,还用于当所述循环神经网络的收敛程度满足预设条件时, 则确定所述当前检验迭代大于或等于第二预设迭代。
条款A37.根据条款A34所述的装置,所述量化参数包括点位置,所述点位置为所述待量化数据对应的量化数据中小数点的位置;所述装置还包括:
量化参数确定模块,用于根据当前检验迭代对应的目标数据位宽和所述当前检验迭 代的待量化数据,确定参考迭代间隔中迭代对应的点位置,以调整所述循环神经网络运算中的点位置;
其中,所述参考迭代间隔中迭代对应的点位置一致,所述参考迭代间隔包括所述第 二目标迭代间隔或所述预设迭代间隔。
条款A38.根据条款A34所述的装置,所述量化参数包括点位置,所述点位置为所述待量化数据对应的量化数据中小数点的位置;所述装置还包括:
数据位宽确定模块,用于根据所述当前检验迭代对应的目标数据位宽,确定参考迭 代间隔对应的数据位宽,其中,所述参考迭代间隔中迭代对应的数据位宽一致,所述参考迭代间隔包括所述第二目标迭代间隔或所述预设迭代间隔;
量化参数确定模块,用于根据获取的点位置迭代间隔和参考迭代间隔对应的数据位 宽,调整所述参考迭代间隔中迭代对应的点位置,以调整所述神经网络运算中的点位置;
其中,所述点位置迭代间隔包含至少一次迭代,所述点位置迭代间隔中迭代的点位 置一致。
条款A39.根据条款A38所述的装置,所述点位置迭代间隔小于或等于所述参考迭代 间隔。
条款A40.根据条款A37至条款A39任一项所述的装置,所述量化参数还包括缩放系数,所述缩放系数与所述点位置同步更新。
条款A41.根据条款A37至条款A39任一项所述的装置,所述量化参数还包括偏移量, 所述偏移量与所述点位置同步更新。
条款A42.根据条款A37至条款A39任一项所述的装置,所述数据位宽确定模块包括:
量化误差确定子模块,用于根据所述当前检验迭代的待量化数据和所述当前检验迭 代的量化数据,确定量化误差,其中,所述当前检验迭代的量化数据对所述当前检验迭代的待量化数据进行量化获得;
数据位宽确定子模块,用于根据所述量化误差,确定所述当前检验迭代对应的目标 数据位宽。
条款A43.根据条款A42所述的装置,所述数据位宽确定单元用于根据所述量化误差, 确定所述当前检验迭代对应的目标数据位宽时,具体用于:
若所述量化误差大于或等于第一预设阈值,则增加所述当前检验迭代对应的数据位 宽,获得所述当前检验迭代对应的目标数据位宽;或者,
若所述量化误差小于或等于第二预设阈值,则减小所述当前检验迭代对应的数据位 宽,获得所述当前检验迭代对应的目标数据位宽。
条款A44.根据条款A43所述的装置,所述数据位宽确定单元用于若所述量化误差大 于或等于第一预设阈值,则增加所述当前检验迭代对应的数据位宽,获得所述当前检验迭代对应的目标数据位宽时,具体用于:
若所述量化误差大于或等于第一预设阈值,则根据第一预设位宽步长确定第一中间 数据位宽;
返回执行根据所述当前检验迭代中待量化数据和所述当前检验迭代的量化数据,确 定量化误差,直至所述量化误差小于所述第一预设阈值;其中,所述当前检验迭代的量化数据是根据所述第一中间数据位宽对所述当前检验迭代的待量化数据进行量化获得。
条款A45.根据条款A43所述的装置,所述数据位宽确定单元用于若所述量化误差小 于或等于第二预设阈值,则减小所述当前检验迭代对应的数据位宽,获得所述当前检验迭代对应的目标数据位宽时,具体用于:
若所述量化误差小于或等于第二预设阈值,则根据第二预设位宽步长确定第二中间 数据位宽;
返回执行根据所述当前检验迭代中待量化数据和所述当前检验迭代的量化数据,确 定量化误差,直至所述量化误差大于所述第二预设阈值;其中,所述当前检验迭代的量化数据是根据所述第二中间数据位宽对所述当前检验迭代的待量化数据进行量化获得。
条款A46.根据条款A31至条款A45任一项所述的装置,所述获取模块包括:
第一获取模块,用于获取点位置的变动幅度;其中,所述点位置的变动幅度能够用于表征所述待量化数据的数据变动幅度,所述点位置的变动幅度与所述待量化数据的数据变动幅度正相关。
条款A47.根据条款A46所述的装置,所述第一获取模块包括:
第一均值确定单元,用于根据当前检验迭代之前的上一检验迭代对应的点位置,以 及所述上一检验迭代之前的历史迭代对应的点位置,确定第一均值,其中,所述上一检验迭代为所述目标迭代间隔之前的上一迭代间隔对应的检验迭代;
第二均值确定单元,用于根据所述当前检验迭代对应的点位置及所述当前检验迭代 之前的历史迭代的点位置,确定第二均值;其中,所述当前检验迭代对应的点位置根据所述当前检验迭代对应的目标数据位宽和待量化数据确定;
第一误差确定单元,用于根据所述第一均值和所述第二均值确定第一误差,所述第 一误差用于表征所述点位置的变动幅度。
条款A48.根据条款A47所述的装置,所述第二均值确定单元具体用于:
获取预设数量的中间滑动平均值,其中,各个所述中间滑动平均值是根据所述当前 检验迭代之前所述预设数量的检验迭代确定的;
根据所述当前检验迭代的点位置以及所述预设数量的中间滑动平均值,确定所述第 二均值。
条款A49.根据条款A47所述的装置,所述第二均值确定单元具体用于根据所述当前 检验迭代对应的点位置以及所述第一均值,确定所述第二均值。
条款A50.根据条款A47所述的装置,所述第二均值确定单元用于根据获取的所述当 前检验迭代的数据位宽调整值,更新所述第二均值;
其中,所述当前检验迭代的数据位宽调整值根据所述当前检验迭代的目标数据位宽 和初始数据位宽确定。
条款A51.根据条款A50所述的装置,所述第二均值确定单元用于根据获取的所述当 前检验迭代的数据位宽调整值,更新所述第二均值时,具体用于:
当所述当前检验迭代的数据位宽调整值大于预设参数时,则根据所述当前检验迭代 的数据位宽调整值减小所述第二均值;
当所述当前检验迭代的数据位宽调整值小于预设参数时,则根据所述当前检验迭代 的数据位宽调整值增大所述第二均值。
条款A52.根据条款A47所述的装置,所述迭代间隔确定模块用于根据所述第一误差 确定所述目标迭代间隔,所述目标迭代间隔与所述第一误差负相关。
条款A53.根据条款A46至条款A52任一项所述的装置,所述获取模块还包括:
第二获取模块,用于获取数据位宽的变化趋势;根据所述点位置的变动幅度和所述 数据位宽的变化趋势,确定所述待量化数据的数据变动幅度。
条款A54.根据条款A53所述的装置,所述迭代间隔确定模块还用于根据获取的第一 误差和第二误差,确定所述目标迭代间隔;其中,所述第一误差用于表征点位置的变动幅度,所述第二误差用于表征数据位宽的变化趋势。
条款A55.根据条款A53所述的装置,所述迭代间隔确定模块用于根据获取的第一误 差和第二误差,确定所述目标迭代间隔时,具体用于:
将所述第一误差和所述第二误差中最大值作为目标误差;
根据所述目标误差确定所述目标迭代间隔,其中,所述目标误差与所述目标迭代间 隔负相关。
条款A56.根据条款A54或55所述的装置,所述第二误差根据量化误差确定;
其中,所述量化误差根据所述当前检验迭代中待量化数据和所述当前检验迭代的量 化数据确定,所述第二误差与所述量化误差正相关。
条款A57.根据条款A34所述的装置,
所述迭代间隔确定模块,还用于当所述当前检验迭代大于或等于第二预设迭代,且 第二误差大于预设误差值时,则根据所述待量化数据的数据变动幅度确定第一目标迭代 间隔。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本 技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择, 旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领 域的其它普通技术人员能理解本文公开的各实施例。
Claims (57)
1.一种循环神经网络的量化参数调整方法,其特征在于,所述方法包括:
获取待量化数据的数据变动幅度;
根据所述待量化数据的数据变动幅度,确定第一目标迭代间隔,以根据所述第一目标迭代间隔调整所述循环神经网络运算中的量化参数,其中,所述第一目标迭代间隔包括至少一次迭代,所述循环神经网络的量化参数用于实现对所述循环神经网络运算中待量化数据的量化操作。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在当前检验迭代小于或等于第一预设迭代时,根据预设迭代间隔调整所述量化参数。
3.根据权利要求1所述的方法,其特征在于,根据所述待量化数据的数据变动幅度,确定第一目标迭代间隔,包括:
在当前检验迭代大于第一预设迭代时,根据所述待量化数据的数据变动幅度确定第一目标迭代间隔。
4.根据权利要求1至3任一项所述的方法,其特征在于,根据所述待量化数据的数据变动幅度,确定第一目标迭代间隔,以根据所述第一目标迭代间隔调整所述循环神经网络运算中的量化参数,包括:
在当前检验迭代大于或等于第二预设迭代、且当前检验迭代需要进行量化参数调整时,根据所述第一目标迭代间隔和各周期中迭代的总数确定与所述当前检验迭代对应的第二目标迭代间隔;
根据所述第二目标迭代间隔确定出与所述当前检验迭代相对应的更新迭代,以在所述更新迭代中调整所述量化参数,所述更新迭代为所述当前检验迭代之后的迭代;
其中,所述第二预设迭代大于第一预设迭代,所述循环神经网络的量化调整过程包括多个周期,所述多个周期中迭代的总数不一致。
5.根据权利要求4所述的方法,其特征在于,根据所述第一目标迭代间隔和各周期中迭代的总数确定与所述当前检验迭代对应的第二目标迭代间隔,包括:
根据当前检验迭代在当前周期中的迭代排序数和所述当前周期之后的周期中迭代的总数,确定出对应所述当前检验迭代的更新周期,所述更新周期中迭代的总数大于或等于所述迭代排序数;
根据所述第一目标迭代间隔、所述迭代排序数、所述当前周期与更新周期之间的周期中迭代的总数,确定出所述第二目标迭代间隔。
6.根据权利要求4所述的方法,其特征在于,根据所述待量化数据的数据变动幅度,确定第一目标迭代间隔,以根据所述第一目标迭代间隔调整所述循环神经网络运算中的量化参数,还包括:
当所述循环神经网络的收敛程度满足预设条件时,则确定所述当前检验迭代大于或等于第二预设迭代。
7.根据权利要求4所述的方法,其特征在于,所述量化参数包括点位置,所述点位置为所述待量化数据对应的量化数据中小数点的位置;所述方法还包括:
根据当前检验迭代对应的目标数据位宽和所述当前检验迭代的待量化数据,确定参考迭代间隔中迭代对应的点位置,以调整所述循环神经网络运算中的点位置;
其中,所述参考迭代间隔中迭代对应的点位置一致,所述参考迭代间隔包括所述第二目标迭代间隔或所述预设迭代间隔。
8.根据权利要求4所述的方法,其特征在于,所述量化参数包括点位置,所述点位置为所述待量化数据对应的量化数据中小数点的位置;所述方法还包括:
根据所述当前检验迭代对应的目标数据位宽,确定参考迭代间隔对应的数据位宽,其中,所述参考迭代间隔中迭代对应的数据位宽一致,所述参考迭代间隔包括所述第二目标迭代间隔或所述预设迭代间隔;
根据获取的点位置迭代间隔和所述参考迭代间隔对应的数据位宽,调整所述参考迭代间隔中迭代对应的点位置,以调整所述循环神经网络运算中的点位置;
其中,所述点位置迭代间隔包含至少一次迭代,所述点位置迭代间隔中迭代的点位置一致。
9.根据权利要求8所述的方法,其特征在于,所述点位置迭代间隔小于或等于所述参考迭代间隔。
10.根据权利要求7至9任一项所述的方法,其特征在于,所述量化参数还包括缩放系数,所述缩放系数与所述点位置同步更新。
11.根据权利要求7至9任一项所述的方法,其特征在于,所述量化参数还包括偏移量,所述偏移量与所述点位置同步更新。
12.根据权利要求7至9任一项所述的方法,其特征在于,所述方法还包括:
根据所述当前检验迭代的待量化数据和所述当前检验迭代的量化数据,确定量化误差,其中,所述当前检验迭代的量化数据对所述当前检验迭代的待量化数据进行量化获得;
根据所述量化误差,确定所述当前检验迭代对应的目标数据位宽。
13.根据权利要求12所述的方法,其特征在于,所述根据所述量化误差,确定所述当前检验迭代对应的目标数据位宽,包括:
若所述量化误差大于或等于第一预设阈值,则增加所述当前检验迭代对应的数据位宽,获得所述当前检验迭代对应的目标数据位宽;或者,
若所述量化误差小于或等于第二预设阈值,则减小所述当前检验迭代对应的数据位宽,获得所述当前检验迭代对应的目标数据位宽。
14.根据权利要求13所述的方法,其特征在于,若所述量化误差大于或等于第一预设阈值,则增加所述当前检验迭代对应的数据位宽,获得所述当前检验迭代对应的目标数据位宽,包括:
若所述量化误差大于或等于第一预设阈值,则根据第一预设位宽步长确定第一中间数据位宽;
返回执行根据所述当前检验迭代中待量化数据和所述当前检验迭代的量化数据,确定量化误差,直至所述量化误差小于所述第一预设阈值;其中,所述当前检验迭代的量化数据是根据所述第一中间数据位宽对所述当前检验迭代的待量化数据进行量化获得。
15.根据权利要求13所述的方法,其特征在于,所述若所述量化误差小于或等于第二预设阈值,则减小所述当前检验迭代对应的数据位宽,包括:
若所述量化误差小于或等于第二预设阈值,则根据第二预设位宽步长确定第二中间数据位宽;
返回执行根据所述当前检验迭代中待量化数据和所述当前检验迭代的量化数据,确定量化误差,直至所述量化误差大于所述第二预设阈值;其中,所述当前检验迭代的量化数据是根据所述第二中间数据位宽对所述当前检验迭代的待量化数据进行量化获得。
16.根据权利要求1至15任一项所述的方法,其特征在于,所述获取待量化数据的数据变动幅度,包括:
获取点位置的变动幅度;其中,所述点位置的变动幅度能够用于表征所述待量化数据的数据变动幅度,所述点位置的变动幅度与所述待量化数据的数据变动幅度正相关。
17.根据权利要求16所述的方法,其特征在于,所述获取点位置的变动幅度,包括:
根据当前检验迭代之前的上一检验迭代对应的点位置,以及所述上一检验迭代之前的历史迭代对应的点位置,确定第一均值,其中,所述上一检验迭代为所述参考迭代间隔之前的上一迭代间隔对应的检验迭代;
根据所述当前检验迭代对应的点位置及所述当前检验迭代之前的历史迭代的点位置,确定第二均值;其中,所述当前检验迭代对应的点位置根据所述当前检验迭代对应的目标数据位宽和待量化数据确定;
根据所述第一均值和所述第二均值确定第一误差,所述第一误差用于表征所述点位置的变动幅度。
18.根据权利要求17所述的方法,其特征在于,根据所述当前检验迭代对应的点位置及所述当前检验迭代之前的历史迭代的点位置,确定第二均值,包括:
获取预设数量的中间滑动平均值,其中,各个所述中间滑动平均值是根据所述当前检验迭代之前所述预设数量的检验迭代确定的;
根据所述当前检验迭代的点位置以及所述预设数量的中间滑动平均值,确定所述第二均值。
19.根据权利要求17所述的方法,其特征在于,所述根据所述当前检验迭代对应的点位置及所述当前检验迭代之前的历史迭代的点位置,确定第二均值,包括:
根据所述当前检验迭代对应的点位置以及所述第一均值,确定所述第二均值。
20.根据权利要求17所述的方法,其特征在于,所述方法还包括:
根据获取的所述当前检验迭代的数据位宽调整值,更新所述第二均值;其中,所述当前检验迭代的数据位宽调整值根据所述当前检验迭代的目标数据位宽和初始数据位宽确定。
21.根据权利要求20所述的方法,其特征在于,所述根据获取的所述当前检验迭代的数据位宽调整值,更新所述第二均值,包括:
当所述当前检验迭代的数据位宽调整值大于预设参数时,则根据所述当前检验迭代的数据位宽调整值减小所述第二均值;
当所述当前检验迭代的数据位宽调整值小于预设参数时,则根据所述当前检验迭代的数据位宽调整值增大所述第二均值。
22.根据权利要求17所述的方法,其特征在于,所述根据所述待量化数据的数据变动幅度,确定第一目标迭代间隔,包括:
根据所述第一误差确定所述第一目标迭代间隔,所述第一目标迭代间隔与所述第一误差负相关。
23.根据权利要求16至22任一项所述的方法,其特征在于,所述获取待量化数据的数据变动幅度,还包括:
获取数据位宽的变化趋势;
根据所述点位置的变动幅度和所述数据位宽的变化趋势,确定所述待量化数据的数据变动幅度。
24.根据权利要求23所述的方法,其特征在于,根据所述待量化数据的数据变动幅度,确定第一目标迭代间隔,还包括:
根据获取的第一误差和第二误差,确定所述第一目标迭代间隔;其中,所述第一误差用于表征点位置的变动幅度,所述第二误差用于表征数据位宽的变化趋势。
25.根据权利要求23所述的方法,其特征在于,根据获取的第一误差和第二误差,确定所述第一目标迭代间隔,包括:
将所述第一误差和所述第二误差中最大值作为目标误差;
根据所述目标误差确定所述第一目标迭代间隔,其中,所述目标误差与所述第一目标迭代间隔负相关。
26.根据权利要求24或25所述的方法,其特征在于,所述第二误差根据量化误差确定;
其中,所述量化误差根据当前检验迭代中待量化数据和所述当前检验迭代的量化数据确定,所述第二误差与所述量化误差正相关。
27.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当所述当前检验迭代大于或等于第二预设迭代,且第二误差大于预设误差值时,则根据所述待量化数据的数据变动幅度确定第一目标迭代间隔。
28.根据权利要求1-27任一项所述的方法,其特征在于,所述待量化数据为神经元数据、权值数据或梯度数据中的至少一种。
29.一种循环神经网络的量化参数调整装置,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-28任一项所述的方法的步骤。
30.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被执行时,实现如权利要求1-28任一项所述的方法的步骤。
31.一种循环神经网络的量化参数调整装置,其特征在于,所述装置包括:
获取模块,用于获取待量化数据的数据变动幅度;
迭代间隔确定模块,用于根据所述待量化数据的数据变动幅度,确定第一目标迭代间隔,以根据所述第一目标迭代间隔调整所述循环神经网络运算中的量化参数,其中,所述目标迭代间隔包括至少一次迭代,所述循环神经网络的量化参数用于实现对所述循环神经网络运算中待量化数据的量化操作。
32.根据权利要求31所述的装置,其特征在于,所述装置还包括:
预设间隔确定模块,用于在当前检验迭代小于或等于第一预设迭代时,根据预设迭代间隔调整所述量化参数。
33.根据权利要求31所述的装置,其特征在于,
所述迭代间隔确定模块,还用于在当前检验迭代大于第一预设迭代时,根据所述待量化数据的数据变动幅度确定第一目标迭代间隔。
34.根据权利要求31至33任一项所述的装置,其特征在于,所述迭代间隔确定模块,包括:
第二目标迭代间隔确定子模块,在当前检验迭代大于或等于第二预设迭代、且当前检验迭代需要进行量化参数调整时,根据所述第一目标迭代间隔和各周期中迭代的总数确定与所述当前检验迭代对应的第二目标迭代间隔;
更新迭代确定子模块,根据所述第二目标迭代间隔确定出与所述当前检验迭代相对应的更新迭代,以在所述更新迭代中调整所述量化参数,所述更新迭代为所述当前检验迭代之后的迭代;
其中,所述第二预设迭代大于第一预设迭代,所述循环神经网络的量化调整过程包括多个周期,所述多个周期中迭代的总数不一致。
35.根据权利要求34所述的装置,其特征在于,所述第二目标迭代间隔确定子模块,包括:
更新周期确定子模块,根据当前检验迭代在当前周期中的迭代排序数和所述当前周期之后的周期中迭代的总数,确定出对应所述当前检验迭代的更新周期,所述更新周期中迭代的总数大于或等于所述迭代排序数;
确定子模块,根据所述第一目标迭代间隔、所述迭代排序数、所述当前周期与更新周期之间的周期中迭代的总数,确定出所述第二目标迭代间隔。
36.根据权利要求34所述的装置,其特征在于,
所述迭代间隔确定模块,还用于当所述循环神经网络的收敛程度满足预设条件时,则确定所述当前检验迭代大于或等于第二预设迭代。
37.根据权利要求34所述的装置,其特征在于,所述量化参数包括点位置,所述点位置为所述待量化数据对应的量化数据中小数点的位置;所述装置还包括:
量化参数确定模块,用于根据当前检验迭代对应的目标数据位宽和所述当前检验迭代的待量化数据,确定参考迭代间隔中迭代对应的点位置,以调整所述循环神经网络运算中的点位置;
其中,所述参考迭代间隔中迭代对应的点位置一致,所述参考迭代间隔包括所述第二目标迭代间隔或所述预设迭代间隔。
38.根据权利要求34所述的装置,其特征在于,所述量化参数包括点位置,所述点位置为所述待量化数据对应的量化数据中小数点的位置;所述装置还包括:
数据位宽确定模块,用于根据所述当前检验迭代对应的目标数据位宽,确定参考迭代间隔对应的数据位宽,其中,所述参考迭代间隔中迭代对应的数据位宽一致,所述参考迭代间隔包括所述第二目标迭代间隔或所述预设迭代间隔;
量化参数确定模块,用于根据获取的点位置迭代间隔和参考迭代间隔对应的数据位宽,调整所述参考迭代间隔中迭代对应的点位置,以调整所述神经网络运算中的点位置;
其中,所述点位置迭代间隔包含至少一次迭代,所述点位置迭代间隔中迭代的点位置一致。
39.根据权利要求38所述的装置,其特征在于,所述点位置迭代间隔小于或等于所述参考迭代间隔。
40.根据权利要求37至39任一项所述的装置,其特征在于,所述量化参数还包括缩放系数,所述缩放系数与所述点位置同步更新。
41.根据权利要求37至39任一项所述的装置,其特征在于,所述量化参数还包括偏移量,所述偏移量与所述点位置同步更新。
42.根据权利要求37至39任一项所述的装置,其特征在于,所述数据位宽确定模块包括:
量化误差确定子模块,用于根据所述当前检验迭代的待量化数据和所述当前检验迭代的量化数据,确定量化误差,其中,所述当前检验迭代的量化数据对所述当前检验迭代的待量化数据进行量化获得;
数据位宽确定子模块,用于根据所述量化误差,确定所述当前检验迭代对应的目标数据位宽。
43.根据权利要求42所述的装置,其特征在于,所述数据位宽确定单元用于根据所述量化误差,确定所述当前检验迭代对应的目标数据位宽时,具体用于:
若所述量化误差大于或等于第一预设阈值,则增加所述当前检验迭代对应的数据位宽,获得所述当前检验迭代对应的目标数据位宽;或者,
若所述量化误差小于或等于第二预设阈值,则减小所述当前检验迭代对应的数据位宽,获得所述当前检验迭代对应的目标数据位宽。
44.根据权利要求43所述的装置,其特征在于,所述数据位宽确定单元用于若所述量化误差大于或等于第一预设阈值,则增加所述当前检验迭代对应的数据位宽,获得所述当前检验迭代对应的目标数据位宽时,具体用于:
若所述量化误差大于或等于第一预设阈值,则根据第一预设位宽步长确定第一中间数据位宽;
返回执行根据所述当前检验迭代中待量化数据和所述当前检验迭代的量化数据,确定量化误差,直至所述量化误差小于所述第一预设阈值;其中,所述当前检验迭代的量化数据是根据所述第一中间数据位宽对所述当前检验迭代的待量化数据进行量化获得。
45.根据权利要求43所述的装置,其特征在于,所述数据位宽确定单元用于若所述量化误差小于或等于第二预设阈值,则减小所述当前检验迭代对应的数据位宽,获得所述当前检验迭代对应的目标数据位宽时,具体用于:
若所述量化误差小于或等于第二预设阈值,则根据第二预设位宽步长确定第二中间数据位宽;
返回执行根据所述当前检验迭代中待量化数据和所述当前检验迭代的量化数据,确定量化误差,直至所述量化误差大于所述第二预设阈值;其中,所述当前检验迭代的量化数据是根据所述第二中间数据位宽对所述当前检验迭代的待量化数据进行量化获得。
46.根据权利要求31至45任一项所述的装置,其特征在于,所述获取模块包括:
第一获取模块,用于获取点位置的变动幅度;其中,所述点位置的变动幅度能够用于表征所述待量化数据的数据变动幅度,所述点位置的变动幅度与所述待量化数据的数据变动幅度正相关。
47.根据权利要求46所述的装置,其特征在于,所述第一获取模块包括:
第一均值确定单元,用于根据当前检验迭代之前的上一检验迭代对应的点位置,以及所述上一检验迭代之前的历史迭代对应的点位置,确定第一均值,其中,所述上一检验迭代为所述目标迭代间隔之前的上一迭代间隔对应的检验迭代;
第二均值确定单元,用于根据所述当前检验迭代对应的点位置及所述当前检验迭代之前的历史迭代的点位置,确定第二均值;其中,所述当前检验迭代对应的点位置根据所述当前检验迭代对应的目标数据位宽和待量化数据确定;
第一误差确定单元,用于根据所述第一均值和所述第二均值确定第一误差,所述第一误差用于表征所述点位置的变动幅度。
48.根据权利要求47所述的装置,其特征在于,所述第二均值确定单元具体用于:
获取预设数量的中间滑动平均值,其中,各个所述中间滑动平均值是根据所述当前检验迭代之前所述预设数量的检验迭代确定的;
根据所述当前检验迭代的点位置以及所述预设数量的中间滑动平均值,确定所述第二均值。
49.根据权利要求47所述的装置,其特征在于,所述第二均值确定单元具体用于根据所述当前检验迭代对应的点位置以及所述第一均值,确定所述第二均值。
50.根据权利要求47所述的装置,其特征在于,所述第二均值确定单元用于根据获取的所述当前检验迭代的数据位宽调整值,更新所述第二均值;
其中,所述当前检验迭代的数据位宽调整值根据所述当前检验迭代的目标数据位宽和初始数据位宽确定。
51.根据权利要求50所述的装置,其特征在于,所述第二均值确定单元用于根据获取的所述当前检验迭代的数据位宽调整值,更新所述第二均值时,具体用于:
当所述当前检验迭代的数据位宽调整值大于预设参数时,则根据所述当前检验迭代的数据位宽调整值减小所述第二均值;
当所述当前检验迭代的数据位宽调整值小于预设参数时,则根据所述当前检验迭代的数据位宽调整值增大所述第二均值。
52.根据权利要求47所述的装置,其特征在于,所述迭代间隔确定模块用于根据所述第一误差确定所述目标迭代间隔,所述目标迭代间隔与所述第一误差负相关。
53.根据权利要求46至52任一项所述的装置,其特征在于,所述获取模块还包括:
第二获取模块,用于获取数据位宽的变化趋势;根据所述点位置的变动幅度和所述数据位宽的变化趋势,确定所述待量化数据的数据变动幅度。
54.根据权利要求53所述的装置,其特征在于,所述迭代间隔确定模块还用于根据获取的第一误差和第二误差,确定所述目标迭代间隔;其中,所述第一误差用于表征点位置的变动幅度,所述第二误差用于表征数据位宽的变化趋势。
55.根据权利要求53所述的装置,其特征在于,所述迭代间隔确定模块用于根据获取的第一误差和第二误差,确定所述目标迭代间隔时,具体用于:
将所述第一误差和所述第二误差中最大值作为目标误差;
根据所述目标误差确定所述目标迭代间隔,其中,所述目标误差与所述目标迭代间隔负相关。
56.根据权利要求54或55所述的装置,其特征在于,所述第二误差根据量化误差确定;
其中,所述量化误差根据所述当前检验迭代中待量化数据和所述当前检验迭代的量化数据确定,所述第二误差与所述量化误差正相关。
57.根据权利要求34所述的装置,其特征在于,
所述迭代间隔确定模块,还用于当所述当前检验迭代大于或等于第二预设迭代,且第二误差大于预设误差值时,则根据所述待量化数据的数据变动幅度确定第一目标迭代间隔。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/095679 WO2021022903A1 (zh) | 2019-08-07 | 2020-06-11 | 数据处理方法、装置、计算机设备和存储介质 |
US17/622,647 US20220366238A1 (en) | 2019-08-27 | 2020-08-20 | Method and apparatus for adjusting quantization parameter of recurrent neural network, and related product |
PCT/CN2020/110142 WO2021036892A1 (zh) | 2019-08-27 | 2020-08-20 | 循环神经网络的量化参数调整方法、装置及相关产品 |
Applications Claiming Priority (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2019105052397 | 2019-06-12 | ||
CN201910505239 | 2019-06-12 | ||
CN201910515355 | 2019-06-14 | ||
CN2019105153557 | 2019-06-14 | ||
CN2019105285378 | 2019-06-18 | ||
CN201910528537 | 2019-06-18 | ||
CN2019105701250 | 2019-06-27 | ||
CN201910570125 | 2019-06-27 | ||
CN201910798228 | 2019-08-27 | ||
CN2019107982282 | 2019-08-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112085150A true CN112085150A (zh) | 2020-12-15 |
Family
ID=73734313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910888141.4A Pending CN112085150A (zh) | 2019-06-12 | 2019-09-19 | 量化参数调整方法、装置及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112085150A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113554149A (zh) * | 2021-06-18 | 2021-10-26 | 北京百度网讯科技有限公司 | 神经网络处理单元npu、神经网络的处理方法及其装置 |
-
2019
- 2019-09-19 CN CN201910888141.4A patent/CN112085150A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113554149A (zh) * | 2021-06-18 | 2021-10-26 | 北京百度网讯科技有限公司 | 神经网络处理单元npu、神经网络的处理方法及其装置 |
CN113554149B (zh) * | 2021-06-18 | 2022-04-12 | 北京百度网讯科技有限公司 | 神经网络处理单元npu、神经网络的处理方法及其装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112085184A (zh) | 量化参数调整方法、装置及相关产品 | |
WO2021036908A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2021036904A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2021036890A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2021036905A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2020223856A1 (zh) | 一种基于卷积神经网络架构的数据处理方法及装置 | |
CN112085182A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2021036362A1 (zh) | 用于处理数据的方法、装置以及相关产品 | |
CN112085176B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112085150A (zh) | 量化参数调整方法、装置及相关产品 | |
WO2021022903A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2021036892A1 (zh) | 循环神经网络的量化参数调整方法、装置及相关产品 | |
CN112085187A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
EP4024287A1 (en) | Method and apparatus for processing data, and related product | |
CN113112009B (zh) | 用于神经网络数据量化的方法、装置和计算机可读存储介质 | |
CN112085151A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112085177A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
US20220222041A1 (en) | Method and apparatus for processing data, and related product | |
JP7233636B2 (ja) | データ量子化処理方法、装置、電子機器および記憶媒体 | |
CN113298843B (zh) | 数据量化处理方法、装置、电子设备和存储介质 | |
CN112766472B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN113111997A (zh) | 用于神经网络数据量化的方法、装置和计算机可读存储介质 |
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 |