CN112085177A - 数据处理方法、装置、计算机设备和存储介质 - Google Patents
数据处理方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN112085177A CN112085177A CN201910888599.XA CN201910888599A CN112085177A CN 112085177 A CN112085177 A CN 112085177A CN 201910888599 A CN201910888599 A CN 201910888599A CN 112085177 A CN112085177 A CN 112085177A
- Authority
- CN
- China
- Prior art keywords
- data
- quantized
- iteration
- bit width
- target
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本公开涉及一种数据处理方法、装置、计算机设备和存储介质。其所公开的板卡包括:存储器件、接口装置和控制器件以及包括数据处理装置的人工智能芯片;其中,人工智能芯片与存储器件、控制器件以及接口装置分别连接;存储器件,用于存储数据;接口装置,用于实现人工智能芯片与外部设备之间的数据传输;控制器件,用于对人工智能芯片的状态进行监控。本公开实施例所提供的数据处理方法、装置、计算机设备和存储介质,利用对应的量化参数对待量化数据进行量化,在保证精度的同时,减小了存储数据所占用的存储空间,保证了运算结果的准确性和可靠性,且能够提高运算的效率。
Description
技术领域
本公开涉及计算机技术领域,特别是涉及一种神经网络量化方法、装置、计算机设备和存储介质。
背景技术
神经网络(neural network,NN)是一种模仿生物神经网络的结构和功能的数学模型 或计算模型。神经网络通过样本数据的训练,不断修正网络权值和阈值使误差函数沿负梯度方向下降,逼近期望输出。它是一种应用较为广泛的识别分类模型,多用于函数逼 近、模型识别分类、数据压缩和时间序列预测等。神经网络被应用到图像识别、语音识 别、自然语言处理等领域中,然而,随着神经网络复杂度提高,数据的数据量和数据维 度都在不断增大,不断增大的数据量等对运算装置的数据处理效率、存储装置的存储容 量及访存效率等提出了较大的挑战。相关技术中,采用固定位宽对神经网络的运算数据 进行量化,即将浮点型的运算数据转换为定点型的运算数据,以实现神经网络的运算数 据的压缩。但相关技术中针对整个神经网络采用相同的量化方案,但神经网络的不同运 算数据之间可能存在较大的差异,往往会导致精度较低,影响数据运算结果。
发明内容
基于此,有必要针对上述技术问题,提供一种神经网络量化方法、装置、计算机设备和存储介质。
根据本公开的一方面,提供了一种神经网络量化方法,对于所述神经网络中的任意 待量化层,所述方法包括:
在所述待量化层的目标数据中确定多个待量化数据,各所述待量化数据均为所述目 标数据的子集,所述目标数据为所述待量化层的任意一种待量化的待运算数据,所述待运算数据包括输入神经元、权值、偏置、梯度中的至少一种;
将各所述待量化数据分别根据对应的量化参数进行量化,得到与各所述待量化数据 对应的量化数据;
根据与各所述待量化数据对应的量化数据得到所述目标数据的量化结果,以使所述 待量化层根据所述目标数据的量化结果进行运算。
根据本公开的另一方面,提供了一种神经网络量化装置,对于所述神经网络中的任 意待量化层,所述装置包括:
数据确定模块,在所述待量化层的目标数据中确定多个待量化数据,各所述待量化 数据均为所述目标数据的子集,所述目标数据为所述待量化层的任意一种待量化的待运 算数据,所述待运算数据包括输入神经元、权值、偏置、梯度中的至少一种;
数据量化模块,将各所述待量化数据分别根据对应的量化参数进行量化,得到与各 所述待量化数据对应的量化数据;
数据运算模块,根据与各所述待量化数据对应的量化数据得到所述目标数据的量化 结果,以使所述待量化层根据所述目标数据的量化结果进行运算。
根据本公开的另一方面,提供了一种人工智能芯片,其特征在于,所述芯片包括上述神经网络量化装置。
根据本公开的另一方面,提供了一种电子设备,所述电子设备包括上述人工智能芯 片。
根据本公开的另一方面,提供了一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及上述人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连 接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
所述控制器件,用于对所述人工智能芯片的状态进行监控。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计 算机程序指令,所述计算机程序指令被处理器执行时实现上述神经网络量化方法。
本公开实施例所提供的神经网络量化方法、装置、计算机设备和存储介质,该方法包括:在所述待量化层的目标数据中确定多个待量化数据,各所述待量化数据均为所述 目标数据的子集,所述目标数据为所述待量化层的任意一种待量化的待运算数据,所述 待运算数据包括输入神经元、权值、偏置、梯度中的至少一种;将各所述待量化数据分 别根据对应的量化参数进行量化,得到与各所述待量化数据对应的量化数据;根据与各 所述待量化数据对应的量化数据得到所述目标数据的量化结果,以使所述待量化层根据 所述目标数据的量化结果进行运算。本公开实施例所提供的神经网络量化方法、装置、 计算机设备和存储介质,利用对应的量化参数对目标数据中的多个待量化数据分别进行 量化,在保证精度的同时,减小了存储数据所占用的存储空间,保证了运算结果的准确 性和可靠性,且能够提高运算的效率,且量化同样缩减了神经网络模型的大小,降低了 对运行该神经网络模型的终端的性能要求。
通过权要中的技术特征进行推导,能够达到对应背景技术中的技术问题的有益效果。 根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例 性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开实施例的神经网络量化方法的处理器的示意图。
图2示出根据本公开实施例的神经网络量化方法的流程图。
图3示出根据本公开实施例的将输入神经元按照卷积核确定待量化数据的示意图。
图4示出根据本公开实施例的将输入神经元按照卷积核确定待量化数据的示意图。
图5示出根据本公开实施例的对称的定点数表示的示意图。
图6示出根据本公开实施例的引入偏移量的定点数表示的示意图。
图7示出根据本公开实施例的神经网络量化方法的流程图。
图8示出根据本公开一实施例的神经网络量化装置的框图。
图9示出根据本公开实施例的板卡的结构框图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整 地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除 一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的, 而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文 清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进 一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的 一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为 “当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果 检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或 “一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
随着神经网络运算复杂度的提高,数据的数据量和数据维度也在不断增大,而传统 的神经网络算法通常采用浮点数据格式来执行神经网络运算,这就使得不断增大的数据 量等对运算装置的数据处理效率、存储装置的存储容量及访存效率等提出了较大的挑战。 为解决上述问题,相关技术中,对神经网络运算过程涉及的全部数据均由浮点数转化定 点数,但由于不同的数据之间具有差异性,或者,同一数据在不同阶段具有差异性,仅“由 浮点数转化定点数”时,往往会导致精度不够,从而会影响运算结果。
神经网络中待运算数据通常为浮点数据格式或精度较高的定点数据格式,在承载神 经网络的装置中运行神经网络时,浮点数据格式或精度较高的定点数据格式的各种待运 算数据,导致神经网络运行的运算量和访存开销都较大。为提高运算效率,本公开实施例所提供的神经网络量化方法、装置、计算机设备和存储介质,可以根据不同类待运算 数据进行神经网络中的待运算数据的局部量化,量化后的数据格式通常为位宽较短、精 度较低的定点数据格式。利用精度较低的量化后数据执行神经网络的运算,可以降低运 算量和访存量。量化后的数据格式可以为位宽较短的定点数据格式。可以将浮点数据格 式的待运算数据量化为定点数据格式的待运算数据,也可以将精度较高的定点格式的待 运算数据量化为精度较低的定点格式的待运算数据。利用对应的量化参数对数据进行局 部量化,在保证精度的同时,减小了存储数据所占用的存储空间,保证了运算结果的准 确性和可靠性,且能够提高运算的效率,且量化同样缩减了神经网络模型的大小,降低 了对运行该神经网络模型的终端的性能要求,使神经网络模型可以应用于算力、体积、 功耗相对受限的手机等终端。
可以理解的是,量化精度即量化后数据与量化前数据之间的误差的大小。量化精度 可以影响神经网络运算结果的准确度。化精度越高,运算结果的准确率越高,但运算量更大、访存开销也更大。相较于位宽较短的量化后数据,位宽较长的量化后数据的量化 精度更高,用于执行神经网络的运算时准确率也更高。但在用于进行神经网络的运算时, 位宽较长的量化后数据运算量更大、访存开销也较大,运算效率较低。同理,对于相同 的待量化数据,采用不同的量化参数得到的量化后数据有不同的量化精度,将产生不同 的量化结果,对运算效率和运算结果的准确率也会带来不同的影响。对神经网络进行量 化,在运算效率和运算结果的准确率之间进行平衡,可以采用更加符合待运算数据的数 据特征的量化后数据位宽和量化参数。
神经网络中的待运算数据可以包括权值、神经元、偏置、梯度中的至少一种。待运算数据为包含多个元素的矩阵。在传统的神经网络量化中,通常将待运算数据的整体进 行量化后进行运算。而在利用量化后的待运算数据进行运算时,通常利用整体量化后的 待运算数据中的一部分数据进行运算。例如,在卷积层,利用整体量化后的输入神经元 进行卷积运算时,根据卷积核的维度和步长,在整体量化后的输入神经元中分别提取与 卷积核的维度相当的量化后的神经元进行卷积运算。在全连接层,利用整体量化后的输 入神经元进行矩阵乘运算时,在整体量化后的输入神经元中分别按行提取量化后的神经 元进行矩阵乘的运算。因此,在传统的神经网络量化方法中,将待运算数据的整体进行 量化后再按照部分量化后的数据进行运算,整体的运算效率较低。且将待运算数据的整 体量化后再进行运算,需要将整体量化后的待运算数据进行存储,占用的存储空间较大。
根据本公开实施例的神经网络量化方法可应用于处理器中,该处理器可以是通用处 理器,例如CPU(Central Processing Unit,中央处理器),也可以是用于执行人工智能运 算的人工智能处理器(IPU)。人工智能运算可包括机器学习运算,类脑运算等。其中, 机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器 可例如包括GPU(Graphics Processing Unit,图形处理单元)、NPU(Neural-NetworkProcessing Unit,神经网络处理单元)、DSP(Digital Signal Process,数字信号处理单元)、 现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片中的一种或组合。本 公开对处理器的具体类型不作限制。
在一种可能的实现方式中,本公开中所提及的处理器可包括多个处理单元,每个处 理单元可以独立运行所分配到的各种任务,如:卷积运算任务、池化任务或全连接任务等。本公开对处理单元及处理单元所运行的任务不作限制。
图1示出根据本公开实施例的神经网络量化方法的处理器的示意图。如图1所示,处理器100包括多个处理单元101以及存储单元102,多个处理单元101用于执行指令序 列,存储单元102用于存储数据,可包括随机存储器(RAM,Random Access Memory) 和寄存器堆。处理器100中的多个处理单元101既可共用部分存储空间,例如共用部分 RAM存储空间和寄存器堆,又可同时拥有各自的存储空间。
图2示出根据本公开实施例的神经网络量化方法的流程图。如图2所示,该方法可以 应用于神经网络中的任一层,该方法包括步骤S11至步骤S13。该方法可以应用于图1所示 的处理器100。其中,处理单元101用于执行步骤S11至步骤S13。存储单元102用于存储待量化数据、量化参数、数据位宽等与步骤S11至步骤S13的处理过程相关的数据。
在步骤S11中,在所述待量化层的目标数据中确定多个待量化数据,各所述待量化数 据均为所述目标数据的子集,所述目标数据为所述待量化层的任意一种待量化的待运算 数据,所述待运算数据包括输入神经元、权值、偏置、梯度中的至少一种。
神经网络中的待量化层可以为神经网络中的任意一层。可以根据需求将神经网络中 的部分层或全部层确定为待量化层。当神经网络中包括多个待量化层时,各待量化层可以连续也可以不连续。根据神经网络的不同,待量化层的种类也可以不同,例如待量化 层可以为卷积层、全连接层等,本公开对待量化层的数量及类型不作限定。
在一种可能的实现方式中,所述待运算数据包括神经元、权值、偏置、梯度中的至少一种。可以根据需求将待量化层中的神经元、权值、偏置、梯度中的至少一种进行量 化。目标数据为任意一种待量化的待运算数据。例如,待运算数据为神经元、权值和偏 置,需要将神经元和权值进行量化,则神经元为目标数据1,权值为目标数据2。
当待量化层中有多种目标数据时,针对每种目标数据可以采用本公开中的量化方法 进行量化后,得到与各目标数据对应的量化数据,再利用各种目标数据的量化数据和不需要进行量化的待运算数据执行待量化层的运算。
神经网络运算的推理阶段可包括:将训练好的神经网络进行前向运算以完成设定任 务的阶段。在神经网络的推理阶段,可以将神经元、权值、偏置和梯度中的至少一种作为待量化数据,根据本披露实施例中的方法进行量化后,利用量化后的数据完成待量化 层的运算。
神经网络运算的微调阶段可包括:将训练好的神经网络进行预设数量迭代的前向运 算和反向运算,进行参数的微调以适应设定任务的阶段。在神经网络运算的微调阶段,可以将神经元、权值、偏置、梯度中的至少一种,根据本公开实施例中的方法进行量化 后,利用量化后的数据完成待量化层的前向运算或反向运算。
神经网络运算的训练阶段可包括:将初始化的神经网络进行迭代训练以得到训练好 的神经网络的阶段,训练好的神经网络可执行特定任务。在神经网络的训练阶段,可以将神经元、权值、偏置、梯度中的至少一种,根据本公开实施例中的方法进行量化后, 利用量化后的数据完成待量化层的前向运算或反向运算。
可以将一个目标数据中的子集作为待量化数据,可以按照不同的方式将目标数据划 分为多个子集,将每个子集作为一个待量化数据。将一个目标数据划分为多个待量化数据。可以根据目标数据所要进行的运算类型,将目标数据划分为多个待量化数据。例如, 目标数据需要进行卷积运算时,可以根据卷积核的高度和宽度,将目标数据划分为与卷 积核对应的多个待量化数据。目标数据为需要进行矩阵乘运算的左矩阵时,可以将目标 数据按行划分为多个待量化数据。可以一次将目标数据划分为多个待量化数据,也可以 按照运算的顺序,将目标数据依次划分为多个待量化数据。
也可以根据预先设定的数据划分方式,将目标数据划分为多个待量化数据。例如,预先设定的数据划分方式可以为:按照固定的数据大小进行划分,或按照固定的数据形 状进行划分。
将目标数据划分为多个待量化数据后,可以将各待量化数据分别进行量化,并根据 各待量化数据量化后的数据进行运算。一个待量化数据所需的量化时间,短于目标数据的整体的量化时间,将其中一个待量化数据量化完毕后,即可以用量化后的数据执行后 续的运算,而不用等目标数据中的所有待量化数据均量化完成后再执行运算。因此本公 开中的目标数据的量化方法,可以提高目标数据的运算效率。
在步骤S12中,将各所述待量化数据分别根据对应的量化参数进行量化,得到与各所 述待量化数据对应的量化数据。
待量化数据对应的量化参数可以为一个量化参数,也可以为多个量化参数。量化参 数可以包括点位置等用于对待量化数据进行量化的参数。点位置可以用于确定量化后数 据中小数点的位置。量化参数还可以包括缩放系数、偏移量等。
确定与待量化数据对应的量化参数的方式,可以包括:确定与目标数据对应的量化 参数后,并将与目标数据对应的量化参数确定为待量化数据的量化参数的方式。当待量化层包括多个目标数据时,各目标数据均可以有与之对应的量化参数,且各目标数据对 应的量化参数可以不同,也可以相同,本公开对此不作限定。将目标数据划分为多个待 量化数据后,可以将目标数据对应的量化参数确定为各待量化数据对应的量化参数,此 时各待量化数据对应的量化参数相同。
确定与待量化数据对应的量化参数的方式,也可以包括:直接确定各待量化数据对 应的量化参数的方式。目标数据可以没有与之对应的量化参数,或目标数据可以有与之对应的量化参数但待量化数据不采用。可以直接为各待量化数据设定对应的量化参数。 也可以根据待量化数据计算得到对应的量化参数。此时各待量化数据对应的量化参数可 以相同也可以不同。例如,当待量化层为卷积层,目标数据为权重时,可以将权重按照 通道划分为多个待量化权重数据,不同通道的待量化权重数据可以对应不同的量化参数。 当各待量化数据对应的量化参数不同时,各待量化数据利用对应的量化参数进行量化后, 所得到的量化结果需不影响目标数据的运算。
确定与目标数据对应的量化参数的方式、或确定与待量化数据对应的量化参数的方 式,可以包括:查找预设的量化参数直接确定量化参数的方式、查找对应关系以确定量化参数的方式,或根据待量化数据计算得到量化参数的方式。以下以确定与待量化数据 对应的量化参数的方式为例进行说明:
可以直接设定与待量化数据对应的量化参数。可以将设定好的量化参数存储于设定 的存储空间。设定的存储空间可以为片上或片外的存储空间。例如,可以将设定好的量化参数存储于设定的存储空间。各待量化数据在进行量化时,可以在设定的存储空间提 取对应的量化参数后进行量化。可以根据经验值设定与每种待量化数据对应的量化参数。 也可以根据需求更新所存储的与每种待量化数据对应的量化参数。
可以根据各待量化数据的数据特征,通过查找数据特征与量化参数的对应关系,确 定量化参数。例如,待量化数据的数据分布为稀疏和稠密时可以分别对应不同的量化参数。可以通过查找对应关系确定与待量化数据的数据分布对应的量化参数。
还可以根据各待量化数据,利用设定的量化参数计算方法,计算得到各待量化层对 应的量化参数。例如,可以根据待量化数据的绝对值最大值和预设的数据位宽,利用取整算法计算得到量化参数中的点位置。
在步骤S13中,根据与各所述待量化数据对应的量化数据得到所述目标数据的量化结 果,以使所述待量化层根据所述目标数据的量化结果进行运算。
可以利用设定的量化算法,根据量化参数对待量化数据进行量化,得到量化数据。例如,可以利用取整算法作为量化算法,可以根据数据位宽和点位置对待量化数据进行 取整量化得到量化数据。其中,取整算法可以包括向上取整、向下取整、向零取整和四 舍五入取整等。本公开对量化算法的具体实现方式不作限定。
各待量化数据可以分别采用对应的量化参数进行量化。由于与各待量化数据对应的 量化参数更为贴合各待量化数据自身的特征,使得各待量化层的每种量化数据的量化精 度更加符合目标数据的运算需求,也就更加符合待量化层的运算需求。在保证待量化层的运算结果准确率的前提下,能够提高待量化层的运算效率,达到待量化层的运算效率 和运算结果准确率之间的平衡。进一步的,将目标数据划分为多个待量化数据分别量化, 可以在量化完一个待量化数据后,根据量化得到的量化结果执行运算的同时,可以进行 第二个待量化数据的量化,从而在整体上提高目标数据的运算效率,也就提高了待量化 层的计算效率。
可以将各待量化数据的量化数据进行合并后得到目标数据的量化结果。也可以将各 待量化数据的量化数据进行设定的运算后得到目标数据的量化结果。例如可以将各待量 化数据的量化数据按照设定的权重进行加权运算后得到目标数据的量化结果。本公开对 此不作限定。
在神经网络的推理、训练和微调过程中,可以对待量化数据进行离线量化或在线量 化。其中,离线量化可以为利用量化参数对待量化数据进行离线处理。在线量化可以为利用量化参数对待量化数据进行在线处理。例如,神经网络运行在人工智能芯片上,可 以将待量化数据和量化参数发送至人工智能芯片之外的运算装置进行离线量化,或利用 人工智能芯片之外的运算装置对预先得到的待量化数据和量化参数进行离线量化。而在 人工智能芯片运行神经网络的过程中,人工智能芯片可以对待量化数据利用量化参数进 行在线量化。本公开中对各待量化数据的量化过程为在线或离线不作限定。
在本实施例所提供的神经网络量化方法,对于神经网络中的任意待量化层,所述方 法包括:在待量化层的目标数据中确定多个待量化数据,各待量化数据均为目标数据的子集,目标数据为待量化层的任意一种待量化的待运算数据,待运算数据包括输入神经元、权值、偏置、梯度中的至少一种;将各待量化数据分别根据对应的量化参数进行量 化,得到与各待量化数据对应的量化数据;根据与各待量化数据对应的量化数据得到目 标数据的量化数据,以使待量化层根据目标数据的量化数据进行运算。将目标数据划分 为多个待量化数据后,各待量化数据的量化过程与运算过程可以并行执行,从而可以提 高目标数据的量化效率和运算效率,也可以提高待量化层直至提高整个神经网络的量化 效率和运算效率。
在一种可能的实现方式中,所述待量化层为卷积层,所述目标数据为输入神经元。其中,在所述待量化层的目标数据中确定多个待量化数据,可以包括:
在所述卷积层的输入神经元中,根据卷积核的维度和步长确定与卷积核对应的多个 待量化数据,所述卷积核的维度包括高度、宽度、通道数。
卷积层输入神经元的维度可以包括批数(batch,B)、通道(channel,C)、高度(height, H)和宽度(width,W)。当输入神经元的批数为多个时,各批数的输入神经元可以看作 维度为通道、高度和宽度的三维数据。各批数的输入神经元可以对应多个卷积核,各批 数的输入神经元的通道数,和与之对应的各卷积核的通道数一致。
对于任意一个批数的输入神经元,以及对于与该批数的输入神经元对应的多个卷积 核中的任意一个卷积核,可以根据该卷积核的高度、宽度和步长,将该批次的输入神经元与该卷积核对应的部分数据(子集),确定为该批次的输入神经元与该卷积核对应的多个待量化数据。
在一种可能的实现方式中,在输入神经元中确定出的各待量化数据的维度与卷积核 的维度一致。图3示出根据本公开实施例的将输入神经元按照卷积核确定待量化数据的示 意图。如图3所示,输入神经元的维度为5×5×3(H×W×C),与之对应的一个卷积核(图中 未示出)的维度为3×3×3(H×W×C)。在图3中,示出了根据卷积核确定出的待量化数据1, 图3中待量化数据1的颜色比输入神经元的颜色稍浅,待量化数据1的维度为 3×3×3(H×W×C)。图4示出根据本公开实施例的将输入神经元按照卷积核确定待量化数据 的示意图。在图4中,示出了根据卷积核确定出的待量化数据2,图4中待量化数据2的颜 色比输入神经元的颜色稍深,待量化数据2的维度为3×3×3(H×W×C)。与待量化数据1相比, 待量化数据2在W维度方向向右移动了与步长一致的1格。待量化数据1和待量化数据2的 维度与卷积核的维度一致。
可以理解的是,根据如图3和图4示出的待量化数据1和待量化数据2的确定方法,输 入神经元的其他待量化数据,可以根据卷积核的维度和步长依次得到。在此不再赘述。
可以根据卷积核的维度和步长,将输入神经元划分得到全部的待量化数据后,将各 待量化数据并行地执行量化过程。由于待量化数据的数据量小于输入神经元,对一个待量化数据进行量化的计算量,小于对输入神经元进行整体量化的计算量,因此,本实施 例中的量化方法可以提高输入神经元的量化速度,提高量化效率。也可以将输入神经元 根据卷积核的维度和步长进行划分,依次得到各待量化数据后,将得到的各待量化数据 分别与卷积核进行卷积运算。各待量化数据的量化过程和卷积运算过程可以并行执行, 本实施例中的量化方法可以提高输入神经元的量化效率和运算效率。
在一种可能的实现方式中,在输入神经元中确定出的各待量化数据的维度与卷积核 的维度也可以不一致。各待量化数据的维度可以小于卷积核的维度,且卷积核的至少一个维度为待量化数据对应维度的倍数。各待量化数据的维度也可以大于卷积核的维度, 且待量化数据的至少一个维度为卷积核对应维度的倍数。
各待量化数据的维度可以小于卷积核的维度,例如,卷积核A的维度为8×8×3时,待 量化数据A1的维度可以为4×8×3,待量化数据A2的维度可以为4×8×3,且待量化数据A1 和待量化数据A2组成的子集为与卷积核A进行卷积运算的数据。则可以将待量化数据A1和待量化数据A2的量化结果进行拼接,并根据拼接结果与卷积核A进行卷积运算。
各待量化数据的维度也可以大于卷积核的维度,例如,卷积核A的维度为8×8×3时, 待量化数据A1的维度可以为16×8×3。则可以将待量化数据A1量化结果进行拆分后,根据 拆分结果与卷积核A进行卷积运算。
在一种可能的实现方式中,在对目标数据进行量化的过程中可以采用与目标数据对 应的量化参数进行量化。而将目标数据划分为多个待量化数据后,可以采用与各待量化数据对应的量化参数进行量化。与各待量化数据对应的量化参数,可以采用预设的方式 或根据待量化数据计算的方式,无论采用何种方式确定与各待量化数据对应的量化参数, 都可以使得各待量化数据的量化参数,更加符合待量化数据自身的量化需求。例如,当 根据目标数据计算得到对应的量化参数时,可以利用目标数据中各元素的最大值和最小 值计算得到量化参数。而在根据待量化数据计算得到对应的量化参数时,可以利用待量 化数据中各元素的最大值和最小值计算得到量化参数,待量化数据的量化参数比目标数 据的量化参数能够更加贴合待量化数据的数据特征,可以使得待量化数据的量化结果更 加准确,量化精度更高。
在本实施例中,在所述卷积层的输入神经元中,根据卷积核的维度和步长确定与卷 积核对应的多个待量化数据,所述卷积核的维度包括高度、宽度、通道数。根据卷积核的维度和步长确定出的待量化数据后,对各待量化数据进行量化的计算量,小于对目标 数据进行量化的计算量,可以提高目标数据的量化效率。将各待量化数据的量化过程和 运算过程并行执行可以提高目标数据的量化效率和运算效率。将各待量化数据根据对应 的量化参数进行量化,量化参数可以更加贴合待量化数据自身的量化需求,使得待量化 数据的量化结果更加准确。
在一种可能的实现方式中,在所述待量化层的目标数据中确定多个待量化数据,包 括:
根据所述目标数据的维度,在所述待量化层的目标数据中确定多个待量化数据,所 述目标数据的维度包括批数、通道、高度、宽度。
可以按照目标数据的一个或多个维度,对目标数据进行划分后,得到多个待量化数 据。
可以按照目标数据的一个维度对目标数据进行划分,例如,可以将所述待量化层的 目标数据中一个或多个批数的数据,确定为一个待量化数据。假定目标数据B1有3个批数 的数据,若将目标数据中一个批数的数据确定为一个待量化数据,则该目标数据B可以被 划分为3个待量化数据。也可以将所述待量化层的目标数据中一个或多个通道的数据,确 定为一个待量化数据。假定目标数据B2对应于4个通道,若将目标数据中2个通道的数据确定为一个待量化数据,则该目标数据B2可以被划分为2个待量化数据,每个待量化数据对应包括两个通道的数据。也可以根据高度、宽度对目标数据进行划分,例如,假定目 标数据为输入神经元的维度为4×8×3,可以以输入神经元宽度的一半为划分依据,将输入 神经元划分为2个待量化数据,每个待量化数据的维度为4×4×3。也可以以输入神经元的 高度的一半为划分依据,将输入神经元划分为2个待量化数据,每个待量化数据的维度为 2×8×3。
还可以按照目标数据的多个维度对目标数据进行划分,例如,可以根据目标数据的 高度和宽度,对目标数据进行划分。例如,假定目标数据为输入神经元的维度为4×8×3, 可以以输入神经元宽度的一半、高度的一半为划分依据,将输入神经元划分为8个待量化 数据,每个待量化数据的维度为2×4×3。
在一种可能的实现方式中,在所述待量化层的目标数据中确定多个待量化数据,可 以包括:
根据运行所述神经网络的装置的实时处理能力,在所述待量化层的目标数据中确定 多个待量化数据,各所述待量化数据的尺寸与所述实时处理能力正相关。
运行神经网络的装置的实时处理能力可以包括:装置对目标数据进行量化的速度, 对量化后数据进行运算的速度,对目标数据进行量化和运算时装置所能处理的数据量等 表征装置处理目标数据的处理能力相关的信息。例如,可以根据对目标数据进行量化的速度和对量化后数据进行运算的速度,确定待量化数据的尺寸,以使得对待量化数据进 行量化的时间与对量化后数据进行运算的速度相同,这样可以量化和运算同步进行,可 以提高目标数据的运算效率。运行神经网络的装置的实时处理能力越强,待量化数据的 尺寸越大。
在一种可能的实现方式中,该方法还可以包括:根据各所述待量化数据和对应的数 据位宽计算得到对应的量化参数。
在该实现方式中,可以对待量化数据进行统计,根据统计结果和数据位宽确定待量 化数据对应的量化参数。量化参数可以包括点位置、缩放系数和偏移量中的一种或多种。
在一种可能的实现方式中,根据各所述待量化数据和对应的数据位宽计算得到对应 的量化参数,可以包括:
当所述量化参数不包括偏移量时,根据各所述待量化数据中的绝对值最大值Z1和对 应的数据位宽,得到各所述待量化数据的第一类点位置。其中,该绝对值最大值Z1是待量化数据中数据取绝对值后所得到的最大值。
在该实现方式中,当待量化数据为相对于原点对称的数据时,量化参数可以不包括 偏移量,假设Z1为待量化数据中元素的绝对值的最大值,待量化数据对应的数据位宽为n, A1为用数据位宽n对待量化数据进行量化后的量化数据可以表示的最大值, A1为A1需要包含Z1,且Z1要大于因此有公式(1)的约束:
处理器可以根据待量化数据中的绝对值最大值Z1和数据位宽n,计算得到第一类点位 置s1。例如,可以利用如下公式(2)计算得到待量化数据对应的第一类点位置s1:
其中,ceil为向上取整,Z1为待量化数据中的绝对值最大值,s1为第一类点位置,n为数据位宽。
在一种可能的实现方式中,根据各所述待量化数据和对应的数据位宽计算得到对应 的量化参数,可以包括:
当所述量化参数包括偏移量时,根据各所述待量化数据中的最大值、最小值和对应 的数据位宽,得到各所述待量化数据的第二类点位置s2。
在该实现方式中,可以先获取待量化数据中的最大值Zmax、最小值Zmin,进而根据最大值Zmax、最小值Zmin利用下述公式(3)进行计算,
进一步地,根据计算得到的Z2和对应的数据位宽利用下述公式(4)计算第二类点位 置s2:
在该实现方式中,由于量化时,常规情况下会将待量化数据中的最大值和最小值保 存下来,直接基于保存的待量化数据中的最大值和最小值来获取绝对值最大值,无需消耗更多的资源去对待量化数据求绝对值,节省确定统计结果的时间。
在一种可能的实现方式中,根据各所述待量化数据和对应的数据位宽计算得到对应 的量化参数,包括:
当所述量化参数不包括偏移量时,根据各所述待量化数据和对应的数据位宽得到量 化后数据的最大值;
根据各所述待量化数据中的绝对值最大值和所述量化后数据的最大值,得到各所述 待量化数据的第一类缩放系数f’。其中,第一类缩放系数f’可以包括第一缩放系数f1和第 二缩放系数f2。
其中,该第一缩放系数f1可以按照如下方式(5)进行计算:
其中,第二缩放系数f2可以按照如下公式(6)进行计算:
在一种可能的实现方式中,根据各所述待量化数据和对应的数据位宽计算得到对应 的量化参数,可以包括:
根据各所述待量化数据中的最大值和最小值,得到各所述待量化数据的偏移量。
在该实现方式中,图5示出根据本公开实施例的对称的定点数表示的示意图。如图5 所示的待量化数据的数域是以“0”为对称中心分布。Z1为待量化数据的数域中所有浮点数 的绝对值最大值,在图5中,A1为n位定点数可以表示的浮点数的最大值,浮点数A1转换为定点数是(2n-1-1)。为了避免溢出,A1需要包含Z1。在实际运算中,神经网络运算过 程中的浮点数据趋向于某个确定区间的正态分布,但是并不一定满足以“0”为对称中心的 分布,这时用定点数表示时,容易出现溢出情况。为了改善这一情况,量化参数中引入 偏移量。图6示出根据本公开实施例的引入偏移量的定点数表示的示意图。如图6所示。 待量化数据的数域不是以“0”为对称中心分布,Zmin是待量化数据的数域中所有浮点数的 最小值,Zmax是待量化数据的数域中所有浮点数的最大值,A2为用n位定点数表示的平移 后的浮点数的最大值,A2为P为Zmin~Zmax之间的中心点,将待量化数据 的数域整体偏移,使得平移后的待量化数据的数域以“0”为对称中心分布,以避免数据的 “溢出”。平移后的待量化数据的数域中的绝对值最大值为Z2。由图6可知,偏移量为“0” 点到“P”点之间的水平距离,该距离称为偏移量o。
可以根据该最小值Zmin和最大值Zmax按照如下公式(7)计算获得偏移量:
其中,o表示偏移量,Zmin表示待量化数据所有元素中的最小值,Zmax表示待量化数据所有元素中的最大值。
在一种可能的实现方式中,根据各所述待量化数据和对应的数据位宽计算得到对应 的量化参数,可以包括:
当所述量化参数包括偏移量时,根据各所述待量化数据和对应的数据位宽得到量化 后数据的最大值;
根据各所述待量化数据中的最大值、最小值和量化后数据的最大值,得到各所述待 量化数据的第二类缩放系数f”。其中,第二类缩放系数f”可以包括第三缩放系数f3和第四 缩放系数f4。
在该实现方式中,当量化参数包括偏移量时,A2为用数据位宽n对平移后的待量化数 据进行量化后的量化数据可以表示的最大值,A2为可以根据待量化数据中的Zmax、最小值Zmin进行计算得到平移后的待量化数据的数域中的绝对值最大值Z2, 进而按照如下公式(8)计算第三缩放系数f3:
进一步地,第四缩放系数f4可以按照如下公式(9)进行计算:
在对待量化数据进行量化时,所采用的量化参数不同,进行量化所使用的数据不同。
在一种可能的实现方式中,量化参数可以包括第一类点位置s1。可以利用如下的公 式(10)对待量化数据进行量化,得到量化数据Ix:
其中,Ix为量化数据,Fx为待量化数据,round为进行四舍五入的取整运算。
在一种可能的实现方式中,量化参数可以包括第一类点位置和第一缩放系数。可以 利用如下的公式(12)对待量化数据进行量化,得到量化数据Ix:
在一种可能的实现方式中,量化参数可以包括第二缩放系数。可以利用如下的公式 (14)对待量化数据进行量化,得到量化数据Ix:
在一种可能的实现方式中,量化参数可以包括偏移量。可以利用如下的公式(16)对待量化数据进行量化,得到量化数据Ix:
Ix=round(Fx-o) 公式(16)
在一种可能的实现方式中,量化参数可以包括第二类点位置和偏移量。可 以利用如下的公式(18)对待量化数据进行量化,得到量化数据Ix:
在一种可能的实现方式中,量化参数可以包括第二类缩放系数f”和偏移量o。可以利 用如下的公式(20)对待量化数据进行量化,得到量化数据Ix:
在一种可能的实现方式中,量化参数可以包括第二类点位置、第二类缩放 系数和偏移量。可以利用如下的公式(22)对待量化数据进行量化,得到量化数据Ix:
可以理解的是,也可以采用其他的取整运算方法,例如采用向上取整、向下取整、向零取整等取整运算,替换上述公式中的四舍五入的取整运算round。可以理解的是, 在数据位宽一定的情况下,根据点位置量化得到的量化数据中,小数点后的位数越多, 量化数据的量化精度越大。
在一种可能的实现方式中,上述步骤S11可以包括:
通过查找待量化数据与量化参数对应关系,确定与所述待量化层中每种待量化数据 对应的量化参数。
在一种可能的实现方式中,各待量化层中与每种待量化数据对应的量化参数,可以 是保存的预设值。可以为神经网络建立一个待量化数据与量化参数之间的对应关系,该对应关系可以包括各待量化层的每种待量化数据与量化参数对应关系,并将对应关系保存在各层可以共享访问的存储空间。也可以为神经网络建立多个待量化数据与量化参数之间的对应关系,各待量化层分别对应其中一个对应关系。可以将各层的对应关系保存 在本层独享的存储空间,也可以将各层的对应关系保存在各层可以共享访问的存储空间。
在待量化数据与量化参数对应关系中,可以包括多个待量化数据和与之对应的多个 量化参数之间的对应关系。例如,待量化数据与量化参数对应关系A中,可以包括待量化层1的神经元和权值两个待量化数据,神经元对应点位置1、缩放系数1和偏移量1三个量 化参数,权值对应点位置2和偏移量2两个量化参数。本披露对待量化数据与量化参数对 应关系的具体格式不做限定。
在本实施例中,可以通过查找待量化数据与量化参数对应关系,确定与所述待量化 层中每种待量化数据对应的量化参数。可以为各待量化层预设对应的量化参数,并通过对应关系进行存储后,供待量化层查找后使用。本实施例中量化参数的获取方式简单方便。
图7示出根据本公开实施例的神经网络量化方法的流程图。在一种可能的实现方式中, 如图7所示,该方法还可以包括步骤S14至步骤S16。
在步骤S14中,根据各所述待量化数据和各所述待量化数据对应的量化数据,确定各 所述待量化数据对应的量化误差。
可以根据待量化数据对应的量化数据与待量化数据之间的误差,确定待量化数据的 量化误差。可以利用设定的误差计算方法,例如标准差计算方法、均方根误差计算方法等,计算待量化数据的量化误差。
也可以根据量化参数,将待量化数据对应的量化数据进行反量化后得到反量化数据, 根据反量化数据与待量化数据之间的误差,按照公式(24)确定待量化数据的量化误差diffbit。
还可以根据量化间隔、量化后的数据的个数以及对应的量化前的数据按照公式(25) 确定量化误差diffbit。
其中,C为量化时对应的量化间隔,m为量化后获得的量化数据的个数,Fi为待量化对应的浮点值,其中,i为待量化数据中数据的下标。
也可以根据量化后的数据以及对应的反量化数据按照公式(26)确定量化误差diffbit。
在步骤S15中,根据各所述待量化数据对应的量化误差和误差阈值,调整各所述待量 化数据对应的数据位宽,得到各所述待量化数据对应的调整位宽。
可以根据经验值确定误差阈值,误差阈值可以用于表示对量化误差的期望值。当量 化误差大于或小于误差阈值时,可以调整待量化数对应的数据位宽,得到待量化数据对应的调整位宽。可以将数据位宽调整为更长的位宽或更短的位宽,以提高或降低量化精度。
可以根据能够接受的最大误差确定误差阈值,当量化误差大于误差阈值时,说明量 化精度不能达到预期,需要将数据位宽调整为更长的位宽。也可以根据较高的量化精度确定一个较小的误差阈值,当量化误差小于误差阈值时,说明量化精度较高,神经网络 的运行效率将受到影响,可以适当的将数据位宽调整为更短的位宽,以适当的降低量化 精度,提高神经网络的运行效率。
可以将数据位宽按照固定的位数步长进行调整,也可以根据量化误差与误差阈值之 间的差值的不同,按照可变的调整步长调整数据位宽。本公开对此不作限定。
在步骤S16中,将各所述待量化数据对应的数据位宽更新为对应的调整位宽,根据各 所述待量化数据和对应的调整位宽计算得到对应的调整量化参数,以使各所述待量化数 据根据所述对应的调整量化参数进行量化。
确定调整位宽后,可以将待量化数据对应的数据位宽更新为调整位宽。例如,待量化数据更新前的数据位宽为8位,调整位宽为12位,则更新后待量化数据对应的数据位宽为12位。可以根据调整位宽和待量化数据计算得到待量化数据对应的调整量化参数。可 以根据待量化数据对应的调整量化参数重新对待量化数据进行量化,以得到量化精度更 高或更低的量化数据,使得待量化层在量化精度和处理效率之间达到平衡。
在神经网络的推理、训练和微调过程中,各层之间的待量化数据可以认为具有一定 的关联性。例如,各层的待量化数据之间的均值之间的差小于设定的均值阈值,且各层的待量化数据之间的最大值之间的差值也小于设定的差值阈值时,可以将待量化层的调整量化参数作为后续的一个或多个层的调整量化参数,用于对待量化层后续的一个或多个层的待量化数据进行量化。也可以在神经网络的训练和微调过程中,将待量化层在当 前迭代得到的调整量化参数,用于在后续的迭代中对待量化层进行量化。
在一种可能的实现方式中,所述方法还包括:
在所述待量化层之后的一层或多层采用所述待量化层的量化参数。
神经网络根据调整量化参数进行量化,可以包括只在待量化层利用调整量化参数对 待量化数据重新进行量化,并将重新得到的量化数据用于待量化层的运算。也可以包括在待量化层不使用调整量化参数重新对待量化数据进行量化,而在待量化层后续的一个或多个层使用调整量化参数进行量化,和/或后续的迭代中在待量化层使用调整量化参数进行量化。还可以包括在待量化层使用调整量化参数重新进行量化,并将重新得到的量 化数据用于待量化层的运算,并且在待量化层后续的一个或多个层使用调整量化参数进 行量化,和/或后续的迭代中在待量化层使用调整量化参数进行量化。本公开对此不作限 定。
在本实施例中,根据待量化数据和待量化数据对应的量化数据之间的误差调整数据 位宽,并根据调整后的数据位宽计算得到调整量化参数。通过设置不同的误差阈值可以得到不同的调整量化参数,达到提高量化精度或提高运行效率等不同的量化需求。根据 待量化数据和待量化数据的量化数据计算得到的调整量化参数,也能够更加符合待量化 数据自身的数据特征,达到更加符合待量化数据自身需求的量化结果,在量化精度和处 理效率之间达到更好的平衡。
在一种可能的实现方式中,步骤S15可以包括:
当所述量化误差大于第一误差阈值时,增加所述对应的数据位宽,得到所述对应调 整位宽。
可以根据能够接受的最大的量化误差,确定第一误差阈值。可以将量化误差与第一 误差阈值进行比较。当量化误差大于第一误差阈值时,可以认为量化误差已经不可接受。 需要提高量化精度,可以通过增加待量化数据对应的数据位宽的方式,提高待量化数据 的量化精度。
可以将待量化数据对应的数据位宽按照固定的调整步长增加,得到调整位宽。固定 的调整步长可以为N位,N为正整数。每次调整数据位宽可以增加N位。每次增加后的 数据位宽=原数据位宽+N位。
可以将待量化数据对应的数据位宽按照可变的调整步长增加,得到调整位宽。例如, 当量化误差与误差阈值之间的差值大于第一阈值时,可以按照调整步长M1调整数据位宽,当量化误差与误差阈值之间的差值小于第一阈值时,可以按照调整步长M2调整数 据位宽,其中,第一阈值大于第二阈值,M1大于M2。可以根据需求确定各可变的调整 步长。本公开对数据位宽的调整步长及调整步长是否可变不作限定。
可以将待量化数据按照调整位宽计算得到调整后的量化参数。利用调整后的量化参 数对待量化数据进行重新量化后得到的量化数据,比利用调整前的量化参数量化得到的 量化数据的量化精度更高。
在一种可能的实现方式中,该方法还可以包括:
根据各所述待量化数据和对应的调整位宽计算各所述待量化数据调整后的量化误差;
根据所述调整后的量化误差和所述第一误差阈值继续增加所述对应的调整位宽,直 至所述调整后的量化误差小于或等于所述第一误差阈值。
根据量化误差增加待量化数据对应的数据位宽时,调整一次位宽后得到调整位宽, 根据调整位宽计算得到调整后的量化参数,根据调整后的量化参数量化待量化数据得到 调整后的量化数据,再根据调整后的量化数据与待量化数据计算得到待量化数据调整后 的量化误差,调整后的量化误差可能依然大于第一误差阈值,即根据调整一次的数据位宽可能不能满足调整目的。当调整后的量化误差依然大于第一误差阈值时,可以继续对 调整后的数据位宽进行调整,即多次增加待量化数据对应的数据位宽,直至根据最终得 到的调整位宽和待量化数据得到的调整后的量化误差小于第一误差阈值。
多次增加的调整步长可以是固定的调整步长,也可以是可变的调整步长。例如,最终的数据位宽=原数据位宽+B*N位,其中N为每次增加的固定的调整步长,B为数据位宽 的增加次数。最终的数据位宽=原数据位宽+M1+M2+…+Mm,其中,M1、M2…Mm为每 次增加的可变的调整步长。
在本实施例中,当量化误差大于第一误差阈值时,增加所述待量化数据对应的数据 位宽,得到所述待量化数据对应的调整位宽。可以通过设置第一误差阈值和调整步长增加数据位宽,以使调整后的数据位宽能够满足量化的需求。当一次调整不能满足调整需 求时,还可以对数据位宽进行多次调整。第一误差阈值和调整步长的设置,使得量化参 数可以按照量化需求进行灵活调整,满足不同的量化需求,使得量化精度可根据自身数 据特征进行自适应调整。
在一种可能的实现方式中,步骤S15可以包括:
当所述量化误差小于第二误差阈值时,增加所述对应的数据位宽,得到所述对应调 整位宽,所述第二误差阈值小于所述第一误差阈值
可以根据能够接受的量化误差和期望的神经网络的运行效率,确定第二误差阈值。 可以将量化误差与第二误差阈值进行比较。当量化误差小于第二误差阈值时,可以认为 量化误差超出预期,但运行效率过低已经不可接受。可以降低量化精度以提高神经网络的运行效率,可以通过减少待量化数据对应的数据位宽的方式,降低待量化数据的量化 精度。
可以将待量化数据对应的数据位宽按照固定的调整步长减少,得到调整位宽。固定 的调整步长可以为N位,N为正整数。每次调整数据位宽可以减少N位。增加后的数据位宽=原数据位宽-N位。
可以将待量化数据对应的数据位宽按照可变的调整步长减少,得到调整位宽。例如, 当量化误差与误差阈值之间的差值大于第一阈值时,可以按照调整步长M1调整数据位宽, 当量化误差与误差阈值之间的差值小于第一阈值时,可以按照调整步长M2调整数据位宽, 其中,第一阈值大于第二阈值,M1大于M2。可以根据需求确定各可变的调整步长。本 披露对数据位宽的调整步长及调整步长是否可变不作限定。
可以将待量化数据按照调整位宽计算得到调整后的量化参数,利用调整后的量化参 数对待量化数据进行重新量化后得到的量化数据,比利用调整前的量化参数量化得到的 量化数据的量化精度更低。
在一种可能的实现方式中,该方法还可以包括:
根据所述调整位宽和所述待量化数据计算所述待量化数据调整后的量化误差;
根据所述调整后的量化误差和所述第二误差阈值继续减少所述调整位宽,直至根据 调整位宽和所述待量化数据计算得到的调整后的量化误差大于或等于所述第二误差阈值。
根据量化误差增加待量化数据对应的数据位宽时,调整一次位宽后得到调整位宽, 根据调整位宽计算得到调整后的量化参数,根据调整后的量化参数量化待量化数据得到 调整后的量化数据,再根据调整后的量化数据与待量化数据计算得到待量化数据调整后 的量化误差,调整后的量化误差可能依然小于第二误差阈值,即根据调整一次的数据位宽可能不能满足调整目的。当调整后的量化误差依然小于第二误差阈值时,可以继续对 调整后的数据位宽进行调整,即多次减少待量化数据对应的数据位宽,直至根据最终得 到的调整位宽和待量化数据得到的调整后的量化误差大于第二误差阈值。
多次减少的调整步长可以是固定的调整步长,也可以是可变的调整步长。例如,最终的数据位宽=原数据位宽-B*N位,其中N为每次增加的固定的调整步长,B为数据位宽 的增加次数。最终的数据位宽=原数据位宽-M1-M2-…-Mm,其中,M1、M2…Mm为每次 减少的可变的调整步长。
在本实施例中,当量化误差小于第二误差阈值时,减少所述待量化数据对应的数据 位宽,得到所述待量化数据对应的调整位宽。可以通过设置第二误差阈值和调整步长减少数据位宽,以使调整后的数据位宽能够满足量化的需求。当一次调整不能满足调整需 求时,还可以对数据位宽进行多次调整。第二误差阈值和调整步长的设置,使得量化参 数可以按照量化需求进行灵活的自适应调整,满足不同的量化需求,使得量化精度可调, 在量化精度和神经网络的运行效率之间达到平衡。
在一种可能的实现方式中,所述方法还包括:
当所述量化误差大于第一误差阈值时,增加所述待量化数据对应的数据位宽,以及 当所述量化误差小于第二误差阈值时,减少所述待量化数据对应的数据位宽,得到所述待量化数据对应的调整位宽。
也可以同时设置两个误差阈值,其中,第一误差阈值用于表示量化精度过低,可以增加数据位宽的位数,第二误差阈值用于表示量化精度过高,可以减少数据位宽的位数。第一误差阈值大于第二误差阈值,可以将待量化数据的量化误差同时与两个误差阈值进行比较,当量化误差大于第一误差阈值时,增加数据位宽的位数,当量化误差小于第二 误差阈值时,减少数据位宽的位数。当量化误差位于第一误差阈值和第二误差阈值之间 时,数据位宽可以保持不变。
在本实施例中,通过将量化误差与第一误差阈值和第二误差阈值同时进行比较,可 以根据比较结果增加或减少数据位宽,可以利用第一误差阈值和第二误差阈值更加灵活 的调整数据位宽。使得数据位宽的调整结果更加符合量化需求。
在一种可能的实现方式中,在所述神经网络运算的微调阶段和/或训练阶段,该方法 还可以包括:
获取当前迭代以及历史迭代中待量化数据的数据变动幅度,所述历史迭代为所述当 前迭代之前的迭代;
根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代间隔, 以使所述待量化层根据所述目标迭代间隔更新所述待量化数据的量化参数,所述目标迭 代间隔包括至少一次迭代。
在神经网络运算的微调阶段和/或训练阶段包括多次迭代。神经网络中的各待量化层, 在进行一次正向运算和一次反向运算,并对待量化层的权值进行更新后,完成一次迭代。 在多次迭代中,待量化层中的待量化数据和/或待量化数据对应的量化数据的数据变动幅 度,可以用于衡量在不同迭代中的待量化数据和/或量化数据是否可采用相同的量化参数 进行量化。若当前迭代以及历史迭代中待量化数据的数据变动幅度较小,例如小于设定 的幅度变动阈值时,可以在数据变动幅度较小的多个迭代中采用相同的量化参数。
可以通过提取预存的量化参数的方式,确定与待量化数据对应的量化参数。在不同 的迭代中对待量化数据进行量化时,需要在各迭代提取与待量化数据对应的量化参数。若多个迭代的待量化数据和/或待量化数据对应的量化数据的数据变动幅度较小,可将在数据变动幅度较小的多个迭代中采用的相同的量化参数进行暂存,各迭代在进行量化时可以利用暂存的量化参数进行量化运算,不用在每次迭代提取量化参数。
也可以根据待量化数据和数据位宽计算得到量化参数。在不同的迭代中对待量化数 据进行量化时,需要在各迭代分别计算量化参数。若多个迭代的待量化数据和/或待量化 数据对应的量化数据的数据变动幅度较小,可在数据变动幅度较小的多个迭代中采用的 相同的量化参数,则各迭代均可以直接使用其中第一个迭代计算得到的量化参数,而不是每次迭代计算量化参数。
可以理解的是,当待量化数据为权值时,各迭代之间的权值在不断更新,若多个迭代的权值的数据变动幅度较小,或多个迭代的权值对应的量化数据的数据变动幅度较小,可以在多个迭代中利用相同的量化参数对权值进行量化。
可以根据待量化数据的数据变动幅度确定目标迭代间隔,目标迭代间隔包括至少一 次迭代,可以在目标迭代间隔内的各迭代使用相同的量化参数,即在目标迭代间隔内的各迭代不再更新待量化数据的量化参数。神经网络根据目标迭代间隔更新待量化数据的量化参数,包括在目标迭代间隔内的迭代,不获取预设的量化参数或不计算量化参数, 即在目标迭代间隔内的迭代不更新量化参数。而在目标迭代间隔外的迭代,再获取预设 的量化参数或计算量化参数,即在目标迭代间隔外的迭代更新量化参数。
可以理解的是,多个迭代之间的待量化数据或待量化数据的量化数据的数据变动幅 度越小,确定出的目标迭代间隔包括的迭代次数越多。可以根据计算得到的数据变动幅度,查找预设的数据变动幅度与迭代间隔的对应关系,确定与计算得到的数据变动幅度 对应的目标迭代间隔。可以根据需求预设数据变动幅度与迭代间隔的对应关系。也可以 根据计算得到的数据变动幅度,利用设定的计算方法计算得到目标迭代间隔。本披露不 限定数据变动幅度的计算方式,以及目标迭代间隔的获取方式。
在本实施例中,在神经网络运算的微调阶段和/或训练阶段,获取当前迭代以及历史 迭代中待量化数据的数据变动幅度,根据所述待量化数据的数据变动幅度,确定待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。可以根据多个迭代中待量化数据或待量化数据对应的量化数据的数据变动幅度,确定目标迭代间隔。神经网络可以根据目标迭代间隔确定是否更新量化参数。 由于目标迭代间隔所包括的多个迭代的数据变动幅度较小,目标迭代间隔内的迭代不更 新量化参数也可以保证量化精度。而目标迭代间隔内的多个迭代不更新量化参数,可以 减少量化参数的提取次数或计算次数,从而提高神经网络的运算效率。
在一种可能的实现方式中,该方法还包括:
根据所述待量化数据在所述当前迭代的数据位宽,确定所述待量化数据在所述目标 迭代间隔内的迭代对应的数据位宽,以使所述神经网络根据所述待量化数据在所述目标 迭代间隔内的迭代对应的数据位宽,确定量化参数。
如本公开上述实施例所述,待量化数据的量化参数可以预设,也可以根据待量化数 据对应的数据位宽计算得到。而不同待量化层中待量化数据对应的数据位宽,或相同待量化层中待量化数据在不同迭代中对应的数据位宽,可以根据本公开上述实施例中的方式进行自适应调整。
当待量化数据的数据位宽不可自适应调整,为预设的数据位宽时,可以根据待量化 数据在当前迭代的预设的数据位宽,确定待量化数据在目标迭代间隔内的迭代对应的数 据位宽。在目标迭代间隔内的各迭代可不使用自身的预设值。
当待量化数据的数据位宽可自适应调整时,可以根据待量化数据在当前迭代对应的 数据位宽,确定待量化数据在目标迭代间隔内的迭代对应的数据位宽。在数据位宽可自适应调整时,数据位宽可进行一次调整或多次调整。可以将待量化数据在当前迭代进行 自适应调整后的数据位宽,作为目标迭代间隔内的各迭代对应的数据位宽,在目标迭代 间隔内的各迭代不再对数据位宽进行自适应调整(更新)。待量化数据在当前迭代可以使 用自适应调整后的数据位宽,也可以使用自适应调整前的数据位宽,本披露对此不作限 定。
在目标迭代间隔以外的其他迭代,由于待量化数据的数据变动幅度不满足设定条件, 可以根据本公开上述的方法对数据位宽进行自适应调整,得到更加符合当前迭代的待量 化数据的数据位宽,也可使用本公开中的目标迭代间隔的计算方法,计算得到新的目标迭代间隔并使用,从而在保证目标迭代间隔以外的迭代的量化精度的同时,提高神经网 络的运行效率。
在目标迭代间隔内的各迭代的数据位宽相同,各迭代可以根据相同的数据位宽各自 计算得到对应的量化参数。量化参数可以包括点位置、缩放系数和偏移量中的至少一种。 可以在目标迭代间隔内的各迭代,根据相同的数据位宽分别计算得到量化参数。量化参 数包括点位置(包括第一类点位置、第二类点位置)、缩放系数(包括第一类缩放系数和第二类缩放系数)和偏移量时,在目标迭代间隔内的各迭代,可利用相同的数据位宽, 分别计算各自对应的点位置、缩放系数和偏移量。
在根据当前迭代的数据位宽,确定目标迭代间隔内各迭代的数据位宽的同时,可以 根据当前迭代的量化参数,确定目标迭代间隔内各迭代的对应的量化参数。目标迭代间隔内各迭代的量化参数,也不再重新根据相同的数据位宽计算得到,可以进一步提高神 经网络的运算效率。可以根据当前迭代的全部量化参数或部分量化参数,确定目标迭代 间隔内各迭代的对应的量化参数。当根据当前迭代的部分量化参数,确定目标迭代间隔 内各迭代的对应的量化参数时,剩余部分的量化参数,在目标迭代间隔内各迭代仍需计 算。
例如,量化参数包括第二类点位置、第二类缩放系数和偏移量。可以根据当前迭代的数据位宽和第二类点位置,确定目标迭代间隔内各迭代的数据位宽和第二类点位置。 则目标迭代间隔内各迭代的第二类缩放系数和偏移量需要根据相同的数据位宽计算得到。也可以根据当前迭代的数据位宽、第二类点位置、第二类缩放系数和偏移量,确定目标 迭代间隔内各迭代的数据位宽、第二类点位置、第二类缩放系数和偏移量,则目标迭代 间隔内各迭代的各量化参数均不需要计算得到。
在本实施例中,根据待量化数据在当前迭代对应的数据位宽,确定待量化数据在目 标迭代间隔内的迭代对应的数据位宽,以使神经网络根据待量化数据在目标迭代间隔内 的迭代对应的数据位宽,确定量化参数。在目标迭代间隔内的各迭代的数据位宽,根据当前迭代的数据位宽确定,由于目标迭代间隔内各迭代的待量化数据的数据变化幅度满足设定的条件,利用相同的数据位宽计算得到的量化参数,可以保证目标迭代间隔内的 各迭代的量化精度。目标迭代间隔内各迭代使用相同的数据位宽,也可以提高神经网络 的运算效率。在对神经网络进行量化后运算结果的准确率和神经网络的运算效率之间, 达到平衡。
在一种可能的实现方式中,该方法还可以包括:根据所述待量化数据在所述当前迭 代对应的点位置,确定所述待量化数据在所述目标迭代间隔内的迭代对应的点位置,所述点位置包括第一类点位置和/或第二类点位置。
其中,根据所述待量化数据在所述当前迭代对应的第一类点位置,确定所述待量化 数据在所述目标迭代间隔内的迭代对应的第一类点位置。根据所述待量化数据在所述当 前迭代对应的第二类点位置,确定所述待量化数据在所述目标迭代间隔内的迭代对应的 第二类点位置。
在量化参数中,相对于缩放系数和偏移量,不同的点位置对相同待量化数据的量化 结果产生的影响较大。可以根据待量化数据在当前迭代对应的点位置,确定目标迭代间隔内的迭代对应的点位置。当数据位宽不可自适应调整时,可以将待量化数据在当前迭 代预设的点位置,作为待量化数据在目标迭代间隔内各迭代对应的点位置,也可以将待 量化数据在当前迭代根据预设的数据位宽计算得到的点位置,作为待量化数据在目标迭 代间隔内各迭代对应的点位置。当数据位宽可自适应调整时,可以将待量化数据在当前 迭代调整后的点位置,作为待量化数据在目标迭代间隔内各迭代对应的点位置。
根据所述待量化数据在所述当前迭代对应的点位置,确定所述待量化数据在所述目 标迭代间隔内的迭代对应的点位置的同时,也可以根据待量化数据在当前迭代对应的缩 放系数,确定所述待量化数据在所述目标迭代间隔内的迭代对应的缩放系数,和/或根据 待量化数据在当前迭代对应的偏移量,确定所述待量化数据在所述目标迭代间隔内的迭 代对应的偏移量。
根据所述待量化数据在所述当前迭代对应的点位置,确定所述待量化数据在所述目 标迭代间隔内的迭代对应的点位置的同时,还可以根据待量化数据在当前迭代对应的数 据位宽,确定所述待量化数据在所述目标迭代间隔内的迭代对应的数据位宽,其中,待量化数据在当前迭代对应的数据位宽,可以是当前迭代预设的数据位宽或自适应调整后的数据位宽。
在本实施例中,根据待量化数据在当前迭代对应的点位置,确定待量化数据在目标 迭代间隔内的迭代对应的点位置。在目标迭代间隔内的各迭代的点位置,根据当前迭代的点位置确定,由于目标迭代间隔内各迭代的待量化数据的数据变化幅度满足设定的条件,利用相同的点位置,可以保证目标迭代间隔内的各迭代的量化精度。目标迭代间隔 内各迭代使用相同的点位置,也可以提高神经网络的运算效率。在对神经网络进行量化 后运算结果的准确率和神经网络的运算效率之间,达到平衡。
在一种可能的实现方式中,获取当前迭代以及历史迭代中待量化数据的数据变动幅 度,可以包括:
根据待量化数据在当前迭代的点位置,和根据历史迭代间隔确定的与所述当前迭代 对应的历史迭代的点位置,计算待量化数据对应各迭代间隔的点位置的滑动平均值,所述点位置包括第一类点位置和/或第二类点位置;
根据所述待量化数据在当前迭代的点位置的第一滑动平均值,以及在上一迭代间隔 对应迭代的点位置的第二滑动平均值,得到第一数据变动幅度;
其中,根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代 间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数,可以包括:
根据所述第一数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述 神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。
其中,根据待量化数据在当前迭代的第一类点位置和根据历史迭代间隔确定的与所 述当前迭代对应的历史迭代的第一类点位置,计算待量化数据对应各迭代间隔的第一类 点位置的滑动平均值;根据所述待量化数据在当前迭代的第一类点位置的第一滑动平均 值,以及在上一迭代间隔对应迭代的第一类点位置的第二滑动平均值,得到所述待量化数据变动幅度。或者,根据待量化数据在当前迭代的第二类点位置和根据历史迭代间隔 确定的与所述当前迭代对应的历史迭代的第二类点位置,计算待量化数据对应各迭代间 隔的第二类点位置的滑动平均值;根据所述待量化数据在当前迭代的第二类点位置的第 一滑动平均值,以及在上一迭代间隔对应迭代的第二类点位置的第二滑动平均值,得到 所述待量化数据变动幅度。
在一种可能的实现方式中,根据历史迭代间隔确定的与所述当前迭代对应的历史迭 代,可以为计算目标迭代间隔的历史迭代。当前迭代与对应的目标迭代间隔之间的对应关系可以包括:
可以从当前迭代开始计数目标迭代间隔,并在当前迭代对应的目标迭代间隔结束后 的下一个迭代开始重新计算目标迭代间隔。例如,当前迭代为第100代,目标迭代间隔为3,目标迭代间隔内的迭代包括:第100代、第101代和第102代,可以在第103代计 算与第103代对应的目标迭代间隔,并以103代为新计算得到当目标迭代间隔内的第一 个迭代。此时,当前迭代为103代时,根据历史迭代间隔确定的与所述当前迭代对应的 历史迭代为100代。
可以从当前迭代的下一个迭代开始计数目标迭代间隔,并在目标迭代间隔内的最后 一个迭代开始重新计算目标迭代间隔。例如,当前迭代为第100代,目标迭代间隔为3,目标迭代间隔内的迭代包括:第101代、第102代和第103代,可以在第103代计算与 第103代对应的目标迭代间隔,并以104代为新计算得到当目标迭代间隔内的第一个迭 代。此时,当前迭代为103代时,根据历史迭代间隔确定的与所述当前迭代对应的历史 迭代为100代。
可以从当前迭代的下一个迭代开始计数目标迭代间隔,并在目标迭代间隔结束后的 下一个迭代开始重新计算目标迭代间隔。例如,当前迭代为第100代,目标迭代间隔为3,目标迭代间隔内的迭代包括:第101代、第102代和第103代,可以在第104代计算与 第104代对应的目标迭代间隔,并以105代为新计算得到当目标迭代间隔内的第一个迭 代。此时,当前迭代为104代时,根据历史迭代间隔确定的与所述当前迭代对应的历史 迭代为100代。
可以根据需求确定当前迭代以及目标迭代间隔之间的其他的对应关系,例如可以从 当前迭代之后的第N个迭代开始计数目标迭代间隔,N大于1,本披露对此不作限定。
可以理解的是,计算得到的待量化数据对应各迭代间隔的点位置的滑动平均值,包 括待量化数据在当前迭代的点位置的第一滑动平均值,和待量化数据在上一迭代间隔对 应迭代的点位置的第二滑动平均值。可以利用公式(27)计算当前迭代对应点位置的第一滑动平均值m(t):
m(t)←α×s(t)+(1-α)×m(t-1) 公式(27)
其中,t为当前迭代,t-1为根据上一迭代间隔确定的历史迭代,m(t-1)为根据上一迭 代间隔确定的历史迭代的第二滑动平均值。s(t)为当前迭代的点位置,可以为第一类点位 置或第二类点位置。α为第一参数。第一参数可以为超参数。
在本实施例中,根据待量化数据在当前迭代的点位置,和根据历史迭代间隔确定的 与所述当前迭代对应的历史迭代的点位置,计算待量化数据对应各迭代间隔的点位置的 滑动平均值;根据待量化数据在当前迭代的点位置的第一滑动平均值,以及在上一迭代间隔对应迭代的点位置的第二滑动平均值,得到第一数据变动幅度。根据第一数据变动 幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代 间隔更新所述待量化数据的量化参数。由于第一数据变动幅度可以用于衡量点位置的变 化趋势,使得目标迭代间隔可以跟随待量化数据点位置的变化趋势而变化,也使得计算 得到的各目标迭代间隔的大小可以根据待量化数据点位置的变化趋势而变化。由于量化 参数根据目标迭代间隔确定,也就使得根据量化参数进行量化得到的量化数据,能够更 加符合待量化数据的点位置的变动趋势,在保证量化精度的同时,提高神经网络的运行 效率。
在一种可能的实现方式中,所述根据所述待量化数据在当前迭代的点位置的第一滑 动平均值,以及在上一迭代间隔对应迭代的点位置的第二滑动平均值,得到第一数据变动幅度,可以包括:
计算所述第一滑动平均值和所述第二滑动平均值的差值;
将所述差值的绝对值确定为第一数据变动幅度。
可以利用公式(28)计算第一数据变动幅度diffupdate 1:
diffupdate 1=|m(t)-m(t-1)|=α|s(t)-m(t-1)| 公式(28)
可以根据第一数据变动幅度,确定待量化数据对应的目标迭代间隔,以使神经网络 根据目标迭代间隔更新所述待量化数据的量化参数。可以根据公式(29)计算得到目标迭代间隔I:
其中,β为第二参数,γ为第三参数。第二参数和第三参数可以为超参数。
可以理解的是,第一数据变动幅度可以用于衡量点位置的变化趋势,第一数据变动 幅度越大,说明量化数据的数值范围变化剧烈,在更新量化参数时需要间隔更短的目标迭代间隔I。
在本实施例中,计算所述第一滑动平均值和所述第二滑动平均值的差值;将差值的 绝对值确定为第一数据变动幅度。根据滑动平均值之间的差值可以得到精确的第一数据 变动幅度。
在一种可能的实现方式中,该方法还可以包括:根据在当前迭代所述待量化数据和 所述待量化数据对应的量化数据,得到第二数据变动幅度;
其中,根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代 间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数,可以包括:
根据所述待量化数据的第一数据变动幅度和所述第二数据变动幅度,确定所述待量 化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化 数据的量化参数。
可以根据在当前迭代所述待量化数据和所述待量化数据对应的量化数据,得到第二 数据变动幅度。也可以根据在当前迭代所述待量化数据和所述待量化数据对应的反量化 数据,得到第二数据变动幅度。
同样的,可以根据公式(30)计算得到在当前迭代中,所述待量化数据和所述待量化数据对应的反量化数据之间的第二数据变动幅度diffbit。也可以利用其它误差的计算方法,计算待量化数据和反量化数据之间的第二数据变动幅度diffbit。本公开对此不作限定。
其中,zi为待量化数据,zi (n)为待量化数据对应的反量化数据。可以理解的是,第二数据变动幅度可以用于衡量待量化数据对应的数据位宽的变化趋势,第二数据变动幅度越大,待量化数据越有可能需要更新对应的数据位宽,需要间隔更短的迭代进行更新, 则第二数据变动幅度越大,需要目标迭代间隔更小。
在本实施例中,根据在当前迭代所述待量化数据和所述待量化数据对应的量化数据, 得到第二数据变动幅度。根据所述待量化数据的第一数据变动幅度和所述第二数据变动 幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。第二数据变动幅度可以用于衡量数据位宽的变动需求,则根据第一数据变动幅度和第二数据变动幅度计算得到的目标迭代间隔,可以同 时跟踪点位置和数据位宽的变动,目标迭代间隔也可以更加符合待量化数据自身的数据 量化需求。
在一种可能的实现方式中,根据在当前迭代所述待量化数据和所述待量化数据对应 的量化数据,得到第二数据变动幅度,可以包括:
计算在当前迭代所述待量化数据和所述待量化数据对应的量化数据之间的误差;
将所述误差的平方确定为所述第二数据变动幅度。
可以利用公式(31)计算得到第二数据变动幅度diffupdate 2:
diffupdate 2=δ*diffbit 2 公式(31)
其中,δ为第四参数,第四参数可以为超参数。
可以理解的是,利用不同的数据位宽可以得到不同的量化参数,进而得到不同的量 化数据,产生不同的第二数据变动幅度。第二数据变动幅度可以用于衡量数据位宽的变化趋势,第二数据变动幅度越大,说明需要更短的目标迭代间隔来更加频繁的更新数据 位宽,即目标迭代间隔需要更小。
在一种可能的实现方式中,根据所述待量化数据的第一数据变动幅度和所述第二数 据变动幅度,确定所述待量化数据对应的目标迭代间隔,可以包括:
根据所述第一数据变动幅度和所述第二数据变动幅度中的最大值,确定所述待量化 数据对应的目标迭代间隔。
可以根据公式(32)计算得到目标迭代间隔:
其中,β为第二参数,γ为第三参数。第二参数和第三参数可以为超参数。
可以理解的是,利用第一数据变动幅度和第二数据变动幅度得到的目标迭代间隔, 可以同时衡量数据位宽和点位置的变化趋势,当两者中的其一的变化趋势较大时,便可 以使得目标迭代间隔产生相应的变化。目标迭代间隔可以同时追踪数据位宽和点位置的 变化并做出相应的调整。使得根据目标迭代间隔更新的量化参数能够更加符合目标数据 的变动趋势,最终使得根据量化参数得到的量化数据能够更加符合量化需求。
在一种可能的实现方式中,获取当前迭代以及历史迭代中待量化数据的数据变动幅 度,可以包括:
在当前迭代位于更新周期以外时,获取当前迭代以及历史迭代中待量化数据的数据 变动幅度,所述更新周期包括至少一个迭代。
在神经网络运算的训练过程和/或微调过程中,在训练开始或微调开始的多个迭代中, 待量化数据的变化幅度较大。若在训练开始或微调开始的多个迭代中计算目标迭代间隔, 则计算得到的目标迭代间隔可能会失去其使用的意义。可以根据预设更新周期,在更新 周期以内的各迭代,不计算目标迭代间隔,也不适用目标迭代间隔使得多个迭代使用相 同的数据位宽或点位置。
当迭代进行至更新周期以外时,即当前迭代位于更新周期以外时,获取当前迭代以 及历史迭代中待量化数据的数据变动幅度,并根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。例如,预设更新周期为100代,则自第1代开始至第100 代的迭代中,不计算目标迭代间隔。当迭代进行至101代,即当前迭代为101代时,当 前迭代位于更新周期以外,此时,可以根据第101代以及第1代至第100代的迭代中待 量化数据的数据变动幅度,确定第101代的待量化数据对应的目标迭代间隔,并在第101 代或与第101间隔预设代数的迭代中,使用计算得到的目标迭代间隔。
可以自预设的代数开始计数更新周期,例如可以自第一代开始计数更新周期中多个 迭代,也可以自第N代开始计数更新周期中的多个迭代,本公开对此不作限定。
在本实施例中,当迭代进行至更新周期以外时计算并使用目标迭代间隔。可以避免 在神经网络运算的训练过程或微调过程的初期,由于待量化数据的变动幅度较大引起的 目标迭代间隔使用意义不大的问题,可以在使用目标迭代间隔的情况下,进一步提高神经网络的运行效率。
在一种可能的实现方式中,该方法还可以包括:
在当前迭代位于预设周期内时,根据当前迭代、在所述预设周期的下一周期中与所 述当前迭代对应的迭代以及当前迭代对应的迭代间隔,确定周期间隔;
根据所述待量化数据在当前迭代对应的数据位宽,确定在所述周期间隔内的迭代中 所述待量化数据的数据位宽;或
根据所述待量化数据在当前迭代对应的点位置,确定在所述周期间隔内的迭代中所 述待量化数据的点位置。
在神经网络运算的训练过程或微调过程中,可以包括多个周期。各周期可以包括多 个迭代。用于神经网络运算的数据被完整的运算一遍为一个周期。在训练过程中,随着迭代的进行,神经网络的权值变化趋于稳定,当训练稳定后,神经元、权值、偏置和梯 度等待量化数据均趋于稳定。待量化数据趋于稳定后,待量化数据的数据位宽和量化参 数也趋于稳定。同理,在微调过程中,微调稳定后,待量化数据的数据位宽和量化参数 也趋于稳定。
因此,可以根据训练稳定或微调稳定的周期确定预设周期。可以将训练稳定或微调 稳定所在周期以后的周期,确定为预设周期。例如训练稳定的周期为第M个周期,则可以将第M个周期以后的周期作为预设周期。在预设周期内,可以每间隔一个周期计算一 个目标迭代间隔,并根据计算得到的目标迭代间隔调整一次数据位宽或量化参数,以减 少数据位宽或量化参数的更新次数,提高神经网络的运行效率。
例如,预设周期为第M个周期以后的周期。在第M+1个周期中,根据第M个周期中的第P个迭代计算得到的目标迭代间隔,截止至第M+1个周期中的第Q个迭代。根据第M+1 个周期中的第Qm+1个迭代计算得到与之对应的目标迭代间隔Im+1。在第M+2个周期中,与 第M+1个周期中的第Qm+1个迭代对应的迭代为第Qm+2个迭代。在自第M+1个周期中的第 Qm+1个迭代开始,直至第M+2个周期中第Qm+2+Im+1个迭代为止,为周期间隔。在周期间 隔内的各迭代,均采用第M+1个周期中的第Qm+1个迭代确定的数据位宽或点位置等量化 参数。
在本实施例中,可以设置周期间隔,在神经网络运算的训练或微调达到稳定后,根据周期间隔,每周期更新一次数据位宽或点位置等量化参数。周期间隔可以在训练稳定 或微调稳定后,减少数据位宽或点位置的更新次数,在保证量化精度的同时,提高神经 网络的运行效率。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制, 因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也 应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定 是本公开所必须的。
进一步需要说明的是,虽然图2、图7的流程图中的各个步骤按照箭头的指示依次显 示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明, 这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、图7中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺 序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一 部分轮流或者交替地执行。
本公开实施例还提供了一种非易失性计算机可读存储介质,其上存储有计算机程序 指令,计算机程序指令被处理器执行时实现上述神经网络的数据量化处理方法。
图8示出根据本公开一实施例的神经网络量化装置的框图。如图8所示,该装置应用 于如图1所示的处理器100,该装置包括数据确定模块61、数据量化模块62和数据运算模块63。其中,某一个处理单元101中设置有数据确定模块61、数据量化模块62和数据运算 模块63。或者,数据确定模块61、数据量化模块62和数据运算模块63分别设置在不同的 处理单元101中。存储单元102用于存储待量化数据、量化参数、数据位宽等与数据确定 模块61、数据量化模块62和数据运算模块63的运行相关的数据。
数据确定模块61,在所述待量化层的目标数据中确定多个待量化数据,各所述待量 化数据均为所述目标数据的子集,所述目标数据为所述待量化层的任意一种待量化的待 运算数据,所述待运算数据包括输入神经元、权值、偏置、梯度中的至少一种;
数据量化模块62,将各所述待量化数据分别根据对应的量化参数进行量化,得到与 各所述待量化数据对应的量化数据;
数据运算模块63,根据与各所述待量化数据对应的量化数据得到所述目标数据的量 化结果,以使所述待量化层根据所述目标数据的量化结果进行运算。
在一种可能的实现方式中,所述待量化层为卷积层,所述目标数据为输入神经元,所述数据确定模块,可以包括:
第一确定子模块,在所述卷积层的输入神经元中,根据卷积核的维度和步长确定与 卷积核对应的多个待量化数据,所述卷积核的维度包括高度、宽度、通道数。
在一种可能的实现方式中,所述数据确定模块,包括:
第二确定子模块,根据所述目标数据的维度,在所述待量化层的目标数据中确定多 个待量化数据,所述目标数据的维度包括批数、通道、高度、宽度。
在一种可能的实现方式中,所述第二确定子模块,包括:
基于批数确定子模块,将所述待量化层的目标数据中一个或多个批数的数据,确定 为一个待量化数据。
在一种可能的实现方式中,所述第二确定子模块,包括:
基于通道确定子模块,将所述待量化层的目标数据中一个或多个通道的数据,确定 为一个待量化数据。
在一种可能的实现方式中,所述数据确定模块,包括:
第三确定子模块,根据运行所述神经网络的装置的实时处理能力,在所述待量化层 的目标数据中确定多个待量化数据,各所述待量化数据的尺寸与所述实时处理能力正相 关。
在一种可能的实现方式中,所述装置还包括:
参数确定子模块,根据各所述待量化数据和对应的数据位宽计算得到对应的量化参 数。
在一种可能的实现方式中,所述参数确定子模块,包括:
第一点位置确定子模块,当所述量化参数不包括偏移量时,根据各所述待量化数据 中的绝对值最大值和对应的数据位宽,得到各所述待量化数据的第一类点位置。
在一种可能的实现方式中,所述参数确定子模块,包括:
第一最大值确定子模块,当所述量化参数不包括偏移量时,根据各所述待量化数据 和对应的数据位宽得到量化后数据的最大值;
第一缩放系数确定子模块,根据各所述待量化数据中的绝对值最大值和所述量化后 数据的最大值,得到各所述待量化数据的第一类缩放系数。
在一种可能的实现方式中,所述参数确定子模块,包括:
第二点位置确定子模块,当所述量化参数包括偏移量时,根据各所述待量化数据中 的最大值、最小值和对应的数据位宽,得到各所述待量化数据的第二类点位置。
在一种可能的实现方式中,所述参数确定子模块,包括:
第二最大值确定子模块,当所述量化参数包括偏移量时,根据各所述待量化数据和 对应的数据位宽得到量化后数据的最大值;
第一缩放系数确定子模块,根据各所述待量化数据中的最大值、最小值和量化后数 据的最大值,得到各所述待量化数据的第二类缩放系数。
在一种可能的实现方式中,所述参数确定子模块,包括:
偏移量确定子模块,根据各所述待量化数据中的最大值和最小值,得到各所述待量 化数据的偏移量。
在一种可能的实现方式中,所述装置还包括:
第一量化误差确定模块,根据各所述待量化数据和各所述待量化数据对应的量化数 据,确定各所述待量化数据对应的量化误差;
调整位宽确定模块,根据各所述待量化数据对应的量化误差和误差阈值,调整各所 述待量化数据对应的数据位宽,得到各所述待量化数据对应的调整位宽;
调整量化参数确定模块,将各所述待量化数据对应的数据位宽更新为对应的调整位 宽,根据各所述待量化数据和对应的调整位宽计算得到对应的调整量化参数,以使各所述待量化数据根据所述对应的调整量化参数进行量化。
在一种可能的实现方式中,所述调整位宽确定模块,包括:
第一调整位宽确定子模块,当所述量化误差大于第一误差阈值时,增加所述对应的 数据位宽,得到所述对应调整位宽。
在一种可能的实现方式中,所述装置还包括:
第一调整后量化误差模块,根据各所述待量化数据和对应的调整位宽计算各所述待 量化数据调整后的量化误差;
第一调整位宽循环确定模块,根据所述调整后的量化误差和所述第一误差阈值继续 增加所述对应的调整位宽,直至所述调整后的量化误差小于或等于所述第一误差阈值。
在一种可能的实现方式中,所述调整位宽确定模块,包括:
第二调整位宽确定子模块,当所述量化误差小于第二误差阈值时,增加所述对应的 数据位宽,得到所述对应调整位宽,所述第二误差阈值小于所述第一误差阈值。
在一种可能的实现方式中,所述装置还包括:
第二调整后量化误差模块,根据所述调整位宽和所述待量化数据计算所述待量化数 据调整后的量化误差;
第二调整位宽循环确定模块,根据所述调整后的量化误差和所述第二误差阈值继续 减少所述调整位宽,直至根据调整位宽和所述待量化数据计算得到的调整后的量化误差 大于或等于所述第二误差阈值。
在一种可能的实现方式中,在所述神经网络运算的微调阶段和/或训练阶段,所述装 置还包括:
第一数据变动幅度确定模块,获取当前迭代以及历史迭代中待量化数据的数据变动 幅度,所述历史迭代为所述当前迭代之前的迭代;
目标迭代间隔确定模块,根据所述待量化数据的数据变动幅度,确定所述待量化数 据对应的目标迭代间隔,以使所述待量化层根据所述目标迭代间隔更新所述待量化数据 的量化参数,所述目标迭代间隔包括至少一次迭代。
在一种可能的实现方式中,所述装置还包括:
第一目标迭代间隔应用模块,根据所述待量化数据在所述当前迭代的数据位宽,确 定所述待量化数据在所述目标迭代间隔内的迭代对应的数据位宽,以使所述神经网络根 据所述待量化数据在所述目标迭代间隔内的迭代对应的数据位宽,确定量化参数。
在一种可能的实现方式中,所述装置还包括:
第二目标迭代间隔应用模块,根据所述待量化数据在所述当前迭代对应的点位置, 确定所述待量化数据在所述目标迭代间隔内的迭代对应的点位置,所述点位置包括第一 类点位置和/或第二类点位置。
在一种可能的实现方式中,所述第一数据变动幅度确定模块,包括:
滑动平均值计算子模块,根据待量化数据在当前迭代的点位置,和根据历史迭代间 隔确定的与所述当前迭代对应的历史迭代的点位置,计算待量化数据对应各迭代间隔的 点位置的滑动平均值,所述点位置包括第一类点位置和/或第二类点位置;
第一数据变动幅度确定子模块,根据所述待量化数据在当前迭代的点位置的第一滑 动平均值,以及在上一迭代间隔对应迭代的点位置的第二滑动平均值,得到第一数据变动幅度;
其中,所述目标迭代间隔确定模块,包括:
第一目标迭代间隔确定子模块,根据所述第一数据变动幅度,确定所述待量化数据 对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的 量化参数。
在一种可能的实现方式中,所述第一数据变动幅度确定子模块,包括:
第一幅度确定子模块,计算所述第一滑动平均值和所述第二滑动平均值的差值;将 所述差值的绝对值确定为第一数据变动幅度。
在一种可能的实现方式中,所述装置还包括:
第二数据变动幅度确定模块,根据在当前迭代所述待量化数据和所述待量化数据对 应的量化数据,得到第二数据变动幅度;
其中,目标迭代间隔确定模块,包括:
第二目标迭代间隔确定子模块,根据所述待量化数据的第一数据变动幅度和所述第 二数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。
在一种可能的实现方式中,所述第二数据变动幅度确定模块,包括:
第二幅度确定子模块,计算在当前迭代所述待量化数据和所述待量化数据对应的量 化数据之间的误差;将所述误差的平方确定为所述第二数据变动幅度。
在一种可能的实现方式中,所述第二目标迭代间隔确定子模块,包括:
间隔确定子模块,根据所述第一数据变动幅度和所述第二数据变动幅度中的最大值, 确定所述待量化数据对应的目标迭代间隔。
在一种可能的实现方式中,所述第一数据变动幅度确定模块,包括:
第二数据变动幅度确定子模块,在当前迭代位于更新周期以外时,获取当前迭代以 及历史迭代中待量化数据的数据变动幅度,所述更新周期包括至少一个迭代。
在一种可能的实现方式中,所述装置还包括:
周期间隔确定模块,在当前迭代位于预设周期内时,根据当前迭代、在所述预设周期的下一周期中与所述当前迭代对应的迭代以及当前迭代对应的迭代间隔,确定周期间隔;
第一周期间隔应用模块,根据所述待量化数据在当前迭代对应的数据位宽,确定在 所述周期间隔内的迭代中所述待量化数据的数据位宽;或
第二周期间隔应用模块,根据所述待量化数据在当前迭代对应的点位置,确定在所 述周期间隔内的迭代中所述待量化数据的点位置。
本公开实施例所提供的神经网络量化装置,利用对应的量化参数对目标数据中的多 个待量化数据分别进行量化,在保证精度的同时,减小了存储数据所占用的存储空间,保证了运算结果的准确性和可靠性,且能够提高运算的效率,且量化同样缩减了神经网 络模型的大小,降低了对运行该神经网络模型的终端的性能要求,使神经网络模型可以 应用于算力、体积、功耗相对受限的手机等终端。
应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实 现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一 个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本公开各个实施例中的各功能单元/模块可以集成在一个单 元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集 成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块 的形式实现。
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路 等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC 等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质, 比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器 DRAM(DynamicRandom Access Memory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC (Hybrid Memory Cube)等等。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使 用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计 算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法 的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、 随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可 以存储程序代码的介质。
在一种可能的实现方式中,还公开了一种非易失性计算机可读存储介质,其上存储 有计算机程序指令,所述计算机程序指令被处理器执行时实现上述神经网络量化方法。
在一种可能的实现方式中,还公开了一种人工智能芯片,其包括了上述神经网络量 化装置。
在一种可能的实现方式中,还公开了一种板卡,其包括存储器件、接口装置和控制器件以及上述人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件 以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现 所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯 片的状态进行监控。
图9示出根据本公开实施例的板卡的结构框图。参阅图9,上述板卡除了包括上述芯 片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
所述存储器件390与所述人工智能芯片通过总线连接,用于存储数据。所述存储器件 可以包括多组存储单元393。每一组所述存储单元与所述人工智能芯片通过总线连接。可 以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM, 双倍速率同步动态随机存储器)。
上述处理器100中的存储单元102可以包括一组或多组存储单元393。在存储单元102 包括一组存储单元393时,多个处理单元101公用存储单元393进行数据存储。在存储单元 102包括多组存储单元393时,可以为每一个处理单元101设置其专用的一组存储单元393, 并为多个处理单元101中的部分或全部设置其公用的一组存储单元393。
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.根据条款A3所述的方法,所述根据所述目标数据的维度,在所述待量化层的目标数据中确定多个待量化数据,包括:
将所述待量化层的目标数据中一个或多个批数的数据,确定为一个待量化数据。
条款A5.根据条款A3或条款A4所述的方法,所述根据所述目标数据的维度,在所述待量化层的目标数据中确定多个待量化数据,包括:
将所述待量化层的目标数据中一个或多个通道的数据,确定为一个待量化数据。
条款A6.根据条款A1至条款A5中任一项所述的方法,所述在所述待量化层的目标数 据中确定多个待量化数据,包括:
根据运行所述神经网络的装置的实时处理能力,在所述待量化层的目标数据中确定 多个待量化数据,各所述待量化数据的尺寸与所述实时处理能力正相关。
条款A7.根据条款A1至条款A6中任一项所述的方法,所述方法还包括:
根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数。
条款A8.根据条款A7所述的方法,所述根据各所述待量化数据和对应的数据位宽计 算得到对应的量化参数,包括:
当所述量化参数不包括偏移量时,根据各所述待量化数据中的绝对值最大值和对应 的数据位宽,得到各所述待量化数据的第一类点位置。
条款A9.根据条款A7所述的方法,所述根据各所述待量化数据和对应的数据位宽计 算得到对应的量化参数,包括:
当所述量化参数不包括偏移量时,根据各所述待量化数据和对应的数据位宽得到量 化后数据的最大值;
根据各所述待量化数据中的绝对值最大值和所述量化后数据的最大值,得到各所述 待量化数据的第一类缩放系数。
条款A10.根据条款A7所述的方法,所述根据各所述待量化数据和对应的数据位宽计 算得到对应的量化参数,包括:
当所述量化参数包括偏移量时,根据各所述待量化数据中的最大值、最小值和对应 的数据位宽,得到各所述待量化数据的第二类点位置。
条款A11.根据条款A7所述的方法,所述根据各所述待量化数据和对应的数据位宽计 算得到对应的量化参数,包括:
当所述量化参数包括偏移量时,根据各所述待量化数据和对应的数据位宽得到量化 后数据的最大值;
根据各所述待量化数据中的最大值、最小值和量化后数据的最大值,得到各所述待 量化数据的第二类缩放系数。
条款A12.根据条款A7所述的方法,所述根据各所述待量化数据和对应的数据位宽计 算得到对应的量化参数,包括:
根据各所述待量化数据中的最大值和最小值,得到各所述待量化数据的偏移量。
条款A13.根据条款A1至条款A12中任一项所述的方法,所述方法还包括:
根据各所述待量化数据和各所述待量化数据对应的量化数据,确定各所述待量化数 据对应的量化误差;
根据各所述待量化数据对应的量化误差和误差阈值,调整各所述待量化数据对应的 数据位宽,得到各所述待量化数据对应的调整位宽;
将各所述待量化数据对应的数据位宽更新为对应的调整位宽,根据各所述待量化数 据和对应的调整位宽计算得到对应的调整量化参数,以使各所述待量化数据根据所述对 应的调整量化参数进行量化。
条款A14.根据条款A13所述的方法,所述根据各所述待量化数据对应的量化误差和 误差阈值,调整各所述待量化数据对应的数据位宽,得到各所述待量化数据对应的调整位宽,包括:
当所述量化误差大于第一误差阈值时,增加所述对应的数据位宽,得到所述对应调 整位宽。
条款A15.根据条款A13或条款A14所述的方法,所述方法还包括:
根据各所述待量化数据和对应的调整位宽计算各所述待量化数据调整后的量化误差;
根据所述调整后的量化误差和所述第一误差阈值继续增加所述对应的调整位宽,直 至所述调整后的量化误差小于或等于所述第一误差阈值。
条款A16.根据条款A13或条款A14所述的方法,所述根据各所述待量化数据对应的量化误差和误差阈值,调整各所述待量化数据对应的数据位宽,得到各所述待量化数据 对应的调整位宽,包括:
当所述量化误差小于第二误差阈值时,增加所述对应的数据位宽,得到所述对应调 整位宽,所述第二误差阈值小于所述第一误差阈值。
条款A17.根据条款A16所述的方法,所述方法还包括:
根据所述调整位宽和所述待量化数据计算所述待量化数据调整后的量化误差;
根据所述调整后的量化误差和所述第二误差阈值继续减少所述调整位宽,直至根据 调整位宽和所述待量化数据计算得到的调整后的量化误差大于或等于所述第二误差阈值。
条款A18.根据条款A1至条款A17中任一项所述的方法,在所述神经网络运算的微调 阶段和/或训练阶段,所述方法还包括:
获取当前迭代以及历史迭代中待量化数据的数据变动幅度,所述历史迭代为所述当 前迭代之前的迭代;
根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代间隔, 以使所述待量化层根据所述目标迭代间隔更新所述待量化数据的量化参数,所述目标迭 代间隔包括至少一次迭代。
条款A19.根据条款A18所述的方法,所述方法还包括:
根据所述待量化数据在所述当前迭代的数据位宽,确定所述待量化数据在所述目标 迭代间隔内的迭代对应的数据位宽,以使所述神经网络根据所述待量化数据在所述目标 迭代间隔内的迭代对应的数据位宽,确定量化参数。
条款A20.根据条款A19所述的方法,所述方法还包括:
根据所述待量化数据在所述当前迭代对应的点位置,确定所述待量化数据在所述目 标迭代间隔内的迭代对应的点位置,所述点位置包括第一类点位置和/或第二类点位置。
条款A21.根据条款A18所述的方法,所述获取当前迭代以及历史迭代中待量化数据 的数据变动幅度,包括:
根据待量化数据在当前迭代的点位置,和根据历史迭代间隔确定的与所述当前迭代 对应的历史迭代的点位置,计算待量化数据对应各迭代间隔的点位置的滑动平均值,所述点位置包括第一类点位置和/或第二类点位置;
根据所述待量化数据在当前迭代的点位置的第一滑动平均值,以及在上一迭代间隔 对应迭代的点位置的第二滑动平均值,得到第一数据变动幅度;
所述根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代间 隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数,包括:
根据所述第一数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述 神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。
条款A22.根据条款A21所述的方法,所述根据所述待量化数据在当前迭代的点位置 的第一滑动平均值,以及在上一迭代间隔对应迭代的点位置的第二滑动平均值,得到第一数据变动幅度,包括:
计算所述第一滑动平均值和所述第二滑动平均值的差值;
将所述差值的绝对值确定为第一数据变动幅度。
条款A23.根据条款A22所述的方法,所述方法还包括:
根据在当前迭代所述待量化数据和所述待量化数据对应的量化数据,得到第二数据 变动幅度;
所述根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代间 隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数,包括:
根据所述待量化数据的第一数据变动幅度和所述第二数据变动幅度,确定所述待量 化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化 数据的量化参数。
条款A24.根据条款A23所述的方法,所述根据在当前迭代所述待量化数据和所述待 量化数据对应的量化数据,得到第二数据变动幅度,包括:
计算在当前迭代所述待量化数据和所述待量化数据对应的量化数据之间的误差;
将所述误差的平方确定为所述第二数据变动幅度。
条款A25.根据条款A23所述的方法,所述根据所述待量化数据的第一数据变动幅度 和所述第二数据变动幅度,确定所述待量化数据对应的目标迭代间隔,包括:
根据所述第一数据变动幅度和所述第二数据变动幅度中的最大值,确定所述待量化 数据对应的目标迭代间隔。
条款A26.根据条款A18至条款A25中任一项所述的方法,所述获取当前迭代以及历史迭代中待量化数据的数据变动幅度,包括:
在当前迭代位于更新周期以外时,获取当前迭代以及历史迭代中待量化数据的数据 变动幅度,所述更新周期包括至少一个迭代。
条款A27.根据条款A18至条款A26中任一项所述的方法,所述方法还包括:
在当前迭代位于预设周期内时,根据当前迭代、在所述预设周期的下一周期中与所 述当前迭代对应的迭代以及当前迭代对应的迭代间隔,确定周期间隔;
根据所述待量化数据在当前迭代对应的数据位宽,确定在所述周期间隔内的迭代中 所述待量化数据的数据位宽;或
根据所述待量化数据在当前迭代对应的点位置,确定在所述周期间隔内的迭代中所 述待量化数据的点位置。
条款A28.一种神经网络量化装置,对于所述神经网络中的任意待量化层,所述装置 包括:
数据确定模块,在所述待量化层的目标数据中确定多个待量化数据,各所述待量化 数据均为所述目标数据的子集,所述目标数据为所述待量化层的任意一种待量化的待运 算数据,所述待运算数据包括输入神经元、权值、偏置、梯度中的至少一种;
数据量化模块,将各所述待量化数据分别根据对应的量化参数进行量化,得到与各 所述待量化数据对应的量化数据;
数据运算模块,根据与各所述待量化数据对应的量化数据得到所述目标数据的量化 结果,以使所述待量化层根据所述目标数据的量化结果进行运算。
条款A29.根据条款A28所述的装置,所述待量化层为卷积层,所述目标数据为输入神经元,所述数据确定模块,包括:
第一确定子模块,在所述卷积层的输入神经元中,根据卷积核的维度和步长确定与 卷积核对应的多个待量化数据,所述卷积核的维度包括高度、宽度、通道数。
条款A30.根据条款A28所述的装置,所述数据确定模块,包括:
第二确定子模块,根据所述目标数据的维度,在所述待量化层的目标数据中确定多 个待量化数据,所述目标数据的维度包括批数、通道、高度、宽度。
条款A31.根据条款A30所述的装置,所述第二确定子模块,包括:
基于批数确定子模块,将所述待量化层的目标数据中一个或多个批数的数据,确定 为一个待量化数据。
条款A32.根据条款A30所述的装置,所述第二确定子模块,包括:
基于通道确定子模块,将所述待量化层的目标数据中一个或多个通道的数据,确定 为一个待量化数据。
条款A33.根据条款A28至条款A32任一项所述的装置,所述数据确定模块,包括:
第三确定子模块,根据运行所述神经网络的装置的实时处理能力,在所述待量化层 的目标数据中确定多个待量化数据,各所述待量化数据的尺寸与所述实时处理能力正相 关。
条款A34.根据条款A28至条款A33任一项所述的装置,所述装置还包括:
参数确定子模块,根据各所述待量化数据和对应的数据位宽计算得到对应的量化参 数。
条款A35.根据条款A34所述的装置,所述参数确定子模块,包括:
第一点位置确定子模块,当所述量化参数不包括偏移量时,根据各所述待量化数据 中的绝对值最大值和对应的数据位宽,得到各所述待量化数据的第一类点位置。
条款A36.根据条款A34所述的装置,所述参数确定子模块,包括:
第一最大值确定子模块,当所述量化参数不包括偏移量时,根据各所述待量化数据 和对应的数据位宽得到量化后数据的最大值;
第一缩放系数确定子模块,根据各所述待量化数据中的绝对值最大值和所述量化后 数据的最大值,得到各所述待量化数据的第一类缩放系数。
条款A37.根据条款A34所述的装置,所述参数确定子模块,包括:
第二点位置确定子模块,当所述量化参数包括偏移量时,根据各所述待量化数据中 的最大值、最小值和对应的数据位宽,得到各所述待量化数据的第二类点位置。
条款A38.根据条款A34所述的装置,所述参数确定子模块,包括:
第二最大值确定子模块,当所述量化参数包括偏移量时,根据各所述待量化数据和 对应的数据位宽得到量化后数据的最大值;
第一缩放系数确定子模块,根据各所述待量化数据中的最大值、最小值和量化后数 据的最大值,得到各所述待量化数据的第二类缩放系数。
条款A39.根据条款A34所述的装置,所述参数确定子模块,包括:
偏移量确定子模块,根据各所述待量化数据中的最大值和最小值,得到各所述待量 化数据的偏移量。
条款A40.根据条款A28至39任一项所述的装置,所述装置还包括:
第一量化误差确定模块,根据各所述待量化数据和各所述待量化数据对应的量化数 据,确定各所述待量化数据对应的量化误差;
调整位宽确定模块,根据各所述待量化数据对应的量化误差和误差阈值,调整各所 述待量化数据对应的数据位宽,得到各所述待量化数据对应的调整位宽;
调整量化参数确定模块,将各所述待量化数据对应的数据位宽更新为对应的调整位 宽,根据各所述待量化数据和对应的调整位宽计算得到对应的调整量化参数,以使各所述待量化数据根据所述对应的调整量化参数进行量化。
条款A41.根据条款A40所述的装置,所述调整位宽确定模块,包括:
第一调整位宽确定子模块,当所述量化误差大于第一误差阈值时,增加所述对应的 数据位宽,得到所述对应调整位宽。
条款A42.根据条款A40或41所述的装置,所述装置还包括:
第一调整后量化误差模块,根据各所述待量化数据和对应的调整位宽计算各所述待 量化数据调整后的量化误差;
第一调整位宽循环确定模块,根据所述调整后的量化误差和所述第一误差阈值继续 增加所述对应的调整位宽,直至所述调整后的量化误差小于或等于所述第一误差阈值。
条款A43.根据条款A40或41所述的装置,所述调整位宽确定模块,包括:
第二调整位宽确定子模块,当所述量化误差小于第二误差阈值时,增加所述对应的 数据位宽,得到所述对应调整位宽,所述第二误差阈值小于所述第一误差阈值。
条款A44.根据条款A43所述的装置,所述装置还包括:
第二调整后量化误差模块,根据所述调整位宽和所述待量化数据计算所述待量化数 据调整后的量化误差;
第二调整位宽循环确定模块,根据所述调整后的量化误差和所述第二误差阈值继续 减少所述调整位宽,直至根据调整位宽和所述待量化数据计算得到的调整后的量化误差 大于或等于所述第二误差阈值。
条款A45.根据条款A28至条款A44任一项所述的装置,在所述神经网络运算的微调阶段和/或训练阶段,所述装置还包括:
第一数据变动幅度确定模块,获取当前迭代以及历史迭代中待量化数据的数据变动 幅度,所述历史迭代为所述当前迭代之前的迭代;
目标迭代间隔确定模块,根据所述待量化数据的数据变动幅度,确定所述待量化数 据对应的目标迭代间隔,以使所述待量化层根据所述目标迭代间隔更新所述待量化数据 的量化参数,所述目标迭代间隔包括至少一次迭代。
条款A46.根据条款A45所述的装置,所述装置还包括:
第一目标迭代间隔应用模块,根据所述待量化数据在所述当前迭代的数据位宽,确 定所述待量化数据在所述目标迭代间隔内的迭代对应的数据位宽,以使所述神经网络根 据所述待量化数据在所述目标迭代间隔内的迭代对应的数据位宽,确定量化参数。
条款A47.根据条款A46所述的装置,所述装置还包括:
第二目标迭代间隔应用模块,根据所述待量化数据在所述当前迭代对应的点位置, 确定所述待量化数据在所述目标迭代间隔内的迭代对应的点位置,所述点位置包括第一 类点位置和/或第二类点位置。
条款A48.根据条款A45所述的装置,所述第一数据变动幅度确定模块,包括:
滑动平均值计算子模块,根据待量化数据在当前迭代的点位置,和根据历史迭代间 隔确定的与所述当前迭代对应的历史迭代的点位置,计算待量化数据对应各迭代间隔的 点位置的滑动平均值,所述点位置包括第一类点位置和/或第二类点位置;
第一数据变动幅度确定子模块,根据所述待量化数据在当前迭代的点位置的第一滑 动平均值,以及在上一迭代间隔对应迭代的点位置的第二滑动平均值,得到第一数据变动幅度;
其中,所述目标迭代间隔确定模块,包括:
第一目标迭代间隔确定子模块,根据所述第一数据变动幅度,确定所述待量化数据 对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的 量化参数。
条款A49.根据条款A48所述的装置,所述第一数据变动幅度确定子模块,包括:
第一幅度确定子模块,计算所述第一滑动平均值和所述第二滑动平均值的差值;将 所述差值的绝对值确定为第一数据变动幅度。
条款A50.根据条款A49所述的装置,所述装置还包括:
第二数据变动幅度确定模块,根据在当前迭代所述待量化数据和所述待量化数据对 应的量化数据,得到第二数据变动幅度;
其中,目标迭代间隔确定模块,包括:
第二目标迭代间隔确定子模块,根据所述待量化数据的第一数据变动幅度和所述第 二数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。
条款A51.根据条款A50所述的装置,所述第二数据变动幅度确定模块,包括:
第二幅度确定子模块,计算在当前迭代所述待量化数据和所述待量化数据对应的量 化数据之间的误差;将所述误差的平方确定为所述第二数据变动幅度。
条款A52.根据条款A50所述的装置,所述第二目标迭代间隔确定子模块,包括:
间隔确定子模块,根据所述第一数据变动幅度和所述第二数据变动幅度中的最大值, 确定所述待量化数据对应的目标迭代间隔。
条款A53.根据条款A45至条款A52任一项所述的装置,所述第一数据变动幅度确定模块,包括:
第二数据变动幅度确定子模块,在当前迭代位于更新周期以外时,获取当前迭代以 及历史迭代中待量化数据的数据变动幅度,所述更新周期包括至少一个迭代。
条款A54.根据条款A45至条款A53任一项所述的装置,所述装置还包括:
周期间隔确定模块,在当前迭代位于预设周期内时,根据当前迭代、在所述预设周期的下一周期中与所述当前迭代对应的迭代以及当前迭代对应的迭代间隔,确定周期间隔;
第一周期间隔应用模块,根据所述待量化数据在当前迭代对应的数据位宽,确定在 所述周期间隔内的迭代中所述待量化数据的数据位宽;或
第二周期间隔应用模块,根据所述待量化数据在当前迭代对应的点位置,确定在所 述周期间隔内的迭代中所述待量化数据的点位置。
条款A55.一种人工智能芯片,所述芯片包括如条款A28至条款A54中任意一项所述的神经网络量化装置。
条款A56.一种电子设备,所述电子设备包括如条款A55所述的人工智能芯片。
条款A57.一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款A56 所述的人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连 接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
所述控制器件,用于对所述人工智能芯片的状态进行监控。
条款A58.根据条款A57所述的板卡,
所述存储器件包括:多组存储单元,每一组所述存储单元与所述人工智能芯片通过 总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
条款A59.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计 算机程序指令被处理器执行时实现条款A1至条款A27中任意一项所述的神经网络量化方 法。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实 施方式进行了阐述,以上实施例的说明仅用于帮助理解本公开的方法及其核心思想。同时,本领域技术人员依据本公开的思想,基于本公开的具体实施方式及应用范围上做出 的改变或变形之处,都属于本公开保护的范围。综上所述,本说明书内容不应理解为对 本公开的限制。
Claims (59)
1.一种神经网络量化方法,其特征在于,对于所述神经网络中的任意待量化层,所述方法包括:
在所述待量化层的目标数据中确定多个待量化数据,各所述待量化数据均为所述目标数据的子集,所述目标数据为所述待量化层的任意一种待量化的待运算数据,所述待运算数据包括输入神经元、权值、偏置、梯度中的至少一种;
将各所述待量化数据分别根据对应的量化参数进行量化,得到与各所述待量化数据对应的量化数据;
根据与各所述待量化数据对应的量化数据得到所述目标数据的量化结果,以使所述待量化层根据所述目标数据的量化结果进行运算。
2.根据权利要求1所述的方法,其特征在于,所述待量化层为卷积层,所述目标数据为输入神经元,所述在所述待量化层的目标数据中确定多个待量化数据,包括:
在所述卷积层的输入神经元中,根据卷积核的维度和步长确定与卷积核对应的多个待量化数据,所述卷积核的维度包括高度、宽度、通道数。
3.根据权利要求1所述的方法,其特征在于,所述在所述待量化层的目标数据中确定多个待量化数据,包括:
根据所述目标数据的维度,在所述待量化层的目标数据中确定多个待量化数据,所述目标数据的维度包括批数、通道、高度、宽度。
4.根据权利要求3所述的方法,其特征在于,所述根据所述目标数据的维度,在所述待量化层的目标数据中确定多个待量化数据,包括:
将所述待量化层的目标数据中一个或多个批数的数据,确定为一个待量化数据。
5.根据权利要求3或4所述的方法,其特征在于,所述根据所述目标数据的维度,在所述待量化层的目标数据中确定多个待量化数据,包括:
将所述待量化层的目标数据中一个或多个通道的数据,确定为一个待量化数据。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述在所述待量化层的目标数据中确定多个待量化数据,包括:
根据运行所述神经网络的装置的实时处理能力,在所述待量化层的目标数据中确定多个待量化数据,各所述待量化数据的尺寸与所述实时处理能力正相关。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:
根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数。
8.根据权利要求7所述的方法,其特征在于,所述根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数,包括:
当所述量化参数不包括偏移量时,根据各所述待量化数据中的绝对值最大值和对应的数据位宽,得到各所述待量化数据的第一类点位置。
9.根据权利要求7所述的方法,其特征在于,所述根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数,包括:
当所述量化参数不包括偏移量时,根据各所述待量化数据和对应的数据位宽得到量化后数据的最大值;
根据各所述待量化数据中的绝对值最大值和所述量化后数据的最大值,得到各所述待量化数据的第一类缩放系数。
10.根据权利要求7所述的方法,其特征在于,所述根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数,包括:
当所述量化参数包括偏移量时,根据各所述待量化数据中的最大值、最小值和对应的数据位宽,得到各所述待量化数据的第二类点位置。
11.根据权利要求7所述的方法,其特征在于,所述根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数,包括:
当所述量化参数包括偏移量时,根据各所述待量化数据和对应的数据位宽得到量化后数据的最大值;
根据各所述待量化数据中的最大值、最小值和量化后数据的最大值,得到各所述待量化数据的第二类缩放系数。
12.根据权利要求7所述的方法,其特征在于,所述根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数,包括:
根据各所述待量化数据中的最大值和最小值,得到各所述待量化数据的偏移量。
13.根据权利要求1至12中任一项所述的方法,其特征在于,所述方法还包括:
根据各所述待量化数据和各所述待量化数据对应的量化数据,确定各所述待量化数据对应的量化误差;
根据各所述待量化数据对应的量化误差和误差阈值,调整各所述待量化数据对应的数据位宽,得到各所述待量化数据对应的调整位宽;
将各所述待量化数据对应的数据位宽更新为对应的调整位宽,根据各所述待量化数据和对应的调整位宽计算得到对应的调整量化参数,以使各所述待量化数据根据所述对应的调整量化参数进行量化。
14.根据权利要求13所述的方法,其特征在于,所述根据各所述待量化数据对应的量化误差和误差阈值,调整各所述待量化数据对应的数据位宽,得到各所述待量化数据对应的调整位宽,包括:
当所述量化误差大于第一误差阈值时,增加所述对应的数据位宽,得到所述对应调整位宽。
15.根据权利要求13或14所述的方法,其特征在于,所述方法还包括:
根据各所述待量化数据和对应的调整位宽计算各所述待量化数据调整后的量化误差;
根据所述调整后的量化误差和所述第一误差阈值继续增加所述对应的调整位宽,直至所述调整后的量化误差小于或等于所述第一误差阈值。
16.根据权利要求13或14所述的方法,其特征在于,所述根据各所述待量化数据对应的量化误差和误差阈值,调整各所述待量化数据对应的数据位宽,得到各所述待量化数据对应的调整位宽,包括:
当所述量化误差小于第二误差阈值时,增加所述对应的数据位宽,得到所述对应调整位宽,所述第二误差阈值小于所述第一误差阈值。
17.根据权利要求16所述的方法,其特征在于,所述方法还包括:
根据所述调整位宽和所述待量化数据计算所述待量化数据调整后的量化误差;
根据所述调整后的量化误差和所述第二误差阈值继续减少所述调整位宽,直至根据调整位宽和所述待量化数据计算得到的调整后的量化误差大于或等于所述第二误差阈值。
18.根据权利要求1至17中任一项所述的方法,其特征在于,在所述神经网络运算的微调阶段和/或训练阶段,所述方法还包括:
获取当前迭代以及历史迭代中待量化数据的数据变动幅度,所述历史迭代为所述当前迭代之前的迭代;
根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述待量化层根据所述目标迭代间隔更新所述待量化数据的量化参数,所述目标迭代间隔包括至少一次迭代。
19.根据权利要求18所述的方法,其特征在于,所述方法还包括:
根据所述待量化数据在所述当前迭代的数据位宽,确定所述待量化数据在所述目标迭代间隔内的迭代对应的数据位宽,以使所述神经网络根据所述待量化数据在所述目标迭代间隔内的迭代对应的数据位宽,确定量化参数。
20.根据权利要求19所述的方法,其特征在于,所述方法还包括:
根据所述待量化数据在所述当前迭代对应的点位置,确定所述待量化数据在所述目标迭代间隔内的迭代对应的点位置,所述点位置包括第一类点位置和/或第二类点位置。
21.根据权利要求18所述的方法,其特征在于,所述获取当前迭代以及历史迭代中待量化数据的数据变动幅度,包括:
根据待量化数据在当前迭代的点位置,和根据历史迭代间隔确定的与所述当前迭代对应的历史迭代的点位置,计算待量化数据对应各迭代间隔的点位置的滑动平均值,所述点位置包括第一类点位置和/或第二类点位置;
根据所述待量化数据在当前迭代的点位置的第一滑动平均值,以及在上一迭代间隔对应迭代的点位置的第二滑动平均值,得到第一数据变动幅度;
所述根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数,包括:
根据所述第一数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。
22.根据权利要求21所述的方法,其特征在于,所述根据所述待量化数据在当前迭代的点位置的第一滑动平均值,以及在上一迭代间隔对应迭代的点位置的第二滑动平均值,得到第一数据变动幅度,包括:
计算所述第一滑动平均值和所述第二滑动平均值的差值;
将所述差值的绝对值确定为第一数据变动幅度。
23.根据权利要求22所述的方法,其特征在于,所述方法还包括:
根据在当前迭代所述待量化数据和所述待量化数据对应的量化数据,得到第二数据变动幅度;
所述根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数,包括:
根据所述待量化数据的第一数据变动幅度和所述第二数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。
24.根据权利要求23所述的方法,其特征在于,所述根据在当前迭代所述待量化数据和所述待量化数据对应的量化数据,得到第二数据变动幅度,包括:
计算在当前迭代所述待量化数据和所述待量化数据对应的量化数据之间的误差;
将所述误差的平方确定为所述第二数据变动幅度。
25.根据权利要求23所述的方法,其特征在于,所述根据所述待量化数据的第一数据变动幅度和所述第二数据变动幅度,确定所述待量化数据对应的目标迭代间隔,包括:
根据所述第一数据变动幅度和所述第二数据变动幅度中的最大值,确定所述待量化数据对应的目标迭代间隔。
26.根据权利要求18至25中任一项所述的方法,其特征在于,所述获取当前迭代以及历史迭代中待量化数据的数据变动幅度,包括:
在当前迭代位于更新周期以外时,获取当前迭代以及历史迭代中待量化数据的数据变动幅度,所述更新周期包括至少一个迭代。
27.根据权利要求18至26中任一项所述的方法,其特征在于,所述方法还包括:
在当前迭代位于预设周期内时,根据当前迭代、在所述预设周期的下一周期中与所述当前迭代对应的迭代以及当前迭代对应的迭代间隔,确定周期间隔;
根据所述待量化数据在当前迭代对应的数据位宽,确定在所述周期间隔内的迭代中所述待量化数据的数据位宽;或
根据所述待量化数据在当前迭代对应的点位置,确定在所述周期间隔内的迭代中所述待量化数据的点位置。
28.一种神经网络量化装置,其特征在于,对于所述神经网络中的任意待量化层,所述装置包括:
数据确定模块,在所述待量化层的目标数据中确定多个待量化数据,各所述待量化数据均为所述目标数据的子集,所述目标数据为所述待量化层的任意一种待量化的待运算数据,所述待运算数据包括输入神经元、权值、偏置、梯度中的至少一种;
数据量化模块,将各所述待量化数据分别根据对应的量化参数进行量化,得到与各所述待量化数据对应的量化数据;
数据运算模块,根据与各所述待量化数据对应的量化数据得到所述目标数据的量化结果,以使所述待量化层根据所述目标数据的量化结果进行运算。
29.根据权利要求28所述的装置,其特征在于,所述待量化层为卷积层,所述目标数据为输入神经元,所述数据确定模块,包括:
第一确定子模块,在所述卷积层的输入神经元中,根据卷积核的维度和步长确定与卷积核对应的多个待量化数据,所述卷积核的维度包括高度、宽度、通道数。
30.根据权利要求28所述的装置,其特征在于,所述数据确定模块,包括:
第二确定子模块,根据所述目标数据的维度,在所述待量化层的目标数据中确定多个待量化数据,所述目标数据的维度包括批数、通道、高度、宽度。
31.根据权利要求30所述的装置,其特征在于,所述第二确定子模块,包括:
基于批数确定子模块,将所述待量化层的目标数据中一个或多个批数的数据,确定为一个待量化数据。
32.根据权利要求30所述的装置,其特征在于,所述第二确定子模块,包括:
基于通道确定子模块,将所述待量化层的目标数据中一个或多个通道的数据,确定为一个待量化数据。
33.根据权利要求28至32任一项所述的装置,其特征在于,所述数据确定模块,包括:
第三确定子模块,根据运行所述神经网络的装置的实时处理能力,在所述待量化层的目标数据中确定多个待量化数据,各所述待量化数据的尺寸与所述实时处理能力正相关。
34.根据权利要求28至33任一项所述的装置,其特征在于,所述装置还包括:
参数确定子模块,根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数。
35.根据权利要求34所述的装置,其特征在于,所述参数确定子模块,包括:
第一点位置确定子模块,当所述量化参数不包括偏移量时,根据各所述待量化数据中的绝对值最大值和对应的数据位宽,得到各所述待量化数据的第一类点位置。
36.根据权利要求34所述的装置,其特征在于,所述参数确定子模块,包括:
第一最大值确定子模块,当所述量化参数不包括偏移量时,根据各所述待量化数据和对应的数据位宽得到量化后数据的最大值;
第一缩放系数确定子模块,根据各所述待量化数据中的绝对值最大值和所述量化后数据的最大值,得到各所述待量化数据的第一类缩放系数。
37.根据权利要求34所述的装置,其特征在于,所述参数确定子模块,包括:
第二点位置确定子模块,当所述量化参数包括偏移量时,根据各所述待量化数据中的最大值、最小值和对应的数据位宽,得到各所述待量化数据的第二类点位置。
38.根据权利要求34所述的装置,其特征在于,所述参数确定子模块,包括:
第二最大值确定子模块,当所述量化参数包括偏移量时,根据各所述待量化数据和对应的数据位宽得到量化后数据的最大值;
第一缩放系数确定子模块,根据各所述待量化数据中的最大值、最小值和量化后数据的最大值,得到各所述待量化数据的第二类缩放系数。
39.根据权利要求34所述的装置,其特征在于,所述参数确定子模块,包括:
偏移量确定子模块,根据各所述待量化数据中的最大值和最小值,得到各所述待量化数据的偏移量。
40.根据权利要求28至39任一项所述的装置,其特征在于,所述装置还包括:
第一量化误差确定模块,根据各所述待量化数据和各所述待量化数据对应的量化数据,确定各所述待量化数据对应的量化误差;
调整位宽确定模块,根据各所述待量化数据对应的量化误差和误差阈值,调整各所述待量化数据对应的数据位宽,得到各所述待量化数据对应的调整位宽;
调整量化参数确定模块,将各所述待量化数据对应的数据位宽更新为对应的调整位宽,根据各所述待量化数据和对应的调整位宽计算得到对应的调整量化参数,以使各所述待量化数据根据所述对应的调整量化参数进行量化。
41.根据权利要求40所述的装置,其特征在于,所述调整位宽确定模块,包括:
第一调整位宽确定子模块,当所述量化误差大于第一误差阈值时,增加所述对应的数据位宽,得到所述对应调整位宽。
42.根据权利要求40或41所述的装置,其特征在于,所述装置还包括:
第一调整后量化误差模块,根据各所述待量化数据和对应的调整位宽计算各所述待量化数据调整后的量化误差;
第一调整位宽循环确定模块,根据所述调整后的量化误差和所述第一误差阈值继续增加所述对应的调整位宽,直至所述调整后的量化误差小于或等于所述第一误差阈值。
43.根据权利要求40或41所述的装置,其特征在于,所述调整位宽确定模块,包括:
第二调整位宽确定子模块,当所述量化误差小于第二误差阈值时,增加所述对应的数据位宽,得到所述对应调整位宽,所述第二误差阈值小于所述第一误差阈值。
44.根据权利要求43所述的装置,其特征在于,所述装置还包括:
第二调整后量化误差模块,根据所述调整位宽和所述待量化数据计算所述待量化数据调整后的量化误差;
第二调整位宽循环确定模块,根据所述调整后的量化误差和所述第二误差阈值继续减少所述调整位宽,直至根据调整位宽和所述待量化数据计算得到的调整后的量化误差大于或等于所述第二误差阈值。
45.根据权利要求28至44任一项所述的装置,其特征在于,在所述神经网络运算的微调阶段和/或训练阶段,所述装置还包括:
第一数据变动幅度确定模块,获取当前迭代以及历史迭代中待量化数据的数据变动幅度,所述历史迭代为所述当前迭代之前的迭代;
目标迭代间隔确定模块,根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述待量化层根据所述目标迭代间隔更新所述待量化数据的量化参数,所述目标迭代间隔包括至少一次迭代。
46.根据权利要求45所述的装置,其特征在于,所述装置还包括:
第一目标迭代间隔应用模块,根据所述待量化数据在所述当前迭代的数据位宽,确定所述待量化数据在所述目标迭代间隔内的迭代对应的数据位宽,以使所述神经网络根据所述待量化数据在所述目标迭代间隔内的迭代对应的数据位宽,确定量化参数。
47.根据权利要求46所述的装置,其特征在于,所述装置还包括:
第二目标迭代间隔应用模块,根据所述待量化数据在所述当前迭代对应的点位置,确定所述待量化数据在所述目标迭代间隔内的迭代对应的点位置,所述点位置包括第一类点位置和/或第二类点位置。
48.根据权利要求45所述的装置,其特征在于,所述第一数据变动幅度确定模块,包括:
滑动平均值计算子模块,根据待量化数据在当前迭代的点位置,和根据历史迭代间隔确定的与所述当前迭代对应的历史迭代的点位置,计算待量化数据对应各迭代间隔的点位置的滑动平均值,所述点位置包括第一类点位置和/或第二类点位置;
第一数据变动幅度确定子模块,根据所述待量化数据在当前迭代的点位置的第一滑动平均值,以及在上一迭代间隔对应迭代的点位置的第二滑动平均值,得到第一数据变动幅度;
其中,所述目标迭代间隔确定模块,包括:
第一目标迭代间隔确定子模块,根据所述第一数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。
49.根据权利要求48所述的装置,其特征在于,所述第一数据变动幅度确定子模块,包括:
第一幅度确定子模块,计算所述第一滑动平均值和所述第二滑动平均值的差值;将所述差值的绝对值确定为第一数据变动幅度。
50.根据权利要求49所述的装置,其特征在于,所述装置还包括:
第二数据变动幅度确定模块,根据在当前迭代所述待量化数据和所述待量化数据对应的量化数据,得到第二数据变动幅度;
其中,目标迭代间隔确定模块,包括:
第二目标迭代间隔确定子模块,根据所述待量化数据的第一数据变动幅度和所述第二数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。
51.根据权利要求50所述的装置,其特征在于,所述第二数据变动幅度确定模块,包括:
第二幅度确定子模块,计算在当前迭代所述待量化数据和所述待量化数据对应的量化数据之间的误差;将所述误差的平方确定为所述第二数据变动幅度。
52.根据权利要求50所述的装置,其特征在于,所述第二目标迭代间隔确定子模块,包括:
间隔确定子模块,根据所述第一数据变动幅度和所述第二数据变动幅度中的最大值,确定所述待量化数据对应的目标迭代间隔。
53.根据权利要求45至52任一项所述的装置,其特征在于,所述第一数据变动幅度确定模块,包括:
第二数据变动幅度确定子模块,在当前迭代位于更新周期以外时,获取当前迭代以及历史迭代中待量化数据的数据变动幅度,所述更新周期包括至少一个迭代。
54.根据权利要求45至53任一项所述的装置,其特征在于,所述装置还包括:
周期间隔确定模块,在当前迭代位于预设周期内时,根据当前迭代、在所述预设周期的下一周期中与所述当前迭代对应的迭代以及当前迭代对应的迭代间隔,确定周期间隔;
第一周期间隔应用模块,根据所述待量化数据在当前迭代对应的数据位宽,确定在所述周期间隔内的迭代中所述待量化数据的数据位宽;或
第二周期间隔应用模块,根据所述待量化数据在当前迭代对应的点位置,确定在所述周期间隔内的迭代中所述待量化数据的点位置。
55.一种人工智能芯片,其特征在于,所述芯片包括如权利要求28至54中任意一项所述的神经网络量化装置。
56.一种电子设备,其特征在于,所述电子设备包括如权利要求55所述的人工智能芯片。
57.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求56所述的人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
所述控制器件,用于对所述人工智能芯片的状态进行监控。
58.根据权利要求57所述的板卡,其特征在于,
所述存储器件包括:多组存储单元,每一组所述存储单元与所述人工智能芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
59.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至27中任意一项所述的神经网络量化方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/095679 WO2021022903A1 (zh) | 2019-08-07 | 2020-06-11 | 数据处理方法、装置、计算机设备和存储介质 |
PCT/CN2020/110134 WO2021036890A1 (zh) | 2019-08-23 | 2020-08-20 | 数据处理方法、装置、计算机设备和存储介质 |
JP2020567544A JP7146954B2 (ja) | 2019-08-23 | 2020-08-20 | データ処理方法、装置、コンピュータデバイス、及び記憶媒体 |
US17/254,372 US20210374510A1 (en) | 2019-08-23 | 2020-08-20 | Data processing method, device, computer equipment and storage medium |
EP20824879.9A EP4020328A4 (en) | 2019-08-23 | 2020-08-20 | DATA PROCESSING METHOD AND APPARATUS, COMPUTER DEVICE AND STORAGE MEDIA |
Applications Claiming Priority (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2019105052397 | 2019-06-12 | ||
CN201910505239 | 2019-06-12 | ||
CN2019105153557 | 2019-06-14 | ||
CN201910515355 | 2019-06-14 | ||
CN2019105285378 | 2019-06-18 | ||
CN201910528537 | 2019-06-18 | ||
CN2019105701250 | 2019-06-27 | ||
CN201910570125 | 2019-06-27 | ||
CN201910784982 | 2019-08-23 | ||
CN2019107849820 | 2019-08-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112085177A true CN112085177A (zh) | 2020-12-15 |
Family
ID=73734307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910888599.XA Pending CN112085177A (zh) | 2019-06-12 | 2019-09-19 | 数据处理方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112085177A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108875924A (zh) * | 2018-02-09 | 2018-11-23 | 北京旷视科技有限公司 | 基于神经网络的数据处理方法、装置、系统及存储介质 |
US20190050710A1 (en) * | 2017-08-14 | 2019-02-14 | Midea Group Co., Ltd. | Adaptive bit-width reduction for neural networks |
CN109472353A (zh) * | 2018-11-22 | 2019-03-15 | 济南浪潮高新科技投资发展有限公司 | 一种卷积神经网络量化电路及量化方法 |
-
2019
- 2019-09-19 CN CN201910888599.XA patent/CN112085177A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190050710A1 (en) * | 2017-08-14 | 2019-02-14 | Midea Group Co., Ltd. | Adaptive bit-width reduction for neural networks |
CN108875924A (zh) * | 2018-02-09 | 2018-11-23 | 北京旷视科技有限公司 | 基于神经网络的数据处理方法、装置、系统及存储介质 |
CN109472353A (zh) * | 2018-11-22 | 2019-03-15 | 济南浪潮高新科技投资发展有限公司 | 一种卷积神经网络量化电路及量化方法 |
Non-Patent Citations (1)
Title |
---|
陈俊保;方向忠;: "卷积神经网络的定点化研究", 信息技术, no. 07 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021036890A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2021036908A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2021036904A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2021036905A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112085181B (zh) | 神经网络量化方法及装置以及相关产品 | |
CN112085176B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112085187A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112085182A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112446460A (zh) | 用于处理数据的方法、装置以及相关产品 | |
CN112085151A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112085177A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
US20220366238A1 (en) | Method and apparatus for adjusting quantization parameter of recurrent neural network, and related product | |
CN113298843B (zh) | 数据量化处理方法、装置、电子设备和存储介质 | |
CN112085150B (zh) | 循环神经网络的量化参数调整方法、装置及相关产品 | |
WO2021036412A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
US20220222041A1 (en) | Method and apparatus for processing data, and related product |
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 |