CN112085176B - 数据处理方法、装置、计算机设备和存储介质 - Google Patents
数据处理方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN112085176B CN112085176B CN201910888449.9A CN201910888449A CN112085176B CN 112085176 B CN112085176 B CN 112085176B CN 201910888449 A CN201910888449 A CN 201910888449A CN 112085176 B CN112085176 B CN 112085176B
- Authority
- CN
- China
- Prior art keywords
- data
- quantized
- quantization
- iteration
- bit width
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title abstract description 5
- 238000013139 quantization Methods 0.000 claims abstract description 666
- 238000012545 processing Methods 0.000 claims abstract description 76
- 238000013473 artificial intelligence Methods 0.000 claims abstract description 22
- 230000005540 biological transmission Effects 0.000 claims abstract description 11
- 238000012544 monitoring process Methods 0.000 claims abstract description 6
- 238000013528 artificial neural network Methods 0.000 claims description 166
- 238000000034 method Methods 0.000 claims description 157
- 238000004364 calculation method Methods 0.000 claims description 34
- 210000002364 input neuron Anatomy 0.000 claims description 34
- 238000006243 chemical reaction Methods 0.000 claims description 27
- 238000012549 training Methods 0.000 claims description 27
- 230000000737 periodic effect Effects 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 4
- 238000013500 data storage Methods 0.000 claims description 4
- 125000004122 cyclic group Chemical group 0.000 claims description 3
- 230000015654 memory Effects 0.000 description 25
- 230000008569 process Effects 0.000 description 23
- 230000002829 reductive effect Effects 0.000 description 23
- 210000002569 neuron Anatomy 0.000 description 20
- 238000010586 diagram Methods 0.000 description 8
- 238000003062 neural network model Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 210000004027 cell Anatomy 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 238000011002 quantification Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 description 1
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 238000013145 classification model Methods 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000008187 granular material Substances 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 238000012706 support-vector machine Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
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)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本公开涉及一种数据处理方法、装置、计算机设备和存储介质。其所公开的板卡包括:存储器件、接口装置和控制器件以及包括数据处理装置的人工智能芯片;其中,人工智能芯片与存储器件、控制器件以及接口装置分别连接;存储器件,用于存储数据;接口装置,用于实现人工智能芯片与外部设备之间的数据传输;控制器件,用于对人工智能芯片的状态进行监控。本公开实施例所提供的数据处理方法、装置、计算机设备和存储介质,利用对应的量化参数对待量化数据进行量化,在保证精度的同时,减小了存储数据所占用的存储空间,保证了运算结果的准确性和可靠性,且能够提高运算的效率。
Description
技术领域
本公开涉及计算机技术领域,特别是涉及一种神经网络量化方法、装置、计算机设备和存储介质。
背景技术
神经网络(neural network,NN)是一种模仿生物神经网络的结构和功能的数学模型或计算模型。神经网络通过样本数据的训练,不断修正网络权值和阈值使误差函数沿负梯度方向下降,逼近期望输出。它是一种应用较为广泛的识别分类模型,多用于函数逼近、模型识别分类、数据压缩和时间序列预测等。神经网络被应用到图像识别、语音识别、自然语言处理等领域中,然而,随着神经网络复杂度提高,数据的数据量和数据维度都在不断增大,不断增大的数据量等对运算装置的数据处理效率、存储装置的存储容量及访存效率等提出了较大的挑战。相关技术中,采用固定位宽对神经网络的运算数据进行量化,即将浮点型的运算数据转换为定点型的运算数据,以实现神经网络的运算数据的压缩。但相关技术中针对整个神经网络采用相同的量化方案,但神经网络的不同运算数据之间可能存在较大的差异,往往会导致精度较低,影响数据运算结果。
发明内容
基于此,有必要针对上述技术问题,提供一种神经网络量化方法、装置、计算机设备和存储介质。
根据本公开的一方面,提供了一种神经网络量化装置,所述装置包括控制模块和处理模块,所述处理模块包括第一运算子模块,所述第一运算子模块包括主运算子模块和从运算子模块,
所述控制模块,用于从神经网络的目标数据中确定出多个待量化数据,并根据与各所述待量化数据对应的量化数据得到所述目标数据的量化结果,各所述待量化数据的量化数据是利用对应的量化参数进行量化得到的,所述量化参数包括点位置;
所述第一运算子模块,用于进行与所述量化结果相关的运算,得到运算结果,
其中,所述主运算子模块,用于将第一数据发送至所述从运算子模块,所述第一数据包括所述量化结果中根据所述点位置量化得到的第一类型的数据;
所述从运算子模块,用于对接收到的所述第一数据进行乘法运算,得到中间结果;
所述主运算子模块,还用于对所述中间结果和所述量化结果中的除所述第一数据之外的数据进行运算,得到运算结果。
根据本公开的另一方面,提供了一种神经网络量化方法,所述方法应用于神经网络量化装置,所述装置包括控制模块和处理模块,所述处理模块包括第一运算子模块,所述第一运算子模块包括主运算子模块和从运算子模块,所述方法包括:
利用所述控制模块从神经网络的目标数据中确定出多个待量化数据,并根据与各所述待量化数据对应的量化数据得到所述目标数据的量化结果,各所述待量化数据的量化数据是利用对应的量化参数进行量化得到的,所述量化参数包括点位置;
利用所述第一运算子模块进行与所述量化结果相关的运算,得到运算结果,
其中,利用所述第一运算子模块进行与所述量化结果相关的运算,得到运算结果,包括:
利用所述主运算子模块将第一数据发送至所述从运算子模块,所述第一数据包括所述量化结果中根据所述点位置量化得到的第一类型的数据;
利用所述从运算子模块对接收到的所述第一数据进行乘法运算,得到中间结果;
利用所述主运算子模块对所述中间结果和所述量化结果中的除所述第一数据之外的数据进行运算,得到运算结果。
根据本公开的另一方面,提供了一种人工智能芯片,其特征在于,所述芯片包括上述神经网络量化装置。
根据本公开的另一方面,提供了一种电子设备,所述电子设备包括上述人工智能芯片。
根据本公开的另一方面,提供了一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及上述人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
所述控制器件,用于对所述人工智能芯片的状态进行监控。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述神经网络量化方法。
本公开实施例所提供的神经网络量化方法、装置、计算机设备和存储介质,该装置包括控制模块和处理模块,处理模块包括第一运算子模块,第一运算子模块包括主运算子模块和从运算子模块,控制模块,用于从神经网络的目标数据中确定出多个待量化数据,并根据与各待量化数据对应的量化数据得到目标数据的量化结果,各待量化数据的量化数据是利用对应的量化参数进行量化得到的,量化参数包括点位置;第一运算子模块,用于进行与量化结果相关的运算,得到运算结果,其中,主运算子模块,用于将第一数据发送至从运算子模块,第一数据包括量化结果中根据点位置量化得到的第一类型的数据;从运算子模块,用于对接收到的第一数据进行乘法运算,得到中间结果;主运算子模块,还用于对中间结果和量化结果中的除第一数据之外的数据进行运算,得到运算结果。本公开实施例所提供的神经网络量化方法、装置、计算机设备和存储介质,利用对应的量化参数对目标数据中的多个待量化数据分别进行量化,且在通过第一运算子模块执行与量化结果相关的运算,在保证精度的同时,减小了存储数据所占用的存储空间,保证了运算结果的准确性和可靠性,且能够提高运算的效率,且量化同样缩减了神经网络模型的大小,降低了对运行该神经网络模型的终端的性能要求。
通过权要中的技术特征进行推导,能够达到对应背景技术中的技术问题的有益效果。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开实施例的神经网络量化装置的框图。
图2示出根据本公开实施例的对称的定点数表示的示意图。
图3示出根据本公开实施例的引入偏移量的定点数表示的示意图。
图4示出根据本公开实施例的神经网络量化方法的流程图。
图5示出根据本公开实施例的板卡的结构框图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
随着神经网络运算复杂度的提高,数据的数据量和数据维度也在不断增大,而传统的神经网络算法通常采用浮点数据格式来执行神经网络运算,这就使得不断增大的数据量等对运算装置的数据处理效率、存储装置的存储容量及访存效率等提出了较大的挑战。为解决上述问题,相关技术中,对神经网络运算过程涉及的全部数据均由浮点数转化定点数,但由于不同的数据之间具有差异性,或者,同一数据在不同阶段具有差异性,仅“由浮点数转化定点数”时,往往会导致精度不够,从而会影响运算结果。
神经网络中待运算数据通常为浮点数据格式或精度较高的定点数据格式,在承载神经网络的装置中运行神经网络时,浮点数据格式或精度较高的定点数据格式的各种待运算数据,导致神经网络运行的运算量和访存开销都较大。为提高运算效率,本公开实施例所提供的神经网络量化方法、装置、计算机设备和存储介质,可以根据不同类待运算数据进行神经网络中的待运算数据的局部量化,量化后的数据格式通常为位宽较短、精度较低的定点数据格式。利用精度较低的量化后数据执行神经网络的运算,可以降低运算量和访存量。量化后的数据格式可以为位宽较短的定点数据格式。可以将浮点数据格式的待运算数据量化为定点数据格式的待运算数据,也可以将精度较高的定点格式的待运算数据量化为精度较低的定点格式的待运算数据。利用对应的量化参数对数据进行局部量化,在保证精度的同时,减小了存储数据所占用的存储空间,保证了运算结果的准确性和可靠性,且能够提高运算的效率,且量化同样缩减了神经网络模型的大小,降低了对运行该神经网络模型的终端的性能要求,使神经网络模型可以应用于算力、体积、功耗相对受限的手机等终端。
可以理解的是,量化精度即量化后数据与量化前数据之间的误差的大小。量化精度可以影响神经网络运算结果的准确度。化精度越高,运算结果的准确率越高,但运算量更大、访存开销也更大。相较于位宽较短的量化后数据,位宽较长的量化后数据的量化精度更高,用于执行神经网络的运算时准确率也更高。但在用于进行神经网络的运算时,位宽较长的量化后数据运算量更大、访存开销也较大,运算效率较低。同理,对于相同的待量化数据,采用不同的量化参数得到的量化后数据有不同的量化精度,将产生不同的量化结果,对运算效率和运算结果的准确率也会带来不同的影响。对神经网络进行量化,在运算效率和运算结果的准确率之间进行平衡,可以采用更加符合待运算数据的数据特征的量化后数据位宽和量化参数。
神经网络中的待运算数据可以包括权值、神经元、偏置、梯度中的至少一种。待运算数据为包含多个元素的矩阵。在传统的神经网络量化中,通常将待运算数据的整体进行量化后进行运算。而在利用量化后的待运算数据进行运算时,通常利用整体量化后的待运算数据中的一部分数据进行运算。例如,在卷积层,利用整体量化后的输入神经元进行卷积运算时,根据卷积核的维度和步长,在整体量化后的输入神经元中分别提取与卷积核的维度相当的量化后的神经元进行卷积运算。在全连接层,利用整体量化后的输入神经元进行矩阵乘运算时,在整体量化后的输入神经元中分别按行提取量化后的神经元进行矩阵乘的运算。因此,在传统的神经网络量化方法中,将待运算数据的整体进行量化后再按照部分量化后的数据进行运算,整体的运算效率较低。且将待运算数据的整体量化后再进行运算,需要将整体量化后的待运算数据进行存储,占用的存储空间较大。
根据本公开实施例的神经网络量化方法可应用于处理器中,该处理器可以是通用处理器,例如CPU(Central Processing Unit,中央处理器),也可以是用于执行人工智能运算的人工智能处理器(IPU)。人工智能运算可包括机器学习运算,类脑运算等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器可例如包括GPU(Graphics Processing Unit,图形处理单元)、NPU(Neural-Network ProcessingUnit,神经网络处理单元)、DSP(Digital Signal Process,数字信号处理单元)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片中的一种或组合。本公开对处理器的具体类型不作限制。
在一种可能的实现方式中,本公开中所提及的处理器可包括多个处理单元,每个处理单元可以独立运行所分配到的各种任务,如:卷积运算任务、池化任务或全连接任务等。本公开对处理单元及处理单元所运行的任务不作限制。
图1示出根据本公开实施例的神经网络量化装置的框图。如图1所示,该装置可以包括控制模块11和处理模块12。处理模块12可以包括第一运算子模块121,第一运算子模块121包括主运算子模块1210和从运算子模块1211。
所述控制模块11,用于从神经网络的目标数据中确定多个待量化数据,并根据与各所述待量化数据对应的量化数据得到所述目标数据的量化结果,各所述待量化数据的量化数据是利用对应的量化参数进行量化得到的,所述量化参数包括点位置。
所述第一运算子模块121,用于进行与所述量化结果相关的运算,得到运算结果,其中,
所述主运算子模块1210,用于将第一数据发送至所述从运算子模块,所述第一数据包括所述量化结果中根据所述点位置量化得到的第一类型的数据。
所述从运算子模块1211,用于对接收到的所述第一数据进行乘法运算,得到中间结果。
所述主运算子模块1210,还用于对所述中间结果和所述量化结果中的除所述第一数据之外的数据进行运算,得到运算结果。
可以根据目标任务的任务类型、所需使用的待运算数据的数量、每个待运算数据的数据量,以及基于终端的计算精度、当前处理能力、存储能力等确定的精度需求,待运算数据所参与的运算类型等,确定从目标数据中确定出多个待量化数据的方式。
神经网络中的待量化层可以为神经网络中的任意一层。可以根据需求将神经网络中的部分层或全部层确定为待量化层。当神经网络中包括多个待量化层时,各待量化层可以连续也可以不连续。根据神经网络的不同,待量化层的种类也可以不同,例如待量化层可以为卷积层、全连接层等,本公开对待量化层的数量及类型不作限定。
在一种可能的实现方式中,所述待运算数据包括神经元、权值、偏置、梯度中的至少一种。可以根据需求将待量化层中的神经元、权值、偏置、梯度中的至少一种进行量化。目标数据为任意一种待量化的待运算数据。例如,待运算数据为神经元、权值和偏置,需要将神经元和权值进行量化,则神经元为目标数据1,权值为目标数据2。
当待量化层中有多种目标数据时,针对每种目标数据可以采用本公开中的量化方法进行量化后,得到与各目标数据对应的量化数据,再利用各种目标数据的量化数据和不需要进行量化的待运算数据执行待量化层的运算。
在一种可能的实现方式中,所述量化参数还可以包括偏移量和/或缩放系数,所述量化结果中还包括第二类型的数据,所述第二类型的数据包括用点位置表示的第一部分、以及用偏移量和/或缩放系数表示的第二部分的数据,所述第一数据还可以包括所述量化结果中第二类型的数据的第一部分。
在该实现方式中,量化结果为定点数,可以采用下述数据格式表示:
第一类型的数据为:Fixed_Style1=I×2S
第二类型的数据表示为:Fixed_Style2=I×2S×f+O
其中,I为定点数、是量化数据(或量化结果)的n为二进制表示值,s为点位置(包括下文所述的第一类点位置和第二类点位置),f为缩放系数(包括下文所述的第一类缩放系数和第二类缩放系数),o为偏移量。
其中,第二类型的数据的第一部分为I×2S,第二类型的数据的第二部分为f和o。
神经网络运算的推理阶段可包括:将训练好的神经网络进行前向运算以完成设定任务的阶段。在神经网络的推理阶段,可以将神经元、权值、偏置和梯度中的至少一种作为待量化数据,根据本公开实施例中的方法进行量化后,利用量化后的数据完成待量化层的运算。
神经网络运算的微调阶段可包括:将训练好的神经网络进行预设数量迭代的前向运算和反向运算,进行参数的微调以适应设定任务的阶段。在神经网络运算的微调阶段,可以将神经元、权值、偏置、梯度中的至少一种,根据本公开实施例中的方法进行量化后,利用量化后的数据完成待量化层的前向运算或反向运算。
神经网络运算的训练阶段可包括:将初始化的神经网络进行迭代训练以得到训练好的神经网络的阶段,训练好的神经网络可执行特定任务。在神经网络的训练阶段,可以将神经元、权值、偏置、梯度中的至少一种,根据本公开实施例中的方法进行量化后,利用量化后的数据完成待量化层的前向运算或反向运算。
可以将一个目标数据中的子集作为待量化数据,可以按照不同的方式将目标数据划分为多个子集,将每个子集作为一个待量化数据。将一个目标数据划分为多个待量化数据。可以根据目标数据所要进行的运算类型,将目标数据划分为多个待量化数据。例如,目标数据需要进行卷积运算时,可以根据卷积核的高度和宽度,将目标数据划分为与卷积核对应的多个待量化数据。目标数据为需要进行矩阵乘运算的左矩阵时,可以将目标数据按行划分为多个待量化数据。可以一次将目标数据划分为多个待量化数据,也可以按照运算的顺序,将目标数据依次划分为多个待量化数据。
也可以根据预先设定的数据划分方式,将目标数据划分为多个待量化数据。例如,预先设定的数据划分方式可以为:按照固定的数据大小进行划分,或按照固定的数据形状进行划分。
将目标数据划分为多个待量化数据后,可以将各待量化数据分别进行量化,并根据各待量化数据量化后的数据进行运算。一个待量化数据所需的量化时间,短于目标数据的整体的量化时间,将其中一个待量化数据量化完毕后,即可以用量化后的数据执行后续的运算,而不用等目标数据中的所有待量化数据均量化完成后再执行运算。因此本公开中的目标数据的量化方法,可以提高目标数据的运算效率。
待量化数据对应的量化参数可以为一个量化参数,也可以为多个量化参数。量化参数可以包括点位置等用于对待量化数据进行量化的参数。点位置可以用于确定量化后数据中小数点的位置。量化参数还可以包括缩放系数、偏移量等。
确定与待量化数据对应的量化参数的方式,可以包括:确定与目标数据对应的量化参数后,并将与目标数据对应的量化参数确定为待量化数据的量化参数的方式。当待量化层包括多个目标数据时,各目标数据均可以有与之对应的量化参数,且各目标数据对应的量化参数可以不同,也可以相同,本公开对此不作限定。将目标数据划分为多个待量化数据后,可以将目标数据对应的量化参数确定为各待量化数据对应的量化参数,此时各待量化数据对应的量化参数相同。
确定与待量化数据对应的量化参数的方式,也可以包括:直接确定各待量化数据对应的量化参数的方式。目标数据可以没有与之对应的量化参数,或目标数据可以有与之对应的量化参数但待量化数据不采用。可以直接为各待量化数据设定对应的量化参数。也可以根据待量化数据计算得到对应的量化参数。此时各待量化数据对应的量化参数可以相同也可以不同。例如,当待量化层为卷积层,目标数据为权重时,可以将权重按照通道划分为多个待量化权重数据,不同通道的待量化权重数据可以对应不同的量化参数。当各待量化数据对应的量化参数不同时,各待量化数据利用对应的量化参数进行量化后,所得到的量化结果需不影响目标数据的运算。
确定与目标数据对应的量化参数的方式、或确定与待量化数据对应的量化参数的方式,可以包括:查找预设的量化参数直接确定量化参数的方式、查找对应关系以确定量化参数的方式,或根据待量化数据计算得到量化参数的方式。以下以确定与待量化数据对应的量化参数的方式为例进行说明:
可以直接设定与待量化数据对应的量化参数。可以将设定好的量化参数存储于设定的存储空间。设定的存储空间可以为片上或片外的存储空间。例如,可以将设定好的量化参数存储于设定的存储空间。各待量化数据在进行量化时,可以在设定的存储空间提取对应的量化参数后进行量化。可以根据经验值设定与每种待量化数据对应的量化参数。也可以根据需求更新所存储的与每种待量化数据对应的量化参数。
可以根据各待量化数据的数据特征,通过查找数据特征与量化参数的对应关系,确定量化参数。例如,待量化数据的数据分布为稀疏和稠密时可以分别对应不同的量化参数。可以通过查找对应关系确定与待量化数据的数据分布对应的量化参数。
还可以根据各待量化数据,利用设定的量化参数计算方法,计算得到各待量化层对应的量化参数。例如,可以根据待量化数据的绝对值最大值和预设的数据位宽,利用取整算法计算得到量化参数中的点位置。
可以利用设定的量化算法,根据量化参数对待量化数据进行量化,得到量化数据。例如,可以利用取整算法作为量化算法,可以根据数据位宽和点位置对待量化数据进行取整量化得到量化数据。其中,取整算法可以包括向上取整、向下取整、向零取整和四舍五入取整等。本公开对量化算法的具体实现方式不作限定。
各待量化数据可以分别采用对应的量化参数进行量化。由于与各待量化数据对应的量化参数更为贴合各待量化数据自身的特征,使得各待量化层的每种量化数据的量化精度更加符合目标数据的运算需求,也就更加符合待量化层的运算需求。在保证待量化层的运算结果准确率的前提下,能够提高待量化层的运算效率,达到待量化层的运算效率和运算结果准确率之间的平衡。进一步的,将目标数据划分为多个待量化数据分别量化,可以在量化完一个待量化数据后,根据量化得到的量化结果执行运算的同时,可以进行第二个待量化数据的量化,从而在整体上提高目标数据的运算效率,也就提高了待量化层的计算效率。
可以将各待量化数据的量化数据进行合并后得到目标数据的量化结果。也可以将各待量化数据的量化数据进行设定的运算后得到目标数据的量化结果。例如可以将各待量化数据的量化数据按照设定的权重进行加权运算后得到目标数据的量化结果。本公开对此不作限定。
在神经网络的推理、训练和微调过程中,可以对待量化数据进行离线量化或在线量化。其中,离线量化可以为利用量化参数对待量化数据进行离线处理。在线量化可以为利用量化参数对待量化数据进行在线处理。例如,神经网络运行在人工智能芯片上,可以将待量化数据和量化参数发送至人工智能芯片之外的运算装置进行离线量化,或利用人工智能芯片之外的运算装置对预先得到的待量化数据和量化参数进行离线量化。而在人工智能芯片运行神经网络的过程中,人工智能芯片可以对待量化数据利用量化参数进行在线量化。本公开中对各待量化数据的量化过程为在线或离线不作限定。
在本实施例所提供的神经网络量化方法,控制模块将目标数据划分为多个待量化数据后,根据与各待量化数据对应的量化数据得到目标数据的量化结果,利用第一运算子模块进行与所述量化结果相关的运算,得到运算结果。其中,利用主运算子模块向从运算子模块发送第一数据,利用从运算子模块对接收到的所述第一数据进行乘法运算得到中间结果,利用所述主运算子模块对所述中间结果和所述量化结果中的除所述第一数据之外的数据进行运算,得到运算结果。各待量化数据的量化过程与主运算子模块、从运算子模块的运算过程可以并行执行,从而可以提高目标数据的量化效率和运算效率,也可以提高待量化层直至提高整个神经网络的量化效率和运算效率。
在一种可能的实现方式中,在对目标数据进行量化的过程中可以采用与目标数据对应的量化参数进行量化。而将目标数据划分为多个待量化数据后,可以采用与各待量化数据对应的量化参数进行量化。与各待量化数据对应的量化参数,可以采用预设的方式或根据待量化数据计算的方式,无论采用何种方式确定与各待量化数据对应的量化参数,都可以使得各待量化数据的量化参数,更加符合待量化数据自身的量化需求。例如,当根据目标数据计算得到对应的量化参数时,可以利用目标数据中各元素的最大值和最小值计算得到量化参数。而在根据待量化数据计算得到对应的量化参数时,可以利用待量化数据中各元素的最大值和最小值计算得到量化参数,待量化数据的量化参数比目标数据的量化参数能够更加贴合待量化数据的数据特征,可以使得待量化数据的量化结果更加准确,量化精度更高。
在一种可能的实现方式中,如图1所示,处理模块12还可以包括数据转换子模块122。
数据转换子模块122,用于对待转换数据进行格式转换,得到转换后数据,所述转换后数据的格式类型包括第一类型和第二类型中的任一种,其中,所述待转换数据包括所述目标数据中未进行量化处理的数据,所述第一数据还包括第一类型的转换后数据和/或第二类型的转换后数据中的第一部分,
所述主运算子模块1210,还用于对所述中间结果、所述量化结果中的除所述第一数据之外的数据和所述转换后数据中的除所述第一数据之外的数据进行运算,得到运算结果。
在该实现方式中,待转换数据还可以包括其余数据格式与第一类型和第二类型均不相同的、且需与量化结果共同进行乘法运算的数据,本公开对此不作限制。
举例来说,假定需要进行乘法运算的是数据Fixed1和数据Fixed2,其中,当将数据Fixed1与数据Fixed2进行乘法运算时,主运算子模块可以将Fixed1和Fixed2作为第一数据发送至从运算子模块,使得从运算子模块实现Fixed1和Fixed2的乘法运算,得到中间结果。
假定需要进行乘法运算的是数据Fixed1和数据FP3, 当将数据Fixed1和数据FP3进行乘法运算时,Fixed1×FP3=f3×Fixed1×Fixed3+Fixed1×O3。主运算子模块可以将Fixed1和Fixed3作为第一数据发送至从运算子模块,使得从运算子模块实现Fixed1和Fixed3的乘法运算,得到中间结果。
假定需要进行乘法运算的是数据FP4和数据FP5。 当将数据FP4和数据FP5进行乘法运算时,FP4×FP5=f4×f5×Fixed4×Fixed5+Fixed4×f4×o5+Fixed5×f5×o4+o4×o5。主运算子模块可以将Fixed4和Fixed5作为第一数据发送至从运算子模块,使得从运算子模块实现Fixed4和Fixed5的乘法运算,得到中间结果。
在一种可能的实现方式中,量化结果可以是以第一类型或者第二类型的格式表示,第一运算子模块可以直接对量化结果进行运算。量化结果也可以是未转化为第一类型或者第二类型的的待转换量化结果进行格式转换后得到的,其中,所述数据转换子模块122,还用于对根据与各所述待量化数据对应的量化数据得到所述目标数据的待转换量化结果进行格式转换,得到所述量化结果。
在一种可能的实现方式中,控制模块采用以下至少一种方式(也即方式1-方式5)确定多个待量化数据。
方式1:将一层或多层待量化层中的目标数据确定为一个待量化数据。
在神经网络包括多个待量化层时,可以根据目标任务和终端的精度需求确定终端每一次所能量化的数据的量化数据量,进而根据不同量化层中目标数据的数据量以及量化数据量,将一个或多个待量化层中的目标数据确定为一个待量化数据。例如,将一个待量化层中的输入神经元确定为一个待量化数据。
方式2:将一层或多层待量化层中的同一种待运算数据确定为一个待量化数据。
在神经网络包括多个待量化层时,可以根据目标任务和终端的精度需求确定终端每一次所能量化的数据的量化数据量,进而根据不同量化层中目标数据的数据量以及量化数据量,将一个或多个待量化层中的某一种目标数据确定为一个待量化数据。例如,将全部待量化层中的输入神经元确定为一个待量化数据。
方式3:将对应待量化层的目标数据中一个或多个通道中的数据确定为一个待量化数据。
在待量化层为卷积层时,待量化层中含有通道,可以根据通道以及根据目标任务和终端的精度需求所确定的终端每一次所能量化的数据的量化数据量,将一个或多个通道中的数据确定为一个待量化数据。例如,对于某个卷积层,可以将2个通道中的目标数据确定为一个待量化数据。或者可以将每一个通道中的目标数据确定为一个待量化数据。
方式4:将对应待量化层的目标数据中一个或多个批数的数据确定为一个待量化数据;
在待量化层为卷积层时,在卷积层的输入神经元的维度可以包括批数(batch,B)、通道(channel,C)、高度(height,H)和宽度(width,W)。当输入神经元的批数为多个时,各批数的输入神经元可以看作维度为通道、高度和宽度的三维数据。各批数的输入神经元可以对应多个卷积核,各批数的输入神经元的通道数,和与之对应的各卷积核的通道数一致。
对于任意一个批数的输入神经元,以及对于与该批数的输入神经元对应的多个卷积核中的任意一个卷积核,可以根据量化数据量和该批数的输入神经元的数据量,将该批次的输入神经元与该卷积核对应的部分数据(子集),确定为该批次的输入神经元与该卷积核对应的多个待量化数据。例如,假定目标数据B1有3个批数的数据,若将目标数据中一个批数的数据确定为一个待量化数据,则该目标数据B可以被划分为3个待量化数据。
可以根据卷积核的维度和步长,将输入神经元划分得到全部的待量化数据后,将各待量化数据并行地执行量化过程。由于待量化数据的数据量小于输入神经元,对一个待量化数据进行量化的计算量,小于对输入神经元进行整体量化的计算量,因此,本实施例中的量化方法可以提高输入神经元的量化速度,提高量化效率。也可以将输入神经元根据卷积核的维度和步长进行划分,依次得到各待量化数据后,将得到的各待量化数据分别与卷积核进行卷积运算。各待量化数据的量化过程和卷积运算过程可以并行执行,本实施例中的量化方法可以提高输入神经元的量化效率和运算效率。
方式5:将对应待量化层中的目标数据按照确定的划分尺寸划分为一个或多个待量化数据。
可以根据目标任务和终端的精度需求确定终端的实时处理能力确定划分尺寸。终端的实时处理能力可以包括:终端对目标数据进行量化的速度,对量化后数据进行运算的速度,对目标数据进行量化和运算时终端所能处理的数据量等表征终端处理目标数据的处理能力相关的信息。例如,可以根据对目标数据进行量化的速度和对量化后数据进行运算的速度,确定待量化数据的尺寸,以使得对待量化数据进行量化的时间与对量化后数据进行运算的速度相同,这样可以量化和运算同步进行,可以提高目标数据的运算效率。终端的实时处理能力越强,待量化数据的尺寸越大。
在本实施例中,可以根据需要对确定待量化数据的方式进行设置,待量化数据可以包括一种待运算数据如输入神经元(也可以是权值、偏置、梯度,以下以输入神经元为例进行说明),该待运算数据可以是某一个待量化层中的部分或全部输入神经元,也可以是多个待量化层中的、包括每个待量化层中的全部或部分输入神经元。待量化数据还可以是对应于待量化层某一个通道的全部或部分输入神经元,或者对应于待量化层几个通道的全部输入神经元。待量化数据也可以是某一个输入神经元的部分或全部等等。也就是说,可以根据任意的方式对目标数据进行划分,本公开对此不作限制。
在一种可能的实现方式中,如图1所示,处理模块12还可以包括第二运算子模块123。第二运算子模块123,用于进行所述装置中除所述第一运算子模块所执行的运算处理之外的运算处理。
通过上述方式,利用第一运算子模块进行上述第一类型和第二类型的定点数据之间的乘法运算,利用第二运算子模块进行其他运算处理,可以加快装置对数据进行运算的运算效率和速度。
在一种可能的实现方式中,如图1所示,控制模块11还可以包括指令存储子模块111、指令处理子模块112和队列存储子模块113。
指令存储子模块111用于存储对应于所述神经网络的指令。
指令处理子模块112用于对所述指令进行解析,得到所述指令的操作码和操作域。
队列存储子模块113用于存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括对应于所述神经网络的指令。
在该实现方式中,可以根据待执行指令的接收时间、优先级别等对多个待执行指令的执行顺序进行排列获得指令队列,以便于根据指令队列依次执行多个待执行指令。
在一种可能的实现方式中,如图1所示,控制模块11可以包括依赖关系处理子模块114。
依赖关系处理子模块114,用于在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,将第一待执行指令缓存在指令存储子模块111中,在第零待执行指令执行完毕后,从指令存储子模块111中提取第一待执行指令发送至处理模块12。其中,第一待执行指令和第零待执行指令是多个待执行指令中的指令。
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。反之,第一待执行指令与第零待执行指令之间没有关联关系可以是第一存储地址区间与第零存储地址区间没有重叠区域。
通过这种方式,可以根据待执行指令之间的依赖关系,使得在先的待执行指令执行完毕之后,再执行在后的待执行指令,保证运算结果的准确性。
在一种可能的实现方式中,如图1所示,该装置还可以包括存储模块10。存储模块10用于存储量化参数、待运算数据、量化结果等与神经网络运算相关的计算数据。
在该实现方式中,存储模块可以包括缓存202和寄存器201中的一种或多种,缓存202可以包括速暂存缓存,还可以包括至少一个NRAM(Neuron Random Access Memory,神经元随机存取存储器)。缓存202可以用于存储计算数据,寄存器201可以用于存储计算数据中的标量。
在一种可能的实现方式中,缓存可以包括神经元缓存。神经元缓存也即上述神经元随机存取存储器,可以用于存储计算数据中的神经元数据,神经元数据可以包括神经元向量数据。
在一种可能的实现方式中,存储模块10可以包括数据I/O单元203,用于控制计算数据的输入和输出。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块50,用于从存储模块中读取或者存储数据、从外部设备/其他部件中读取或存储数据,实现存储模块、与外部设备/其他部件之间的数据传输。
在一种可能的实现方式中,控制模块可以包括参数确定子模块。参数确定子模块用于根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数。
在该实现方式中,可以对待量化数据进行统计,根据统计结果和数据位宽确定待量化数据对应的量化参数。量化参数可以包括点位置、缩放系数和偏移量中的一种或多种。
在一种可能的实现方式中,参数确定子模块可以包括:
第一点位置确定子模块,用于当所述量化参数不包括偏移量时,根据各所述待量化数据中的绝对值最大值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)进行计算:
在一种可能的实现方式中,所述参数确定子模块,可以包括:
偏移量确定子模块,用于根据各所述待量化数据中的最大值和最小值,得到各所述待量化数据的偏移量。
在该实现方式中,图2示出根据本公开实施例的对称的定点数表示的示意图。如图2所示的待量化数据的数域是以“0”为对称中心分布。Z1为待量化数据的数域中所有浮点数的绝对值最大值,在图2中,A1为n位定点数可以表示的浮点数的最大值,浮点数A1转换为定点数是(2n-1-1)。为了避免溢出,A1需要包含Z1。在实际运算中,神经网络运算过程中的浮点数据趋向于某个确定区间的正态分布,但是并不一定满足以“0”为对称中心的分布,这时用定点数表示时,容易出现溢出情况。为了改善这一情况,量化参数中引入偏移量。图3示出根据本公开实施例的引入偏移量的定点数表示的示意图。如图3所示。待量化数据的数域不是以“0”为对称中心分布,Zmin是待量化数据的数域中所有浮点数的最小值,Zmax是待量化数据的数域中所有浮点数的最大值,A2为用n位定点数表示的平移后的浮点数的最大值,A2为P为Zmin~Zmax之间的中心点,将待量化数据的数域整体偏移,使得平移后的待量化数据的数域以“0”为对称中心分布,以避免数据的“溢出”。平移后的待量化数据的数域中的绝对值最大值为Z2。由图3可知,偏移量为“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为进行四舍五入的取整运算。
量化参数可以包括第一类点位置s1时,可以根据公式(11)对目标数据的量化数据进行反量化,得到目标数据的反量化数据
在一种可能的实现方式中,量化参数可以包括第一类点位置和第一缩放系数。可以利用如下的公式(12)对待量化数据进行量化,得到量化数据Ix:
当量化参数包括第一类点位置和第一缩放系数时,可以根据公式(13)对目标数据的量化数据进行反量化,得到目标数据的反量化数据
在一种可能的实现方式中,量化参数可以包括第二缩放系数。可以利用如下的公式(14)对待量化数据进行量化,得到量化数据Ix:
当量化参数包括第二缩放系数时,可以根据公式(15)对目标数据的量化数据进行反量化,得到目标数据的反量化数据
在一种可能的实现方式中,量化参数可以包括偏移量。可以利用如下的公式(16)对待量化数据进行量化,得到量化数据Ix:
Ix=round(Fx-o)公式(16)
当量化参数包括偏移量时,可以根据公式(17)对目标数据的量化数据进行反量化,得到目标数据的反量化数据
在一种可能的实现方式中,量化参数可以包括第二类点位置和偏移量。可以利用如下的公式(18)对待量化数据进行量化,得到量化数据Ix:
当量化参数包括第二类点位置和偏移量时,可以根据公式(19)对目标数据的量化数据进行反量化,得到目标数据的反量化数据
在一种可能的实现方式中,量化参数可以包括第二类缩放系数f”和偏移量o。可以利用如下的公式(20)对待量化数据进行量化,得到量化数据Ix:
当量化参数包括第二类缩放系数和偏移量时,可以根据公式(21)对目标数据的量化数据进行反量化,得到目标数据的反量化数据
在一种可能的实现方式中,量化参数可以包括第二类点位置、第二类缩放系数和偏移量。可以利用如下的公式(22)对待量化数据进行量化,得到量化数据Ix:
当量化参数包括第二类点位置、第二类缩放系数和偏移量时,可以根据公式(23)对目标数据的量化数据进行反量化,得到目标数据的反量化数据
可以理解的是,也可以采用其他的取整运算方法,例如采用向上取整、向下取整、向零取整等取整运算,替换上述公式中的四舍五入的取整运算round。可以理解的是,在数据位宽一定的情况下,根据点位置量化得到的量化数据中,小数点后的位数越多,量化数据的量化精度越大。
在一种可能的实现方式中,控制模块还可以通过查找待量化数据与量化参数对应关系,确定与所述待量化层中每种待量化数据对应的量化参数。
在一种可能的实现方式中,各待量化层中与每种待量化数据对应的量化参数,可以是保存的预设值。可以为神经网络建立一个待量化数据与量化参数之间的对应关系,该对应关系可以包括各待量化层的每种待量化数据与量化参数对应关系,并将对应关系保存在各层可以共享访问的存储空间。也可以为神经网络建立多个待量化数据与量化参数之间的对应关系,各待量化层分别对应其中一个对应关系。可以将各层的对应关系保存在本层独享的存储空间,也可以将各层的对应关系保存在各层可以共享访问的存储空间。
在待量化数据与量化参数对应关系中,可以包括多个待量化数据和与之对应的多个量化参数之间的对应关系。例如,待量化数据与量化参数对应关系A中,可以包括待量化层1的神经元和权值两个待量化数据,神经元对应点位置1、缩放系数1和偏移量1共三个量化参数,权值对应点位置2和偏移量2共两个量化参数。本公开对待量化数据与量化参数对应关系的具体格式不作限定。
在本实施例中,可以通过查找待量化数据与量化参数对应关系,确定与所述待量化层中每种待量化数据对应的量化参数。可以为各待量化层预设对应的量化参数,并通过对应关系进行存储后,供待量化层查找后使用。本实施例中量化参数的获取方式简单方便。
在一种可能的实现方式中,控制模块还可以包括:第一量化误差确定子模块、调整位宽确定子模块和调整量化参数确定子模块。
第一量化误差确定子模块,用于根据各所述待量化数据和各所述待量化数据对应的量化数据,确定各所述待量化数据对应的量化误差。
可以根据待量化数据对应的量化数据与待量化数据之间的误差,确定待量化数据的量化误差。可以利用设定的误差计算方法,例如标准差计算方法、均方根误差计算方法等,计算待量化数据的量化误差。
也可以根据量化参数,将待量化数据对应的量化数据进行反量化后得到反量化数据,根据反量化数据与待量化数据之间的误差,按照公式(24)确定待量化数据的量化误差diffbit。
其中,Fi为待量化对应的浮点值,其中,i为待量化数据中数据的下标。为浮点值对应的反量化数据。
还可以根据量化间隔、量化后的数据的个数以及对应的量化前的数据按照公式(25)确定量化误差diffbit。
其中,C为量化时对应的量化间隔,m为量化后获得的量化数据的个数,Fi为待量化对应的浮点值,其中,i为待量化数据中数据的下标。
也可以根据量化后的数据以及对应的反量化数据按照公式(26)确定量化误差diffbit。
其中,Fi为待量化对应的浮点值,其中,i为待量化数据集合中数据的下标。为浮点值对应的反量化数据。
调整位宽确定子模块,用于根据各所述待量化数据对应的量化误差和误差阈值,调整各所述待量化数据对应的数据位宽,得到各所述待量化数据对应的调整位宽。
可以根据经验值确定误差阈值,误差阈值可以用于表示对量化误差的期望值。当量化误差大于或小于误差阈值时,可以调整待量化数对应的数据位宽,得到待量化数据对应的调整位宽。可以将数据位宽调整为更长的位宽或更短的位宽,以提高或降低量化精度。
可以根据能够接受的最大误差确定误差阈值,当量化误差大于误差阈值时,说明量化精度不能达到预期,需要将数据位宽调整为更长的位宽。也可以根据较高的量化精度确定一个较小的误差阈值,当量化误差小于误差阈值时,说明量化精度较高,神经网络的运行效率将受到影响,可以适当的将数据位宽调整为更短的位宽,以适当的降低量化精度,提高神经网络的运行效率。
可以将数据位宽按照固定的位数步长进行调整,也可以根据量化误差与误差阈值之间的差值的不同,按照可变的调整步长调整数据位宽。本公开对此不作限定。
调整量化参数确定子模块,用于将各所述待量化数据对应的数据位宽更新为对应的调整位宽,根据各所述待量化数据和对应的调整位宽计算得到对应的调整量化参数,以使各所述待量化数据根据所述对应的调整量化参数进行量化。
确定调整位宽后,可以将待量化数据对应的数据位宽更新为调整位宽。例如,待量化数据更新前的数据位宽为8位,调整位宽为12位,则更新后待量化数据对应的数据位宽为12位。可以根据调整位宽和待量化数据计算得到待量化数据对应的调整量化参数。可以根据待量化数据对应的调整量化参数重新对待量化数据进行量化,以得到量化精度更高或更低的量化数据,使得待量化层在量化精度和处理效率之间达到平衡。
在神经网络的推理、训练和微调过程中,各层之间的待量化数据可以认为具有一定的关联性。例如,各层的待量化数据之间的均值之间的差小于设定的均值阈值,且各层的待量化数据之间的最大值之间的差值也小于设定的差值阈值时,可以将待量化层的调整量化参数作为后续的一个或多个层的调整量化参数,用于对待量化层后续的一个或多个层的待量化数据进行量化。也可以在神经网络的训练和微调过程中,将待量化层在当前迭代得到的调整量化参数,用于在后续的迭代中对待量化层进行量化。
在一种可能的实现方式中,所述控制模块还用于在所述待量化层之后的一层或多层采用所述待量化层的量化参数。
神经网络根据调整量化参数进行量化,可以包括只在待量化层利用调整量化参数对待量化数据重新进行量化,并将重新得到的量化数据用于待量化层的运算。也可以包括在待量化层不使用调整量化参数重新对待量化数据进行量化,而在待量化层后续的一个或多个层使用调整量化参数进行量化,和/或后续的迭代中在待量化层使用调整量化参数进行量化。还可以包括在待量化层使用调整量化参数重新进行量化,并将重新得到的量化数据用于待量化层的运算,并且在待量化层后续的一个或多个层使用调整量化参数进行量化,和/或后续的迭代中在待量化层使用调整量化参数进行量化。本公开对此不作限定。
在本实施例中,根据待量化数据和待量化数据对应的量化数据之间的误差调整数据位宽,并根据调整后的数据位宽计算得到调整量化参数。通过设置不同的误差阈值可以得到不同的调整量化参数,达到提高量化精度或提高运行效率等不同的量化需求。根据待量化数据和待量化数据的量化数据计算得到的调整量化参数,也能够更加符合待量化数据自身的数据特征,达到更加符合待量化数据自身需求的量化结果,在量化精度和处理效率之间达到更好的平衡。
在一种可能的实现方式中,所述调整位宽确定子模块可以包括第一调整位宽确定子模块。第一调整位宽确定子模块,用于当所述量化误差大于第一误差阈值时,增加所述对应的数据位宽,得到所述对应调整位宽。
可以根据能够接受的最大的量化误差,确定第一误差阈值。可以将量化误差与第一误差阈值进行比较。当量化误差大于第一误差阈值时,可以认为量化误差已经不可接受。需要提高量化精度,可以通过增加待量化数据对应的数据位宽的方式,提高待量化数据的量化精度。
可以将待量化数据对应的数据位宽按照固定的调整步长增加,得到调整位宽。固定的调整步长可以为N位,N为正整数。每次调整数据位宽可以增加N位。每次增加后的数据位宽=原数据位宽+N位。
可以将待量化数据对应的数据位宽按照可变的调整步长增加,得到调整位宽。例如,当量化误差与误差阈值之间的差值大于第一阈值时,可以按照调整步长M1调整数据位宽,当量化误差与误差阈值之间的差值小于第一阈值时,可以按照调整步长M2调整数据位宽,其中,第一阈值大于第二阈值,M1大于M2。可以根据需求确定各可变的调整步长。本公开对数据位宽的调整步长及调整步长是否可变不作限定。
可以将待量化数据按照调整位宽计算得到调整后的量化参数。利用调整后的量化参数对待量化数据进行重新量化后得到的量化数据,比利用调整前的量化参数量化得到的量化数据的量化精度更高。
在一种可能的实现方式中,控制模块还可以包括第一调整后量化误差子模块和第一调整位宽循环确定模块。
第一调整后量化误差子模块,用于根据各所述待量化数据和对应的调整位宽计算各所述待量化数据调整后的量化误差;
第一调整位宽循环确定模块,用于根据所述调整后的量化误差和所述第一误差阈值继续增加所述对应的调整位宽,直至所述调整后的量化误差小于或等于所述第一误差阈值。
根据量化误差增加待量化数据对应的数据位宽时,调整一次位宽后得到调整位宽,根据调整位宽计算得到调整后的量化参数,根据调整后的量化参数量化待量化数据得到调整后的量化数据,再根据调整后的量化数据与待量化数据计算得到待量化数据调整后的量化误差,调整后的量化误差可能依然大于第一误差阈值,即根据调整一次的数据位宽可能不能满足调整目的。当调整后的量化误差依然大于第一误差阈值时,可以继续对调整后的数据位宽进行调整,即多次增加待量化数据对应的数据位宽,直至根据最终得到的调整位宽和待量化数据得到的调整后的量化误差小于第一误差阈值。
多次增加的调整步长可以是固定的调整步长,也可以是可变的调整步长。例如,最终的数据位宽=原数据位宽+B*N位,其中N为每次增加的固定的调整步长,B为数据位宽的增加次数。最终的数据位宽=原数据位宽+M1+M2+…+Mm,其中,M1、M2…Mm为每次增加的可变的调整步长。
在本实施例中,当量化误差大于第一误差阈值时,增加所述待量化数据对应的数据位宽,得到所述待量化数据对应的调整位宽。可以通过设置第一误差阈值和调整步长增加数据位宽,以使调整后的数据位宽能够满足量化的需求。当一次调整不能满足调整需求时,还可以对数据位宽进行多次调整。第一误差阈值和调整步长的设置,使得量化参数可以按照量化需求进行灵活调整,满足不同的量化需求,使得量化精度可根据自身数据特征进行自适应调整。
在一种可能的实现方式中,所述调整位宽确定子模块还可以包括第二调整位宽确定子模块。
第二调整位宽确定子模块,用于当所述量化误差小于第二误差阈值时,增加所述对应的数据位宽,得到所述对应调整位宽,所述第二误差阈值小于所述第一误差阈值
可以根据能够接受的量化误差和期望的神经网络的运行效率,确定第二误差阈值。可以将量化误差与第二误差阈值进行比较。当量化误差小于第二误差阈值时,可以认为量化误差超出预期,但运行效率过低已经不可接受。可以降低量化精度以提高神经网络的运行效率,可以通过减少待量化数据对应的数据位宽的方式,降低待量化数据的量化精度。
可以将待量化数据对应的数据位宽按照固定的调整步长减少,得到调整位宽。固定的调整步长可以为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)计算第一数据变动幅度diffupdate1:
diffupdate1=|m(t)-m(t-1)|=α|s(t)-m(t-1)|公式(28)
可以根据第一数据变动幅度,确定待量化数据对应的目标迭代间隔,以使神经网络根据目标迭代间隔更新所述待量化数据的量化参数。可以根据公式(29)计算得到目标迭代间隔I:
其中,β为第二参数,γ为第三参数。第二参数和第三参数可以为超参数。
可以理解的是,第一数据变动幅度可以用于衡量点位置的变化趋势,第一数据变动幅度越大,说明量化数据的数值范围变化剧烈,在更新量化参数时需要间隔更短的目标迭代间隔I。
在本实施例中,计算所述第一滑动平均值和所述第二滑动平均值的差值;将差值的绝对值确定为第一数据变动幅度。根据滑动平均值之间的差值可以得到精确的第一数据变动幅度。
在一种可能的实现方式中,控制模块还可以包括第二数据变动幅度确定子模块,目标迭代间隔确定子模块可以包括第二目标迭代间隔确定子模块。
第二数据变动幅度确定子模块,用于根据在当前迭代所述待量化数据和所述待量化数据对应的量化数据,得到第二数据变动幅度;
第二目标迭代间隔确定子模块,用于根据所述待量化数据的第一数据变动幅度和所述第二数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。
可以根据在当前迭代所述待量化数据和所述待量化数据对应的量化数据,得到第二数据变动幅度。也可以根据在当前迭代所述待量化数据和所述待量化数据对应的反量化数据,得到第二数据变动幅度。
同样的,可以根据公式(30)计算得到在当前迭代中,所述待量化数据和所述待量化数据对应的反量化数据之间的第二数据变动幅度diffbit。也可以利用其它误差的计算方法,计算待量化数据和反量化数据之间的第二数据变动幅度diffbit。本公开对此不作限定。
其中,zi为待量化数据,zi (n)为待量化数据对应的反量化数据。可以理解的是,第二数据变动幅度可以用于衡量待量化数据对应的数据位宽的变化趋势,第二数据变动幅度越大,待量化数据越有可能需要更新对应的数据位宽,需要间隔更短的迭代进行更新,则第二数据变动幅度越大,需要目标迭代间隔更小。
在本实施例中,根据在当前迭代所述待量化数据和所述待量化数据对应的量化数据,得到第二数据变动幅度。根据所述待量化数据的第一数据变动幅度和所述第二数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。第二数据变动幅度可以用于衡量数据位宽的变动需求,则根据第一数据变动幅度和第二数据变动幅度计算得到的目标迭代间隔,可以同时跟踪点位置和数据位宽的变动,目标迭代间隔也可以更加符合待量化数据自身的数据量化需求。
在一种可能的实现方式中,根据在当前迭代所述待量化数据和所述待量化数据对应的量化数据,得到第二数据变动幅度,可以包括:
计算在当前迭代所述待量化数据和所述待量化数据对应的量化数据之间的误差;
将所述误差的平方确定为所述第二数据变动幅度。
可以利用公式(31)计算得到第二数据变动幅度diffupdate2:
diffupdate2=δ*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个迭代确定的数据位宽或点位置等量化参数。
在本实施例中,可以设置周期间隔,在神经网络运算的训练或微调达到稳定后,根据周期间隔,每周期更新一次数据位宽或点位置等量化参数。周期间隔可以在训练稳定或微调稳定后,减少数据位宽或点位置的更新次数,在保证量化精度的同时,提高神经网络的运行效率。
应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本公开各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic RandomAccess 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)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
图4示出根据本公开一实施例的神经网络量化方法的流程图。如图4所示,该方法应用于神经网络量化装置,所述装置包括控制模块和处理模块,所述处理模块包括第一运算子模块,所述第一运算子模块包括主运算子模块和从运算子模块,所述方法包括步骤S11和步骤S12。
在步骤S11中,利用所述控制模块从神经网络的目标数据中确定出多个待量化数据,并根据与各所述待量化数据对应的量化数据得到所述目标数据的量化结果,各所述待量化数据的量化数据是利用对应的量化参数进行量化得到的,所述量化参数包括点位置;
在步骤S12中,利用所述第一运算子模块进行与所述量化结果相关的运算,得到运算结果,其中,步骤S12包括:
利用所述主运算子模块将第一数据发送至所述从运算子模块,所述第一数据包括所述量化结果中根据所述点位置量化得到的第一类型的数据;
利用所述从运算子模块对接收到的所述第一数据进行乘法运算,得到中间结果;
利用所述主运算子模块对所述中间结果和所述量化结果中的除所述第一数据之外的数据进行运算,得到运算结果。
在一种可能的实现方式中,所述量化参数还包括偏移量和/或缩放系数,所述量化结果中还包括第二类型的数据,所述第二类型的数据包括用点位置表示的第一部分、以及用偏移量和/或缩放系数表示的第二部分的数据,
所述第一数据还包括所述量化结果中第二类型的数据的第一部分。
在一种可能的实现方式中,所述处理模块还包括数据转换子模块,所述方法还包括:
利用所述数据转换子模块对待转换数据进行格式转换,得到转换后数据,所述转换后数据的格式类型包括第一类型和第二类型中的任一种,其中,所述待转换数据包括所述目标数据中未进行量化处理的数据,所述第一数据还包括第一类型的转换后数据和/或第二类型的转换后数据中的第一部分,
其中,利用所述主运算子模块对所述中间结果和所述量化结果中的除所述第一数据之外的数据进行运算,得到运算结果,包括:
利用所述主运算子模块对所述中间结果、所述量化结果中的除所述第一数据之外的数据和所述转换后数据中的除所述第一数据之外的数据进行运算,得到运算结果。
在一种可能的实现方式中,所述方法还包括:
利用所述数据转换子模块对根据与各所述待量化数据对应的量化数据得到所述目标数据的待转换量化结果进行格式转换,得到所述量化结果。
在一种可能的实现方式中,各所述待量化数据均为所述目标数据的子集,所述目标数据为所述神经网络的待量化层的任意一种待量化的待运算数据,所述待运算数据包括输入神经元、权值、偏置、梯度中的至少一种。
在一种可能的实现方式中,利用所述控制模块从神经网络的目标数据中确定出多个待量化数据,包括以下至少一种方式:
将一层或多层待量化层中的目标数据确定为一个待量化数据;
将一层或多层待量化层中的同一种待运算数据确定为一个待量化数据;
将对应待量化层的目标数据中一个或多个通道中的数据确定为一个待量化数据;
将对应待量化层的目标数据中一个或多个批数的数据确定为一个待量化数据;
将对应待量化层中的目标数据按照确定的划分尺寸划分为一个或多个待量化数据。
在一种可能的实现方式中,所述处理模块还包括第二运算子模块,所述方法还包括:
利用所述第二运算子模块进行所述装置中除所述第一运算子模块所执行的运算处理之外的运算处理。
在一种可能的实现方式中,所述方法还包括:
根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数。
在一种可能的实现方式中,根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数,包括:
当所述量化参数不包括偏移量时,根据各所述待量化数据中的绝对值最大值和对应的数据位宽,得到各所述待量化数据的第一类点位置。
在一种可能的实现方式中,根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数,包括:
当所述量化参数不包括偏移量时,根据各所述待量化数据和对应的数据位宽得到量化后数据的最大值;
根据各所述待量化数据中的绝对值最大值和所述量化后数据的最大值,得到各所述待量化数据的第一类缩放系数。
在一种可能的实现方式中,根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数,包括:
当所述量化参数包括偏移量时,根据各所述待量化数据中的最大值、最小值和对应的数据位宽,得到各所述待量化数据的第二类点位置。
在一种可能的实现方式中,根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数,包括:
当所述量化参数包括偏移量时,根据各所述待量化数据和对应的数据位宽得到量化后数据的最大值;
根据各所述待量化数据中的最大值、最小值和量化后数据的最大值,得到各所述待量化数据的第二类缩放系数。
在一种可能的实现方式中,根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数,包括:
根据各所述待量化数据中的最大值和最小值,得到各所述待量化数据的偏移量。
在一种可能的实现方式中,所述方法还包括:
根据各所述待量化数据和各所述待量化数据对应的量化数据,确定各所述待量化数据对应的量化误差;
根据各所述待量化数据对应的量化误差和误差阈值,调整各所述待量化数据对应的数据位宽,得到各所述待量化数据对应的调整位宽;
将各所述待量化数据对应的数据位宽更新为对应的调整位宽,根据各所述待量化数据和对应的调整位宽计算得到对应的调整量化参数,以使各所述待量化数据根据所述对应的调整量化参数进行量化。
在一种可能的实现方式中,根据各所述待量化数据对应的量化误差和误差阈值,调整各所述待量化数据对应的数据位宽,得到各所述待量化数据对应的调整位宽,包括:
当所述量化误差大于第一误差阈值时,增加所述对应的数据位宽,得到所述对应调整位宽。
在一种可能的实现方式中,所述方法还包括:
根据各所述待量化数据和对应的调整位宽计算各所述待量化数据调整后的量化误差;
根据所述调整后的量化误差和所述第一误差阈值继续增加所述对应的调整位宽,直至所述调整后的量化误差小于或等于所述第一误差阈值。
在一种可能的实现方式中,根据各所述待量化数据对应的量化误差和误差阈值,调整各所述待量化数据对应的数据位宽,得到各所述待量化数据对应的调整位宽,包括:
当所述量化误差小于第二误差阈值时,增加所述对应的数据位宽,得到所述对应调整位宽,所述第二误差阈值小于所述第一误差阈值。
在一种可能的实现方式中,所述方法还包括:
根据所述调整位宽和所述待量化数据计算所述待量化数据调整后的量化误差;
根据所述调整后的量化误差和所述第二误差阈值继续减少所述调整位宽,直至根据调整位宽和所述待量化数据计算得到的调整后的量化误差大于或等于所述第二误差阈值。
在一种可能的实现方式中,在所述神经网络运算的微调阶段和/或训练阶段,所述方法还包括:
获取当前迭代以及历史迭代中待量化数据的数据变动幅度,所述历史迭代为所述当前迭代之前的迭代;
根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述待量化层根据所述目标迭代间隔更新所述待量化数据的量化参数,所述目标迭代间隔包括至少一次迭代。
在一种可能的实现方式中,所述方法还包括:
根据所述待量化数据在所述当前迭代的数据位宽,确定所述待量化数据在所述目标迭代间隔内的迭代对应的数据位宽,以使所述神经网络根据所述待量化数据在所述目标迭代间隔内的迭代对应的数据位宽,确定量化参数。
在一种可能的实现方式中,所述方法还包括:
根据所述待量化数据在所述当前迭代对应的点位置,确定所述待量化数据在所述目标迭代间隔内的迭代对应的点位置,所述点位置包括第一类点位置和/或第二类点位置。
在一种可能的实现方式中,获取当前迭代以及历史迭代中待量化数据的数据变动幅度,包括:
根据待量化数据在当前迭代的点位置,和根据历史迭代间隔确定的与所述当前迭代对应的历史迭代的点位置,计算待量化数据对应各迭代间隔的点位置的滑动平均值,所述点位置包括第一类点位置和/或第二类点位置;
根据所述待量化数据在当前迭代的点位置的第一滑动平均值,以及在上一迭代间隔对应迭代的点位置的第二滑动平均值,得到第一数据变动幅度;
其中,根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述待量化层根据所述目标迭代间隔更新所述待量化数据的量化参数,包括:
根据所述第一数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。
在一种可能的实现方式中,获取当前迭代以及历史迭代中待量化数据的数据变动幅度,包括:
计算所述第一滑动平均值和所述第二滑动平均值的差值;
将所述差值的绝对值确定为第一数据变动幅度。
在一种可能的实现方式中,所述方法还包括:
根据在当前迭代所述待量化数据和所述待量化数据对应的量化数据,得到第二数据变动幅度;
其中,根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述待量化层根据所述目标迭代间隔更新所述待量化数据的量化参数,包括:
根据所述待量化数据的第一数据变动幅度和所述第二数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。
在一种可能的实现方式中,根据在当前迭代所述待量化数据和所述待量化数据对应的量化数据,得到第二数据变动幅度,包括:
计算在当前迭代所述待量化数据和所述待量化数据对应的量化数据之间的误差;
将所述误差的平方确定为所述第二数据变动幅度。
在一种可能的实现方式中,根据所述待量化数据的第一数据变动幅度和所述第二数据变动幅度,确定所述待量化数据对应的目标迭代间隔,包括:
根据所述第一数据变动幅度和所述第二数据变动幅度中的最大值,确定所述待量化数据对应的目标迭代间隔。
在一种可能的实现方式中,获取当前迭代以及历史迭代中待量化数据的数据变动幅度,包括:
在当前迭代位于更新周期以外时,获取当前迭代以及历史迭代中待量化数据的数据变动幅度,所述更新周期包括至少一个迭代。
在一种可能的实现方式中,所述方法还包括:
在当前迭代位于预设周期内时,根据当前迭代、在所述预设周期的下一周期中与所述当前迭代对应的迭代以及当前迭代对应的迭代间隔,确定周期间隔;
根据所述待量化数据在当前迭代对应的数据位宽,确定在所述周期间隔内的迭代中所述待量化数据的数据位宽;或
根据所述待量化数据在当前迭代对应的点位置,确定在所述周期间隔内的迭代中所述待量化数据的点位置。
本公开实施例所提供的神经网络量化方法,利用对应的量化参数对目标数据中的多个待量化数据分别进行量化,且在通过第一运算子模块执行与量化结果相关的运算,在保证精度的同时,减小了存储数据所占用的存储空间,保证了运算结果的准确性和可靠性,且能够提高运算的效率,且量化同样缩减了神经网络模型的大小,降低了对运行该神经网络模型的终端的性能要求,使神经网络模型可以应用于算力、体积、功耗相对受限的手机等终端。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
进一步需要说明的是,虽然图4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
本公开实施例还提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令被处理器执行时实现上述神经网络的数据量化处理方法。
在一种可能的实现方式中,还公开了一种人工智能芯片,其包括了上述数据处理装置。
在一种可能的实现方式中,还公开了一种板卡,其包括存储器件、接口装置和控制器件以及上述人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯片的状态进行监控。
图5示出根据本公开实施例的板卡的结构框图。参阅图5,上述板卡除了包括上述芯片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.0 X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述人工智能芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述人工智能芯片电连接。所述控制器件用于对所述人工智能芯片的状态进行监控。具体的,所述人工智能芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述人工智能芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述人工智能芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述人工智能芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
在一种可能的实现方式中,公开了一种电子设备,其包括了上述人工智能芯片。电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
依据以下条款可更好地理解前述内容:
条款A.一种神经网络量化装置,所述装置包括控制模块和处理模块,所述处理模块包括第一运算子模块,所述第一运算子模块包括主运算子模块和从运算子模块,
所述控制模块,用于从神经网络的目标数据中确定出多个待量化数据,并根据与各所述待量化数据对应的量化数据得到所述目标数据的量化结果,各所述待量化数据的量化数据是利用对应的量化参数进行量化得到的,所述量化参数包括点位置;
所述第一运算子模块,用于进行与所述量化结果相关的运算,得到运算结果,
其中,所述主运算子模块,用于将第一数据发送至所述从运算子模块,所述第一数据包括所述量化结果中根据所述点位置量化得到的第一类型的数据;
所述从运算子模块,用于对接收到的所述第一数据进行乘法运算,得到中间结果;
所述主运算子模块,还用于对所述中间结果和所述量化结果中的除所述第一数据之外的数据进行运算,得到运算结果。
条款A2.根据条款A1所述的装置,所述量化参数还包括偏移量和/或缩放系数,所述量化结果中还包括第二类型的数据,所述第二类型的数据包括用点位置表示的第一部分、以及用偏移量和/或缩放系数表示的第二部分的数据,
所述第一数据还包括所述量化结果中第二类型的数据的第一部分。
条款A3.根据条款A1所述的装置,所述处理模块,还包括:
数据转换子模块,用于对待转换数据进行格式转换,得到转换后数据,所述转换后数据的格式类型包括第一类型和第二类型中的任一种,其中,所述待转换数据包括所述目标数据中未进行量化处理的数据,所述第一数据还包括第一类型的转换后数据和/或第二类型的转换后数据中的第一部分,
所述主运算子模块,还用于对所述中间结果、所述量化结果中的除所述第一数据之外的数据和所述转换后数据中的除所述第一数据之外的数据进行运算,得到运算结果。
条款A4.根据条款A3所述的装置,
所述数据转换子模块,还用于对根据与各所述待量化数据对应的量化数据得到所述目标数据的待转换量化结果进行格式转换,得到所述量化结果。
条款A5.根据条款A1至条款A4任一项所述的装置,各所述待量化数据均为所述目标数据的子集,所述目标数据为所述神经网络的待量化层的任意一种待量化的待运算数据,所述待运算数据包括输入神经元、权值、偏置、梯度中的至少一种。
条款A6.根据条款A5所述的装置,所述控制模块采用以下至少一种方式确定多个待量化数据:
将一层或多层待量化层中的目标数据确定为一个待量化数据;
将一层或多层待量化层中的同一种待运算数据确定为一个待量化数据;
将对应待量化层的目标数据中一个或多个通道中的数据确定为一个待量化数据;
将对应待量化层的目标数据中一个或多个批数的数据确定为一个待量化数据;
将对应待量化层中的目标数据按照确定的划分尺寸划分为一个或多个待量化数据。
条款A7.根据条款A1所述的装置,所述处理模块,还包括:
第二运算子模块,用于进行所述装置中除所述第一运算子模块所执行的运算处理之外的运算处理。
条款A8.根据权利要求1或条款A2所述的装置,所述控制模块,包括:
参数确定子模块,用于根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数。
条款A9.根据条款A8所述的装置,所述参数确定子模块,包括:
第一点位置确定子模块,当所述量化参数不包括偏移量时,根据各所述待量化数据中的绝对值最大值和对应的数据位宽,得到各所述待量化数据的第一类点位置。
条款A10.根据条款A8所述的装置,所述参数确定子模块,包括:
第一最大值确定子模块,当所述量化参数不包括偏移量时,根据各所述待量化数据和对应的数据位宽得到量化后数据的最大值;
第一缩放系数确定子模块,根据各所述待量化数据中的绝对值最大值和所述量化后数据的最大值,得到各所述待量化数据的第一类缩放系数。
条款A11.根据条款A8所述的装置,所述参数确定子模块,包括:
第二点位置确定子模块,当所述量化参数包括偏移量时,根据各所述待量化数据中的最大值、最小值和对应的数据位宽,得到各所述待量化数据的第二类点位置。
条款A12.根据条款A8所述的装置,所述参数确定子模块,包括:
第二最大值确定子模块,当所述量化参数包括偏移量时,根据各所述待量化数据和对应的数据位宽得到量化后数据的最大值;
第一缩放系数确定子模块,根据各所述待量化数据中的最大值、最小值和量化后数据的最大值,得到各所述待量化数据的第二类缩放系数。
条款A13.根据条款A8所述的装置,所述参数确定子模块,包括:
偏移量确定子模块,根据各所述待量化数据中的最大值和最小值,得到各所述待量化数据的偏移量。
条款A14.根据条款A1至条款A13中任一项所述的装置,所述控制模块,还包括:
第一量化误差确定子模块,用于根据各所述待量化数据和各所述待量化数据对应的量化数据,确定各所述待量化数据对应的量化误差;
调整位宽确定子模块,用于根据各所述待量化数据对应的量化误差和误差阈值,调整各所述待量化数据对应的数据位宽,得到各所述待量化数据对应的调整位宽;
调整量化参数确定子模块,用于将各所述待量化数据对应的数据位宽更新为对应的调整位宽,根据各所述待量化数据和对应的调整位宽计算得到对应的调整量化参数,以使各所述待量化数据根据所述对应的调整量化参数进行量化。
条款A15.根据条款A14所述的装置,所述调整位宽确定子模块,包括:
第一调整位宽确定子模块,用于当所述量化误差大于第一误差阈值时,增加所述对应的数据位宽,得到所述对应的调整位宽。
条款A16.根据条款A14或条款A15所述的装置,所述控制模块,还包括:
第一调整后量化误差子模块,用于根据各所述待量化数据和对应的调整位宽计算各所述待量化数据调整后的量化误差;
第一调整位宽循环确定模块,用于根据所述调整后的量化误差和所述第一误差阈值继续增加所述对应的调整位宽,直至所述调整后的量化误差小于或等于所述第一误差阈值。
条款A17.根据条款A14或条款A15所述的装置,所述调整位宽确定子模块,包括:
第二调整位宽确定子模块,用于当所述量化误差小于第二误差阈值时,增加所述对应的数据位宽,得到所述对应的调整位宽,所述第二误差阈值小于所述第一误差阈值。
条款A18.根据条款A17所述的装置,所述控制模块,还包括:
第二调整后量化误差子模块,用于根据所述调整位宽和所述待量化数据计算所述待量化数据调整后的量化误差;
第二调整位宽循环确定子模块,用于根据所述调整后的量化误差和所述第二误差阈值继续减少所述调整位宽,直至根据调整位宽和所述待量化数据计算得到的调整后的量化误差大于或等于所述第二误差阈值。
条款A19.根据条款A1至条款A18中任一项所述的装置,在所述神经网络运算的微调阶段和/或训练阶段,所述控制模块,还包括:
第一数据变动幅度确定子模块,用于获取当前迭代以及历史迭代中待量化数据的数据变动幅度,所述历史迭代为所述当前迭代之前的迭代;
目标迭代间隔确定子模块,用于根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述待量化层根据所述目标迭代间隔更新所述待量化数据的量化参数,所述目标迭代间隔包括至少一次迭代。
条款A20.根据条款A19所述的装置,所述控制模块,还包括:
第一目标迭代间隔应用子模块,用于根据所述待量化数据在所述当前迭代的数据位宽,确定所述待量化数据在所述目标迭代间隔内的迭代对应的数据位宽,以使所述神经网络根据所述待量化数据在所述目标迭代间隔内的迭代对应的数据位宽,确定量化参数。
条款A21.根据条款A20所述的装置,所述控制模块,还包括:
第二目标迭代间隔应用子模块,用于根据所述待量化数据在所述当前迭代对应的点位置,确定所述待量化数据在所述目标迭代间隔内的迭代对应的点位置,所述点位置包括第一类点位置和/或第二类点位置。
条款A22.根据条款A19所述的装置,所述第一数据变动幅度确定子模块,包括:
滑动平均值计算子模块,用于根据待量化数据在当前迭代的点位置,和根据历史迭代间隔确定的与所述当前迭代对应的历史迭代的点位置,计算待量化数据对应各迭代间隔的点位置的滑动平均值,所述点位置包括第一类点位置和/或第二类点位置;
第一数据变动幅度确定子模块,用于根据所述待量化数据在当前迭代的点位置的第一滑动平均值,以及在上一迭代间隔对应迭代的点位置的第二滑动平均值,得到第一数据变动幅度;
其中,所述目标迭代间隔确定子模块,包括:
第一目标迭代间隔确定子模块,用于根据所述第一数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。
条款A23.根据条款A22所述的装置,所述第一数据变动幅度确定子模块,包括:
第一幅度确定子模块,用于计算所述第一滑动平均值和所述第二滑动平均值的差值;将所述差值的绝对值确定为第一数据变动幅度。
条款A24.根据条款A23所述的装置,所述控制模块,还包括:
第二数据变动幅度确定子模块,用于根据在当前迭代所述待量化数据和所述待量化数据对应的量化数据,得到第二数据变动幅度;
其中,目标迭代间隔确定子模块,包括:
第二目标迭代间隔确定子模块,用于根据所述待量化数据的第一数据变动幅度和所述第二数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。
条款A25.根据条款A24所述的装置,所述第二数据变动幅度确定子模块,包括:
第二幅度确定子模块,用于计算在当前迭代所述待量化数据和所述待量化数据对应的量化数据之间的误差;将所述误差的平方确定为所述第二数据变动幅度。
条款A26.根据条款A24所述的装置,所述第二目标迭代间隔确定子模块,包括:
间隔确定子模块,用于根据所述第一数据变动幅度和所述第二数据变动幅度中的最大值,确定所述待量化数据对应的目标迭代间隔。
条款A27.根据条款A19至条款A26中任一项所述的装置,所述第一数据变动幅度确定子模块,包括:
第二数据变动幅度确定子模块,用于在当前迭代位于更新周期以外时,获取当前迭代以及历史迭代中待量化数据的数据变动幅度,所述更新周期包括至少一个迭代。
条款A28.根据条款A19至条款A27中任一项所述的装置,所述控制模块,还包括:
周期间隔确定子模块,用于在当前迭代位于预设周期内时,根据当前迭代、在所述预设周期的下一周期中与所述当前迭代对应的迭代以及当前迭代对应的迭代间隔,确定周期间隔;
第一周期间隔应用子模块,用于根据所述待量化数据在当前迭代对应的数据位宽,确定在所述周期间隔内的迭代中所述待量化数据的数据位宽;或
第二周期间隔应用子模块,用于根据所述待量化数据在当前迭代对应的点位置,确定在所述周期间隔内的迭代中所述待量化数据的点位置。
条款A29.一种神经网络量化方法,所述方法应用于神经网络量化装置,所述装置包括控制模块和处理模块,所述处理模块包括第一运算子模块,所述第一运算子模块包括主运算子模块和从运算子模块,所述方法包括:
利用所述控制模块从神经网络的目标数据中确定出多个待量化数据,并根据与各所述待量化数据对应的量化数据得到所述目标数据的量化结果,各所述待量化数据的量化数据是利用对应的量化参数进行量化得到的,所述量化参数包括点位置;
利用所述第一运算子模块进行与所述量化结果相关的运算,得到运算结果,
其中,利用所述第一运算子模块进行与所述量化结果相关的运算,得到运算结果,包括:
利用所述主运算子模块将第一数据发送至所述从运算子模块,所述第一数据包括所述量化结果中根据所述点位置量化得到的第一类型的数据;
利用所述从运算子模块对接收到的所述第一数据进行乘法运算,得到中间结果;
利用所述主运算子模块对所述中间结果和所述量化结果中的除所述第一数据之外的数据进行运算,得到运算结果。
条款A30.根据条款A29所述的方法,所述量化参数还包括偏移量和/或缩放系数,所述量化结果中还包括第二类型的数据,所述第二类型的数据包括用点位置表示的第一部分、以及用偏移量和/或缩放系数表示的第二部分的数据,
所述第一数据还包括所述量化结果中第二类型的数据的第一部分。
条款A31.根据条款A29所述的方法,所述处理模块还包括数据转换子模块,所述方法还包括:
利用所述数据转换子模块对待转换数据进行格式转换,得到转换后数据,所述转换后数据的格式类型包括第一类型和第二类型中的任一种,其中,所述待转换数据包括所述目标数据中未进行量化处理的数据,所述第一数据还包括第一类型的转换后数据和/或第二类型的转换后数据中的第一部分,
其中,利用所述主运算子模块对所述中间结果和所述量化结果中的除所述第一数据之外的数据进行运算,得到运算结果,包括:
利用所述主运算子模块对所述中间结果、所述量化结果中的除所述第一数据之外的数据和所述转换后数据中的除所述第一数据之外的数据进行运算,得到运算结果。
条款A32.根据条款A31所述的方法,所述方法还包括:
利用所述数据转换子模块对根据与各所述待量化数据对应的量化数据得到所述目标数据的待转换量化结果进行格式转换,得到所述量化结果。
条款A33.根据条款A29至条款A32任一项所述的方法,各所述待量化数据均为所述目标数据的子集,所述目标数据为所述神经网络的待量化层的任意一种待量化的待运算数据,所述待运算数据包括输入神经元、权值、偏置、梯度中的至少一种。
条款A34.根据条款A33所述的方法,利用所述控制模块从神经网络的目标数据中确定出多个待量化数据,包括以下至少一种方式:
将一层或多层待量化层中的目标数据确定为一个待量化数据;
将一层或多层待量化层中的同一种待运算数据确定为一个待量化数据;
将对应待量化层的目标数据中一个或多个通道中的数据确定为一个待量化数据;
将对应待量化层的目标数据中一个或多个批数的数据确定为一个待量化数据;
将对应待量化层中的目标数据按照确定的划分尺寸划分为一个或多个待量化数据。
条款A35.根据条款A29所述的方法,所述处理模块还包括第二运算子模块,所述方法还包括:
利用所述第二运算子模块进行所述装置中除所述第一运算子模块所执行的运算处理之外的运算处理。
条款A36.根据条款A29或条款A30所述的方法,所述方法还包括:
根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数。
条款A37.根据条款A36所述的方法,根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数,包括:
当所述量化参数不包括偏移量时,根据各所述待量化数据中的绝对值最大值和对应的数据位宽,得到各所述待量化数据的第一类点位置。
条款A38.根据条款A36所述的方法,根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数,包括:
当所述量化参数不包括偏移量时,根据各所述待量化数据和对应的数据位宽得到量化后数据的最大值;
根据各所述待量化数据中的绝对值最大值和所述量化后数据的最大值,得到各所述待量化数据的第一类缩放系数。
条款A39.根据条款A36所述的方法,根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数,包括:
当所述量化参数包括偏移量时,根据各所述待量化数据中的最大值、最小值和对应的数据位宽,得到各所述待量化数据的第二类点位置。
条款A40.根据条款A36所述的方法,根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数,包括:
当所述量化参数包括偏移量时,根据各所述待量化数据和对应的数据位宽得到量化后数据的最大值;
根据各所述待量化数据中的最大值、最小值和量化后数据的最大值,得到各所述待量化数据的第二类缩放系数。
条款A41.根据条款A36所述的方法,根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数,包括:
根据各所述待量化数据中的最大值和最小值,得到各所述待量化数据的偏移量。
条款A42.根据条款A29至条款A41任一项所述的方法,所述方法还包括:
根据各所述待量化数据和各所述待量化数据对应的量化数据,确定各所述待量化数据对应的量化误差;
根据各所述待量化数据对应的量化误差和误差阈值,调整各所述待量化数据对应的数据位宽,得到各所述待量化数据对应的调整位宽;
将各所述待量化数据对应的数据位宽更新为对应的调整位宽,根据各所述待量化数据和对应的调整位宽计算得到对应的调整量化参数,以使各所述待量化数据根据所述对应的调整量化参数进行量化。
条款A43.根据条款A42所述的方法,根据各所述待量化数据对应的量化误差和误差阈值,调整各所述待量化数据对应的数据位宽,得到各所述待量化数据对应的调整位宽,包括:
当所述量化误差大于第一误差阈值时,增加所述对应的数据位宽,得到所述对应的调整位宽。
条款A44.根据条款A42或条款A43所述的方法,所述方法还包括:
根据各所述待量化数据和对应的调整位宽计算各所述待量化数据调整后的量化误差;
根据所述调整后的量化误差和所述第一误差阈值继续增加所述对应的调整位宽,直至所述调整后的量化误差小于或等于所述第一误差阈值。
条款A45.根据条款A42或条款A43所述的方法,根据各所述待量化数据对应的量化误差和误差阈值,调整各所述待量化数据对应的数据位宽,得到各所述待量化数据对应的调整位宽,包括:
当所述量化误差小于第二误差阈值时,增加所述对应的数据位宽,得到所述对应的调整位宽,所述第二误差阈值小于所述第一误差阈值。
条款A46.根据条款A45所述的方法,所述方法还包括:
根据所述调整位宽和所述待量化数据计算所述待量化数据调整后的量化误差;
根据所述调整后的量化误差和所述第二误差阈值继续减少所述调整位宽,直至根据调整位宽和所述待量化数据计算得到的调整后的量化误差大于或等于所述第二误差阈值。
条款A47.根据条款A29至条款A44任一项所述的方法,在所述神经网络运算的微调阶段和/或训练阶段,所述方法还包括:
获取当前迭代以及历史迭代中待量化数据的数据变动幅度,所述历史迭代为所述当前迭代之前的迭代;
根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述待量化层根据所述目标迭代间隔更新所述待量化数据的量化参数,所述目标迭代间隔包括至少一次迭代。
条款A48.根据条款A47所述的方法,所述方法还包括:
根据所述待量化数据在所述当前迭代的数据位宽,确定所述待量化数据在所述目标迭代间隔内的迭代对应的数据位宽,以使所述神经网络根据所述待量化数据在所述目标迭代间隔内的迭代对应的数据位宽,确定量化参数。
条款A49.根据条款A48所述的方法,所述方法还包括:
根据所述待量化数据在所述当前迭代对应的点位置,确定所述待量化数据在所述目标迭代间隔内的迭代对应的点位置,所述点位置包括第一类点位置和/或第二类点位置。
条款A50.根据条款A47所述的方法,获取当前迭代以及历史迭代中待量化数据的数据变动幅度,包括:
根据待量化数据在当前迭代的点位置,和根据历史迭代间隔确定的与所述当前迭代对应的历史迭代的点位置,计算待量化数据对应各迭代间隔的点位置的滑动平均值,所述点位置包括第一类点位置和/或第二类点位置;
根据所述待量化数据在当前迭代的点位置的第一滑动平均值,以及在上一迭代间隔对应迭代的点位置的第二滑动平均值,得到第一数据变动幅度;
其中,根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述待量化层根据所述目标迭代间隔更新所述待量化数据的量化参数,包括:
根据所述第一数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。
条款A51.根据条款A50所述的方法,获取当前迭代以及历史迭代中待量化数据的数据变动幅度,包括:
计算所述第一滑动平均值和所述第二滑动平均值的差值;
将所述差值的绝对值确定为第一数据变动幅度。
条款A52.根据条款A51所述的方法,所述方法还包括:
根据在当前迭代所述待量化数据和所述待量化数据对应的量化数据,得到第二数据变动幅度;
其中,根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述待量化层根据所述目标迭代间隔更新所述待量化数据的量化参数,包括:
根据所述待量化数据的第一数据变动幅度和所述第二数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。
条款A53.根据条款A52所述的方法,根据在当前迭代所述待量化数据和所述待量化数据对应的量化数据,得到第二数据变动幅度,包括:
计算在当前迭代所述待量化数据和所述待量化数据对应的量化数据之间的误差;
将所述误差的平方确定为所述第二数据变动幅度。
条款A54.根据条款A52所述的方法,根据所述待量化数据的第一数据变动幅度和所述第二数据变动幅度,确定所述待量化数据对应的目标迭代间隔,包括:
根据所述第一数据变动幅度和所述第二数据变动幅度中的最大值,确定所述待量化数据对应的目标迭代间隔。
条款A55.根据条款A47至条款A54任一项所述的方法,获取当前迭代以及历史迭代中待量化数据的数据变动幅度,包括:
在当前迭代位于更新周期以外时,获取当前迭代以及历史迭代中待量化数据的数据变动幅度,所述更新周期包括至少一个迭代。
条款A56.根据条款A47至条款A55任一项所述的方法,所述方法还包括:
在当前迭代位于预设周期内时,根据当前迭代、在所述预设周期的下一周期中与所述当前迭代对应的迭代以及当前迭代对应的迭代间隔,确定周期间隔;
根据所述待量化数据在当前迭代对应的数据位宽,确定在所述周期间隔内的迭代中所述待量化数据的数据位宽;或
根据所述待量化数据在当前迭代对应的点位置,确定在所述周期间隔内的迭代中所述待量化数据的点位置。
条款A57.一种人工智能芯片,所述芯片包括如条款A1至条款A28中任意一项所述的神经网络量化装置。
条款A58.一种电子设备,所述电子设备包括如条款A57所述的人工智能芯片。
条款A59.一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款A58所述的人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
所述控制器件,用于对所述人工智能芯片的状态进行监控。
条款A60.根据条款A59所述的板卡,
所述存储器件包括:多组存储单元,每一组所述存储单元与所述人工智能芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
条款A61.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款A29至条款A56中任意一项所述的神经网络量化方法。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本公开的方法及其核心思想。同时,本领域技术人员依据本公开的思想,基于本公开的具体实施方式及应用范围上做出的改变或变形之处,都属于本公开保护的范围。综上所述,本说明书内容不应理解为对本公开的限制。
Claims (59)
1.一种神经网络量化装置,其特征在于,所述装置包括控制模块和处理模块,所述处理模块包括第一运算子模块,所述第一运算子模块包括主运算子模块和从运算子模块,
所述控制模块,用于从神经网络的目标数据中确定出多个待量化数据,并根据与各所述待量化数据对应的量化数据得到所述目标数据的量化结果,各所述待量化数据的量化数据是利用对应的量化参数进行量化得到的,所述量化参数包括点位置;
所述第一运算子模块,用于进行与所述量化结果相关的运算,得到运算结果,
其中,所述主运算子模块,用于将第一数据发送至所述从运算子模块,所述第一数据包括所述量化结果中根据所述点位置量化得到的第一类型的数据;
所述从运算子模块,用于对接收到的所述第一数据进行乘法运算,得到中间结果;
所述主运算子模块,还用于对所述中间结果和所述量化结果中的除所述第一数据之外的数据进行运算,得到运算结果,所述量化参数还包括偏移量和/或缩放系数,所述量化结果中还包括第二类型的数据,所述第二类型的数据包括用点位置表示的第一部分、以及用偏移量和/或缩放系数表示的第二部分的数据,
所述第一数据还包括所述量化结果中第二类型的数据的第一部分。
2.根据权利要求1所述的装置,其特征在于,所述处理模块,还包括:
数据转换子模块,用于对待转换数据进行格式转换,得到转换后数据,所述转换后数据的格式类型包括第一类型和第二类型中的任一种,其中,所述待转换数据包括所述目标数据中未进行量化处理的数据,所述第一数据还包括第一类型的转换后数据和/或第二类型的转换后数据中的第一部分,
所述主运算子模块,还用于对所述中间结果、所述量化结果中的除所述第一数据之外的数据和所述转换后数据中的除所述第一数据之外的数据进行运算,得到运算结果。
3.根据权利要求2所述的装置,其特征在于,
所述数据转换子模块,还用于对根据与各所述待量化数据对应的量化数据得到所述目标数据的待转换量化结果进行格式转换,得到所述量化结果。
4.根据权利要求1至3任一项所述的装置,其特征在于,各所述待量化数据均为所述目标数据的子集,所述目标数据为所述神经网络的待量化层的任意一种待量化的待运算数据,所述待运算数据包括输入神经元、权值、偏置、梯度中的至少一种。
5.根据权利要求4所述的装置,其特征在于,所述控制模块采用以下至少一种方式确定多个待量化数据:
将一层或多层待量化层中的目标数据确定为一个待量化数据;
将一层或多层待量化层中的同一种待运算数据确定为一个待量化数据;
将对应待量化层的目标数据中一个或多个通道中的数据确定为一个待量化数据;
将对应待量化层的目标数据中一个或多个批数的数据确定为一个待量化数据;
将对应待量化层中的目标数据按照确定的划分尺寸划分为一个或多个待量化数据。
6.根据权利要求1所述的装置,其特征在于,所述处理模块,还包括:
第二运算子模块,用于进行所述装置中除所述第一运算子模块所执行的运算处理之外的运算处理。
7.根据权利要求1所述的装置,其特征在于,所述控制模块,包括:
参数确定子模块,用于根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数。
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.根据权利要求29所述的方法,其特征在于,所述方法还包括:
利用所述数据转换子模块对根据与各所述待量化数据对应的量化数据得到所述目标数据的待转换量化结果进行格式转换,得到所述量化结果。
31.根据权利要求28至30任一项所述的方法,其特征在于,各所述待量化数据均为所述目标数据的子集,所述目标数据为所述神经网络的待量化层的任意一种待量化的待运算数据,所述待运算数据包括输入神经元、权值、偏置、梯度中的至少一种。
32.根据权利要求31所述的方法,其特征在于,利用所述控制模块从神经网络的目标数据中确定出多个待量化数据,包括以下至少一种方式:
将一层或多层待量化层中的目标数据确定为一个待量化数据;
将一层或多层待量化层中的同一种待运算数据确定为一个待量化数据;
将对应待量化层的目标数据中一个或多个通道中的数据确定为一个待量化数据;
将对应待量化层的目标数据中一个或多个批数的数据确定为一个待量化数据;
将对应待量化层中的目标数据按照确定的划分尺寸划分为一个或多个待量化数据。
33.根据权利要求28所述的方法,其特征在于,所述处理模块还包括第二运算子模块,所述方法还包括:
利用所述第二运算子模块进行所述装置中除所述第一运算子模块所执行的运算处理之外的运算处理。
34.根据权利要求28所述的方法,其特征在于,所述方法还包括:
根据各所述待量化数据和对应的数据位宽计算得到对应的量化参数。
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至42任一项所述的方法,其特征在于,在所述神经网络运算的微调阶段和/或训练阶段,所述方法还包括:
获取当前迭代以及历史迭代中待量化数据的数据变动幅度,所述历史迭代为所述当前迭代之前的迭代;
根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述待量化层根据所述目标迭代间隔更新所述待量化数据的量化参数,所述目标迭代间隔包括至少一次迭代。
46.根据权利要求45所述的方法,其特征在于,所述方法还包括:
根据所述待量化数据在所述当前迭代的数据位宽,确定所述待量化数据在所述目标迭代间隔内的迭代对应的数据位宽,以使所述神经网络根据所述待量化数据在所述目标迭代间隔内的迭代对应的数据位宽,确定量化参数。
47.根据权利要求46所述的方法,其特征在于,所述方法还包括:
根据所述待量化数据在所述当前迭代对应的点位置,确定所述待量化数据在所述目标迭代间隔内的迭代对应的点位置,所述点位置包括第一类点位置和/或第二类点位置。
48.根据权利要求45所述的方法,其特征在于,获取当前迭代以及历史迭代中待量化数据的数据变动幅度,包括:
根据待量化数据在当前迭代的点位置,和根据历史迭代间隔确定的与所述当前迭代对应的历史迭代的点位置,计算待量化数据对应各迭代间隔的点位置的滑动平均值,所述点位置包括第一类点位置和/或第二类点位置;
根据所述待量化数据在当前迭代的点位置的第一滑动平均值,以及在上一迭代间隔对应迭代的点位置的第二滑动平均值,得到第一数据变动幅度;
其中,根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述待量化层根据所述目标迭代间隔更新所述待量化数据的量化参数,包括:
根据所述第一数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。
49.根据权利要求48所述的方法,其特征在于,获取当前迭代以及历史迭代中待量化数据的数据变动幅度,包括:
计算所述第一滑动平均值和所述第二滑动平均值的差值;
将所述差值的绝对值确定为第一数据变动幅度。
50.根据权利要求49所述的方法,其特征在于,所述方法还包括:
根据在当前迭代所述待量化数据和所述待量化数据对应的量化数据,得到第二数据变动幅度;
其中,根据所述待量化数据的数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述待量化层根据所述目标迭代间隔更新所述待量化数据的量化参数,包括:
根据所述待量化数据的第一数据变动幅度和所述第二数据变动幅度,确定所述待量化数据对应的目标迭代间隔,以使所述神经网络根据所述目标迭代间隔更新所述待量化数据的量化参数。
51.根据权利要求50所述的方法,其特征在于,根据在当前迭代所述待量化数据和所述待量化数据对应的量化数据,得到第二数据变动幅度,包括:
计算在当前迭代所述待量化数据和所述待量化数据对应的量化数据之间的误差;
将所述误差的平方确定为所述第二数据变动幅度。
52.根据权利要求50所述的方法,其特征在于,根据所述待量化数据的第一数据变动幅度和所述第二数据变动幅度,确定所述待量化数据对应的目标迭代间隔,包括:
根据所述第一数据变动幅度和所述第二数据变动幅度中的最大值,确定所述待量化数据对应的目标迭代间隔。
53.根据权利要求45至52任一项所述的方法,其特征在于,获取当前迭代以及历史迭代中待量化数据的数据变动幅度,包括:
在当前迭代位于更新周期以外时,获取当前迭代以及历史迭代中待量化数据的数据变动幅度,所述更新周期包括至少一个迭代。
54.根据权利要求45至53任一项所述的方法,其特征在于,所述方法还包括:
在当前迭代位于预设周期内时,根据当前迭代、在所述预设周期的下一周期中与所述当前迭代对应的迭代以及当前迭代对应的迭代间隔,确定周期间隔;
根据所述待量化数据在当前迭代对应的数据位宽,确定在所述周期间隔内的迭代中所述待量化数据的数据位宽;或
根据所述待量化数据在当前迭代对应的点位置,确定在所述周期间隔内的迭代中所述待量化数据的点位置。
55.一种人工智能芯片,其特征在于,所述芯片包括如权利要求1至27中任意一项所述的神经网络量化装置。
56.一种电子设备,其特征在于,所述电子设备包括如权利要求55所述的人工智能芯片。
57.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求56所述的人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
所述控制器件,用于对所述人工智能芯片的状态进行监控。
58.根据权利要求57所述的板卡,其特征在于,
所述存储器件包括:多组存储单元,每一组所述存储单元与所述人工智能芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
59.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求28至54中任意一项所述的神经网络量化方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/095673 WO2021036412A1 (zh) | 2019-08-23 | 2020-06-11 | 数据处理方法、装置、计算机设备和存储介质 |
JP2020567529A JP7146953B2 (ja) | 2019-08-27 | 2020-08-20 | データ処理方法、装置、コンピュータデバイス、及び記憶媒体 |
EP20824881.5A EP4024280A4 (en) | 2019-08-27 | 2020-08-20 | DATA PROCESSING METHOD AND APPARATUS, COMPUTER EQUIPMENT AND STORAGE MEDIA |
PCT/CN2020/110306 WO2021036905A1 (zh) | 2019-08-27 | 2020-08-20 | 数据处理方法、装置、计算机设备和存储介质 |
US17/137,981 US12112257B2 (en) | 2019-08-27 | 2020-12-30 | Data processing method, device, computer equipment and storage medium |
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 | ||
CN2019107971273 | 2019-08-27 | ||
CN201910797127 | 2019-08-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112085176A CN112085176A (zh) | 2020-12-15 |
CN112085176B true CN112085176B (zh) | 2024-04-12 |
Family
ID=73734275
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910888449.9A Active CN112085176B (zh) | 2019-06-12 | 2019-09-19 | 数据处理方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112085176B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113238989A (zh) * | 2021-06-08 | 2021-08-10 | 中科寒武纪科技股份有限公司 | 将数据进行量化的设备、方法及计算机可读存储介质 |
CN113554149B (zh) * | 2021-06-18 | 2022-04-12 | 北京百度网讯科技有限公司 | 神经网络处理单元npu、神经网络的处理方法及其装置 |
CN115983362A (zh) * | 2022-11-25 | 2023-04-18 | 华为技术有限公司 | 一种量化方法、推荐方法以及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108229648A (zh) * | 2017-08-31 | 2018-06-29 | 深圳市商汤科技有限公司 | 卷积计算方法和装置、电子设备、计算机存储介质 |
CN109121435A (zh) * | 2017-04-19 | 2019-01-01 | 上海寒武纪信息科技有限公司 | 处理装置和处理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180107451A1 (en) * | 2016-10-14 | 2018-04-19 | International Business Machines Corporation | Automatic scaling for fixed point implementation of deep neural networks |
-
2019
- 2019-09-19 CN CN201910888449.9A patent/CN112085176B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109121435A (zh) * | 2017-04-19 | 2019-01-01 | 上海寒武纪信息科技有限公司 | 处理装置和处理方法 |
CN108229648A (zh) * | 2017-08-31 | 2018-06-29 | 深圳市商汤科技有限公司 | 卷积计算方法和装置、电子设备、计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112085176A (zh) | 2020-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112085181B (zh) | 神经网络量化方法及装置以及相关产品 | |
WO2021036904A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2021036908A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2021036905A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2021036890A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112085176B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112085187A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112085182A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112085151A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112085150B (zh) | 循环神经网络的量化参数调整方法、装置及相关产品 | |
US20220366238A1 (en) | Method and apparatus for adjusting quantization parameter of recurrent neural network, and related product | |
CN113298843B (zh) | 数据量化处理方法、装置、电子设备和存储介质 | |
CN112085177A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2021036412A1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |