CN112085175B - 基于神经网络计算的数据处理方法和装置 - Google Patents

基于神经网络计算的数据处理方法和装置 Download PDF

Info

Publication number
CN112085175B
CN112085175B CN201910517485.4A CN201910517485A CN112085175B CN 112085175 B CN112085175 B CN 112085175B CN 201910517485 A CN201910517485 A CN 201910517485A CN 112085175 B CN112085175 B CN 112085175B
Authority
CN
China
Prior art keywords
data
layer
quantization
weight
quantized
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
Application number
CN201910517485.4A
Other languages
English (en)
Other versions
CN112085175A (zh
Inventor
陈超
徐斌
谢展鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201910517485.4A priority Critical patent/CN112085175B/zh
Priority to PCT/CN2020/095823 priority patent/WO2020249085A1/zh
Publication of CN112085175A publication Critical patent/CN112085175A/zh
Application granted granted Critical
Publication of CN112085175B publication Critical patent/CN112085175B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Pure & Applied Mathematics (AREA)
  • Biophysics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Image Analysis (AREA)

Abstract

本申请提供了基于量化的神经网络的数据处理方法以及装置。本申请实施例基于重量化系数对第一计算结果进行重量化处理,其中,重量化系数等于所述第一数据量化系数乘以所述第一权重量化系数再除以所述第二数据量化系数。即通过重量化处理将传统的第一反量化操作以及第二量化操作合并,使得第一反量化操作以及第二量化操作中的数据以及权重的多次加载过程,合并为重量化操作对应的一次数据加载过程以及一次重量化系数加载过程,有利于减少加载数据以及权重所占用的时间。

Description

基于神经网络计算的数据处理方法和装置
技术领域
本申请涉及数据处理领域,并且更具体地,涉及基于神经网络计算的数据处理方法和装置。
背景技术
基于神经网络的计算设备在对数据进行数据处理(例如,卷积操作)的过程中,需要消耗大量的计算资源。尤其是在卷积层和全连接层这两种类型的数据处理层中,由于这两种类型的数据处理层中对应的数据处理过程实质上为基于浮点数的矩阵乘法运算,即将浮点类型的数据矩阵与浮点类型的权重矩阵进行矩阵乘法,导致数据处理的过程中的计算量较大,占用的计算资源非常高。
为了减少计算设备对数据进行数据处理时的计算量,目前业界引入了量化操作,即将上述数据处理过程中涉及的浮点数据转化定点数据,利用基于定点数据的矩阵乘法所需的计算资源小于基于浮点数据的矩阵乘法所需的计算资源这一特性,以降低计算设备对数据进行数据处理时的计算量。量化操作本质上属于有损的转换,量化后的定点数据的量化位宽越少,计算设备对数据处理的精度越低。通常,量化后的数据在经过线性计算后需要作为下一次计算的输入数据,因此,为了减少量化操作对数据精度的影响,上述量化后的数据在经过线性计算后,需要进行反量化操作。
通常,将上述量化操作、与反量化操作与“三级数据处理结构”结合,以实现数据的处理过程。上述三级数据处理结构包括第一线性计算层、修正线性单元(Rectified LinearUnit,ReLU)层以及第二线性计算层。在第一线性计算层以及第二线性计算层中分别引入量化子层和反量化子层,以对第一线性计算层的输入数据进行量化操作,对第一线性计算层的第一计算结果进行反量化操作,对第二线性计算层的输入数据进行量化操作,对第二线性计算层的第二计算结果进行反量化操作。
然而,在上述数据处理的过程中,每次量化操作、线性计算、反量化操作以及ReLU计算的过程中,都需要分别加载每次操作所需的数据以及权重,导致加载数据以及权重所占用的时间较长,影响神经网络的数据处理性能。
发明内容
本申请提供一种基于神经网络计算的数据处理方法和装置,在量化操作、反量化操作与三级数据处理结构相结合的场景中,有利于减少加载数据以及权重所占用的时间。
第一方面,本申请提供了基于量化的神经网络的数据处理方法,所述基于量化的神经网络包括三级数据处理结构,所述三级数据处理结构包括:第一线性计算层、修正线性单元ReLU层以及第二线性计算层;其中,
所述第一线性计算层包括第一量化子层、第一计算子层以及第一反量化子层;所述第一量化子层用于根据第一数据量化系数对输入数据进行量化,得到第一量化数据;所述第一计算子层用于根据量化后的第一权重对所述第一量化数据进行计算,得到第一计算结果,所述第一反量化子层用于对所述第一计算结果进行反量化,得到第一输出数据;所述量化后的第一权重根据第一权重量化系数得到;
所述ReLU层用于对所述第一输出数据进行ReLU运算,得到中间输出数据;
所述第二线性计算层包括第二量化子层、第二计算子层以及第二反量化子层;所述第二量化子层用于根据第二数据量化系数对所述中间输出数据进行量化,得到第二量化数据;所述第二计算子层用于对所述第二量化数据进行计算,得到第二计算结果,所述第二反量化子层用于根据第二反量化系数对所述第二计算结果进行反量化,得到第二输出数据;
所述数据处理方法包括:
采用与所述三级数据处理结构中相同的方法得到所述第一计算结果;
对所述第一计算结果进行重量化得到重量化后的第一计算结果,所述重量化包括:将所述第一计算结果乘以重量化系数以得到所述重量化后的第一计算结果;对所述重量化后的第一计算结果进行所述ReLU运算以得到所述第二量化数据;或者,对所述第一计算结果进行ReLU得到ReLU运算后的第一计算结果,对所述ReLU运算后的第一计算结果进行重量化,所述重量化包括:将所述ReLU运算后的第一计算结果乘以重量化系数以得到所述第二量化数据;
采用与所述三级数据处理结构中相同的方法对所述第二量化数据进行处理;
其中,所述重量化系数等于所述第一数据量化系数乘以所述第一权重量化系数再除以所述第二数据量化系数。
在本申请实施例中,基于重量化系数对第一计算结果进行重量化处理,其中,重量化系数等于所述第一数据量化系数乘以所述第一权重量化系数再除以所述第二数据量化系数。即,可以理解为,通过重量化处理将传统的第一反量化操作以及第二量化操作合并,使得第一反量化操作以及第二量化操作中的数据以及权重的多次加载过程,合并为重量化操作对应的一次数据加载过程以及一次重量化系数加载过程,有利于减少加载数据以及权重所占用的时间。
在一种可能的实现方式中,所述第一计算结果被存储在存储器中,所述对所述第一计算结果进行ReLU得到ReLU运算后的第一计算结果包括:将所述第一计算结果从所述存储器中读出;将所述第一计算结果通过数据通路上的比较器来完成所述ReLU运算,以得到所述ReLU运算后的第一计算结果。
在本申请实施例中,通过数据通路上的比较器完成ReLU运算,避免了ReLU运算以及重量化过程都由计算单元执行,有利于降低计算单元的计算量。
在一种可能的实现方式中,所述重量化由重量化电路来处理,所述比较器的输出作为所述重量化电路的输入。
在本申请实施例中,通过重量化电路以及比较器实现对数据的重量化过程以及ReLU运算,将重量化过程和ReLU运算分配至不同的单元实现,有利于合理分配重量化过程和ReLU运算的计算量,以提高数据处理的速度。
在一种可能的实现方式中,所述数据通路为数据从所述存储器到所述重量化电路的输入之间的路径。
在一种可能的实现方式中,在所述采用与所述三级数据处理结构中相同的方法得到所述第一计算结果之前,所述方法还包括:获取全精度神经网络模型中的每一层对应的校准输入数据以及权重,其中,所述全精度神经网络模型中的第一层的校准输入数据为预先准备的校准数据集中的数据,其余各层的校准输入数据为上一层的输出数据;获取每一层对应的所述校准输入数据的最优的最大值以及所述权重的最优的最大值;根据每一层的所述校准输入数据的最优的最大值、所述权重的最优的最大值以及每一层可选的多种数据格式确定每一层的多个候选权重量化系数、多个候选数据量化系数、多个候选数据位宽、多个候选数据反量化系数以及多个候选权重量化系数;根据每一层的所述多个候选权重量化系数和所述全精度神经网络模型中每一层的权重得到每一层的多个量化后的候选权重;根据每一层的所述多个候选数据量化系数、所述多个候选数据反量化系数、所述多个候选权重量化系数以及所述多个量化后的候选权重确定多种基于量化的神经网络模型;将所述校准数据集中的数据输入到所述多种基于量化的神经网络模型,统计多个运行结果;根据所述多个运行结果从所述多种基于量化的神经网络模型中选择运行结果满足预设条件的所述基于量化的神经网络模型。
在本申请实施例中,对全精度神经网络模型输入校准数据集,确定每层满足预设条件的量化系数、反量化系数、权重量化系数以及权重,即以层为单位确定每层需要的系数以及权重,有利于兼顾神经网络的计算精度和计算速度。避免了传统的神经网络中每层使用的量化系数、反量化系数、权重量化系数必须相同,导致传统的神经网络在计算精度和计算速度二者之间只能取其一。例如,每层使用的量化系数、反量化系数、权重量化系数保证神经网络的计算精度较高时,数据处理的计算较大,占用的时间较长。或者,每层使用的量化系数、反量化系数、权重量化系数保证神经网络的计算速度较块时,数据处理的精度较差。
在一种可能的实现方式中,所述数据格式包括:整型INT4,整型INT8,整型
INT16,浮点型FP16或者浮点型FP32。
在一种可能的实现方式中,所述预设条件包括:性能最优,功耗最优或者精度最优。
在本申请实施例中,通过设定预设条件可以定制神经网络中各层使用的量化系数、反量化系数、权重量化系数,有利于提高各层使用的量化系数、反量化系数、权重量化系数的合理性。
第二方面,提供一种基于量化的神经网络的计算设备,所述基于量化的神经网络包括三级数据处理结构,所述三级数据处理结构包括:第一线性计算层、数据处理层以及第二线性计算层,其中,
所述第一线性计算层包括第一量化子层、第一计算子层以及第一反量化子层;所述第一量化子层用于根据第一数据量化系数对输入数据进行量化,得到第一量化数据;所述第一计算子层用于根据量化后的第一权重对所述第一量化数据进行计算,得到第一计算结果,所述第一反量化子层用于对所述第一计算结果进行反量化,得到第一输出数据;所述量化后的第一权重根据第一权重量化系数得到;
所述ReLU层用于对所述第一输出数据进行ReLU运算,得到中间输出数据;
所述第二线性计算层包括第二量化子层、第二计算子层以及第二反量化子层;所述第二量化子层用于根据第二数据量化系数对所述中间输出数据进行量化,得到第二量化数据;所述第二计算子层用于对所述第二量化数据进行计算,得到第二计算结果,所述第二反量化子层用于根据第二反量化系数对所述第二计算结果进行反量化,得到第二输出数据;
所述计算设备用于实现三级数据处理结构的功能,所述计算设备包括:第一量化电路、第一计算电路、重量化电路、ReLU电路;
所述第一计算电路用于采用与所述三级数据处理结构中相同的方法得到所述第一计算结果;
所述重量化电路用于对所述第一计算结果进行重量化得到重量化后的第一计算结果,所述重量化包括:将所述第一计算结果乘以重量化系数以得到所述重量化后的第一计算结果;所述ReLU电路用于对所述重量化后的第一计算结果进行所述ReLU运算以得到所述第二量化数据;或者,所述ReLU电路用于对所述第一计算结果进行ReLU得到ReLU运算后的第一计算结果,所述重量化电路用于对所述ReLU运算后的第一计算结果进行重量化,所述重量化包括:将所述ReLU运算后的第一计算结果乘以重量化系数以得到所述第二量化数据;
所述第一量化电路,用于采用与所述三级数据处理结构中相同的方法对所述第二量化数据进行处理;
其中,所述重量化系数等于所述第一数据量化系数乘以所述第一权重量化系数再除以所述第二数据量化系数。
在本申请实施例中,基于重量化系数对第一计算结果进行重量化处理,其中,重量化系数等于所述第一数据量化系数乘以所述第一权重量化系数再除以所述第二数据量化系数。即,通过重量化处理将传统的第一反量化操作以及第二量化操作合并,使得第一反量化操作以及第二量化操作中的数据以及权重的多次加载过程,合并为重量化操作对应的一次数据加载过程以及一次重量化系数加载过程,有利于减少加载数据以及权重所占用的时间。
在一种可能的实现方式中,所述ReLU电路包括比较器,所述比较器设置于数据通路中,所述数据通路为所述计算设备的存储器到所述重量化电路的输入之间的数据通路,所述比较器,用于对从所述存储器中获取的第一计算结果进行所述ReLU运算,以得到所述ReLU运算后的第一计算结果;所述重量化电路,用于从所述比较器处获取所述ReLU运算后的第一计算结果。
在本申请实施例中,通过数据通路上的比较器完成ReLU运算,避免了ReLU运算以及重量化过程都由重量化电路执行,有利于降低重量化电路的计算量。
在一种可能的实现方式中,所述比较器的输出作为所述重量化电路的输入。
在一种可能的实现方式中,所述计算设备包括向量计算电路,所述向量计算电路包括所述重量化电路以及所述ReLU电路。
在本申请实施例中,将ReLU电路和重量化电路通过向量计算电路实现,复用现有的向量计算电路的功能,可以减少对现有的计算设备的改进,提高本申请实施例适用的范围。
在一种可能的实现方式中,所述第一线性计算层的数据格式或者第二线性层的数据格式为以下多种数据格式中的任一种,所述多种数据格式包括整型INT4,整型INT8,整型INT16,浮点型FP16或者浮点型FP32。
在本申请实施例中,所述第一线性计算层的数据格式或者第二线性层的数据格式为以下多种数据格式中的任一种,避免了现有技术中神经网络中每层线性计算层的数据格式必须相同,有利于提高神经网络的量化的灵活性。
在一种可能的实现方式中,所述第一权重量化系数、所述第一数据量化系数以及所述第二数据量化系数是基于预设条件确定的,所述预设条件包括:性能最优,功耗最优或者精度最优。
在本申请实施例中,通过设定预设条件可以定制神经网络中各层使用的量化系数、反量化系数、权重量化系数,有利于提高各层使用的量化系数、反量化系数、权重量化系数的合理性。
在一种可能的实现方式中,上述第二方面的计算设备可以是系统级芯片(Systemon Chip,SoC)。
第三方面,提供一种计算系统,包括控制器以及计算设备,所述控制器通过向所述计算设备发射多条指令,以控制所述计算设备执行上述方法。
在一种可能的实现方式中,上述计算系统还包括神经网络模型的训练设备,所述训练设备包括至少一个处理器和至少一个存储器,所述至少一个处理器用于:
从所述至少一个存储器中获取全精度神经网络模型中的每一层对应的校准输入数据以及权重,其中,所述全精度神经网络模型中的第一层的校准输入数据为预先准备的校准数据集中的数据,其余各层的校准输入数据为上一层的输出数据;
获取每一层对应的所述校准输入数据的最优的最大值以及所述权重的最优的最大值;
根据每一层的所述校准输入数据的最优的最大值、所述权重的最优的最大值以及每一层可选的多种数据格式确定每一层的多个候选权重量化系数、多个候选数据量化系数、多个候选数据位宽、多个候选数据反量化系数以及多个候选权重量化系数;
根据每一层的所述多个候选权重量化系数和所述全精度神经网络模型中每一层的权重得到每一层的多个量化后的候选权重;
根据每一层的所述多个候选数据量化系数、所述多个候选数据反量化系数、所述多个候选权重量化系数以及所述多个量化后的候选权重确定多种基于量化的神经网络模型;
将所述校准数据集中的数据输入到所述多种基于量化的神经网络模型,统计多个运行结果;
根据所述多个运行结果从所述多种基于量化的神经网络模型中选择运行结果满足预设条件的所述基于量化的神经网络模型。
可选地,上述训练设备可以是服务器或者计算云。
第四方面,提供一种计算设备,包括控制器以及上述第二方面中的任一种可能的实现方式所述的计算设备。
在一种可能的实现方式中,上述计算设备可以是包括控制器(例如,CPU)以及上述第二方面中的任一种可能的实现方式所述的计算设备的计算设备。
第五方面,提供一种计算机可读介质,所述计算机可读介质存储用于计算设备执行的程序代码,所述程序代码包括用于执行上述第一方面中的方法的指令。
第六方面,提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述方法。
附图说明
图1是卷积神经网络的示意性架构图。
图2是另一种卷积神经网络的架构100的示意性架构图。
图3是神经网络的硬件架构的示意图。
图4是线性量化原理的示意图。
图5是传统的神经网络的三级数据处理结构的示意图。
图6是本申请实施例的三级处理结构的示意性框图。
图7是本申请实施例的基于神经网络的数据处理方法的流程图。
图8是基于神经网络进行量化操作的示意性流程图。
图9是本申请实施例的基于量化的神经网络的各层参数的选取过程的流程图。
图10是本申请实施例的基于量化神经网络的计算设备的示意图。
图11是本申请实施例的基于量化神经网络的计算系统1100的示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
为了便于理解,先简单介绍本申请实施例适用的卷积神经网络。需要说明的是,本申请实施例还可以适用其他类型的神经网络,例如深度神经网络(Deep Neural Network,DNN)等,本申请实施例对此不作限定。
卷积神经网络(Convosutionas Neuras Network,CNN)可以理解为一种带有卷积结构的深度神经网络。卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。该特征抽取器可以看作是滤波器,卷积过程可以看作是使用一个可训练的滤波器与一个输入的图像或者卷积特征平面(feature map)做卷积。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。卷积核可以以随机大小的矩阵的形式初始化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。
下文以CNN为例详细介绍神经网络的架构。图1是卷积神经网络的示意性架构图。图1所述的神经网络100包括输入层110,卷积层/池化层120,以及神经网络层130。应理解,池化层为可选的。
卷积层/池化层120,卷积层/池化层120可以包括如示例121-126层,在一种实现中,121层为卷积层,122层为池化层,123层为卷积层,124层为池化层,125为卷积层,126为池化层;在另一种实现方式中,121、122为卷积层,123为池化层,124、125为卷积层,126为池化层。即卷积层的输出可以作为随后的池化层的输入,也可以作为另一个卷积层的输入以继续进行卷积操作。在上述神经网络不包括池化层的情况下,上述121层至126层都可以是卷积层。
以卷积层121为例,卷积层121可以包括很多个卷积算子,卷积算子也称为核,其在图像处理中的作用相当于一个从输入图像矩阵中提取特定信息的过滤器,卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义,这些权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以从输入数据中提取特征信息,从而帮助卷积神经网络100进行正确的预测。
当卷积神经网络100有多个卷积层的时候,初始的卷积层(例如121)往往提取较多的一般特征,该一般特征也可以称之为低级别的特征;随着卷积神经网络100深度的加深,越往后的卷积层(例如126)提取到的特征越来越复杂,比如高级别的语义之类的特征,语义越高的特征越适用于待解决的问题。
池化层:
由于常常需要减少训练参数的数量,因此卷积层之后常常需要周期性的引入池化层,即如图3中120所示例的121-126各层,可以是一层卷积层后面跟一层池化层,也可以是多层卷积层后面接一层或多层池化层。在图像处理过程中,池化层的唯一目的就是减少图像的空间大小。池化层可以包括平均池化算子和/或最大池化算子,以用于对输入图像进行采样得到较小尺寸的图像。平均池化算子可以在特定范围内对图像中的像素值进行计算产生平均值。最大池化算子可以在特定范围内取该范围内值最大的像素作为最大池化的结果。另外,就像卷积层中用权重矩阵的大小应该与图像大小相关一样,池化层中的运算符也应该与图像的大小相关。通过池化层处理后输出的图像尺寸可以小于输入池化层的图像的尺寸,池化层输出的图像中每个像素点表示输入池化层的图像的对应子区域的平均值或最大值。
神经网络层130,在经过卷积层/池化层120的处理后,卷积神经网络100还不足以输出所需要的输出信息。因为如前所述,卷积层/池化层120只会提取特征,并减少输入图像带来的参数。然而为了生成最终的输出信息(所需要的类信息或别的相关信息),卷积神经网络100需要利用神经网络层130来生成一个或者一组所需要的类的数量的输出。因此,在神经网络层130中可以包括多层隐含层(如图3所示的131、132至13n)以及输出层140,该多层隐含层中所包含的参数可以根据具体的任务类型的相关训练数据进行预先训练得到,例如该任务类型可以包括图像识别,图像分类,图像超分辨率重建等等。
在神经网络层130中的多层隐含层之后,也就是整个卷积神经网络100的最后层为输出层140,该输出层140具有类似分类交叉熵的损失函数,具体用于计算预测误差,一旦整个卷积神经网络100的前向传播(如图1由110至140的传播为前向传播)完成,反向传播(如图3由140至110的传播为反向传播)就会开始更新前面提到的各层的权重值以及偏差,以减少卷积神经网络100的损失及卷积神经网络100通过输出层输出的结果和理想结果之间的误差。
需要说明的是,如图1所示的卷积神经网络100仅作为一种卷积神经网络的示例,在具体的应用中,卷积神经网络还可以以其他网络模型的形式存在,图2示出了另一种卷积神经网络的架构200,相对于图1所示的卷积层/池化层121至126之间的连接方式而言,图2中的多个卷积层/池化层可以是并行的,即将分别提取的特征均输入给全神经网络层130进行处理。需要说明的是,图1和图2中作用相同的单元使用的编号相同。
下文结合图3介绍用于实现上述的卷积神经网络的相关功能的计算设备。图3所示的计算设备可以是神经网络处理器(Neural Network Processing Unit,NPU)320。
NPU 320作为协处理器挂载到主CPU(Host CPU)320上,由主CPU 320分配任务。NPU310的核心部分为运算电路303,通过控制器304控制运算电路303提取存储器中的矩阵数据并进行乘法运算。
在一些实现中,运算电路303内部包括多个处理单元(Process Engine,PE)。在一些实现中,运算电路303是二维脉动阵列。运算电路303还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路303是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路303从权重存储器302中取矩阵B相应的数据,并缓存在运算电路303中每一个PE上。运算电路303从输入存储器301中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)308中。
统一存储器306用于存放输入数据以及输出数据。权重数据直接通过存储单元访问控制器(Direct Memory Access Controller,DMAC)305被从外部存储器340搬运到权重存储器302中。输入数据也通过DMAC被从外部存储器340搬运到统一存储器306中。
总线接口单元(Bus Interface Unit,BIU)330,用于基于AXI总线与DMAC和取指存储器(Instruction Fetch Buffer)309的交互。
BIU 330用于取指存储器309从外部存储器获取指令,还用于DMAC 303从外部存储器获取输入矩阵A或者权重矩阵B的原数据。
DMAC 303主要用于将外部存储器DDR中的输入数据搬运到统一存储器306或将权重数据搬运到权重存储器302中或将输入数据数据搬运到输入存储器301中。
在需要的情况下,向量计算电路307中的多个运算处理单元,对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。主要用于神经网络中非卷积/FC层网络计算,如池化(Pooling),批归一化(Batch Normalization),局部响应归一化(Local Response Normalization)等。
在一些实现种,向量计算电路307可以将经处理的输出的向量存储到统一缓存器306。例如,向量计算电路307可以将非线性函数应用到运算电路303的输出。在一些实现中,向量计算电路307生成归一化的值、合并值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路303的激活输入,例如用于在神经网络中的后续层中的使用。
控制器304连接的取指存储器309,用于存储控制器304使用的指令。
统一存储器306,输入存储器301,权重存储器302以及取指存储器309可以均为片上(On-Chip)存储器,外部存储器340可以独立于该NPU硬件架构。
其中,图1和图2所示的卷积神经网络中各层的运算可以由运算电路303或向量计算电路307执行。例如,卷积层对应的操作可以由运算电路303执行,基于激活函数对输出数据进行激活的操作可以由向量计算电路307执行。
从上文中关于神经网络的介绍可以看出,采用全精度的神经网络对数据进行数据处理的过程中数据处理涉及的计算量非常大,例如,卷积层的矩阵乘法等。为了减少计算设备对数据进行数据处理时的计算量,目前业界引入了量化操作,即将上述数据处理过程中涉及的浮点数据转化定点数据,利用基于定点数据的矩阵乘法所需的计算资源小于基于浮点数据的矩阵乘法所需的计算资源这一特性,以降低计算设备对数据进行数据处理时的计算量。这种采用量化操作的神经网络又称“基于量化的神经网络”。
相应地,如上文神经网络的架构中的相关介绍,上一层数据处理层的输出数据往往可以作为下一层数据处理层的输入数据,而量化操作为有损转化,因此,为了保证下一数据处理层的输入数据的精度,在上一层数据处理层中对输入数据进行了量化操作后,往往还需要对在在上一层数据处理层中对输出数据进行反量化操作。其中,反量化操作可以理解为将定点数据转换为浮点数据。
下文结合图3简单介绍数据处理层中的量化过程。需要说明的是,上述数据处理层可以是神经网络中可以进行量化操作中的任一层,例如,可以是图1和图2中所示的卷积层、输入层、隐含层等。对于一层数据处理层中的数据处理过程而言,不仅需要对输入数据(例如,数据矩阵)进行量化,还需要对数据处理过程中使用的权重(例如,权重矩阵)进行量化。例如,将量化操作与卷积操作结合,不仅需要对数据进行量化操作,还需要对卷积操作中的权重进行量化。
图4是线性量化原理的示意图。由于量化操作是有损转换,为了保证基于量化后的数据处理的精度,可以在量化过程中引入量化参数:最优最大值(max),用最优max准确表示原始数据(即量化操作前的数据)的取值范围,将原始数据限定在-|max|~|max|这一范围内,如此,可以在预设的定点数据范围(参见图4所示的[-127,+127])内准确地表示原始数据,以得到较好的量化效果。避免由于直接使用输入数据的最大max值,引入前期对输入数据进行数据处理时的噪声,导致输入数据的最大max值和原始数据的max值相差较大,使得最终确定的量化系数不够准确,降低了量化效果。
在确定了最优max之后,可以根据最优max计算量化系数。例如,要将原始数据量化成8bit定点数据,则max值要映射为+127,则数据的量化系数quant_data_scale和神经网络的数据处理过程中需要使用的权重的量化系数quant_weight_scale可以通过以下公式计算得到。
quant_data_scale=max_data_value/127(1)
quant_weight_scale=max_weight_value/127(2)
其中,max_data_value表示数据的最优max,max_weight_value表示权重的最优max。
在确定了数据的量化系数和权重的量化系数之后,可以根据数据的量化系数确定原始数据与量化后数据之间的映射关系,还可以根据权重的量化系数确定原始权重与量化后权重之间的映射关系。
quant_data=round(ori_data/quant_data_scale) (3)
quant_weight=round(ori_weight/quant_weight_scale) (4)
其中,ori_data表示原始数据,quant_data表示量化后的数据,ori_weight表示原始权重,quant_weight表示量化后的权重,round()代表四舍五入运算。
如此,所有的原始数据和原始权重都可以由浮点数可以转化为-127~+127范围内的定点数,那么关于定点数的计算过程可以用定点乘法器来完成,从而达到加快运算速度,减少功耗的效果。
quant_result=quant_data*quant_weight (5)
其中,quant_result表示定点结果。
在得到定点结果后,可以通过反量化操作将定点结果的定点数映射为浮点数。即,
ori_result=quant_result*quant_data_scale*quant_weight_scale (6)
其中,ori_result表示通过反量化后得到的浮点结果,quant_data_scale与quant_weight_scale的乘积quant_data_scale*quant_weight_scale表示为反量化系数。
需要说明的是,上述量化过程和反量化过程中涉及的公式(1)-(6)中表示相同物理量的使用的相同的标识,为了简洁,只在每个标识首次出现时标注了其表示的物理量。
从图1和图2所示的神经网络架构中可以看出,神经网络中主要涉及的计算,例如卷积计算、池化计算等本质上可以理解为一种线性计算,为了便于描述,下文将卷积层、池化层等统称为“线性计算层”,即每层线性计算层的输出数据都是该层输入数据的线性函数。那么无论神经网络中有多少线性计算层,输出数据都可以视为输入数据的线性组合,这种情况下,神经网络的非线性较差,或者可以说不具有描述非线性模型的功能。
因此,为了提高神经网络对非线性模型的描述,还会在神经网络中增加激活函数(Activation functions)层。目前,ReLU作为神经网络中较常见的激活函数,可以设置在两层线性计算层之间。即将第一层的线性计算层的输出数据作为ReLU层的输出数据,并将ReLU层的输出数据作为第二层的计算层的输入数据。如此,将非线性特性引入神经网络中,使得神经网络可以描述任意逼近任何非线性函数,这样,可以将神经网络应用到众多的非线性模型中。
ReLU函数可以通过公式表示,其中x表示输入数据。从该公式可以看出,当输入数据为正数或0时,ReLU运算并不会改变输入数据的取值;当输入数据的输入数据为负数时,ReLU运算会将输入数据调整为0。
下文基于上文中介绍的量化原理,线性激活函数以线性计算层为卷积层为例,结合图4介绍卷积层中量化操作、反量化操作矩阵计算之间的计算流程。需要说明的是,上述线性计算层还可以是神经网络中需要进行量化操作、反量化操作的任一层,例如还可以是全连接层、输入层等,本申请实施例对此不作具体限定。
图5是传统的神经网络的三级数据处理结构的示意图。图5所示的三级数据处理结构500,包括第一线性计算层510,ReLU层520以及第二线性计算层530。图5所示的三级数据处理结构对应的数据处理功能可以由上文中图3所示的计算设备执行。
第一线性计算层510包括第一量化子层511、第一计算子层512以及第一反量化子层513。第一量化子层511用于根据第一数据量化系数对输入数据进行量化,得到第一量化数据。所述第一计算子层512用于根据量化后的第一权重对所述第一量化数据进行计算,得到第一计算结果。所述第一反量化子层513用于对所述第一计算结果进行反量化,得到第一输出数据,其中,量化后的第一权重是基于第一权重量化系数对原始权重进行量化得到的。
ReLU层520用于对第一输出数据进行ReLU运算,得到中间输出数据。
第二线性计算层530包括第二量化子层531、第二计算子层532以及第二反量化子层533。第二量化子层531用于根据第二数据量化系数对中间输出数据进行量化,得到第二量化数据。第二计算子层532用于对第二量化数据进行计算,得到第二计算结果。第二反量化子层533用于根据第二反量化系数对所述第二计算结果进行反量化,得到第二输出数据。
需要说明的是,上述第一线性计算层可以是上文中介绍的卷积层,计算子层可以用于实现卷积计算等,具体的计算可以参见上文中的介绍,为了简洁,在此不再赘述。
在图5介绍的数据处理过程中,在每个步骤中都需要从存储设备中加载数据处理所需的参数,例如,数据量化系数以及量化后的权重(例如,第一权重)。每次加载数据处理所需的参数都需要占用一定的时间,导致神经网络对数据进行数据处理的整体时延较大。
为了减少神经网络对数据进行数据处理的过程中,加载数据处理所需的参数占用的时间,本申请实施例提供一种基于重量化操作对数据进行处理的方法。利用上文介绍的ReLU函数的特性,即ReLU操作的输入数据为正数时,不改变输入数据的取值,对上述步骤3至步骤5中的反量化操作、ReLu运算以及量化操作进行合并,实现重量化操作。
下文结合图6介绍本申请实施例的数据处理方法。在图6所示的方法中采用重量化对数据进行处理,也就是说,将上述步骤3至步骤5(即图5中的513,520,531)中的第一反量化子层、ReLU层以及量化子层进行合并。需要说明的是,上述“合并”仅仅只功能上的合并,执行重量化操作的硬件依然可以是向量计算电路(例如,图3中的向量计算电路307)。
为了便于理解图6以及图7所示的方案,先介绍本申请实施例的重量化的原理。
将步骤3至步骤5中的公式进行合并,合并后的公式为:
quant_data_2=round(ReLU(quant_result_1*(data_scale_1*weight_scale_1))/data_scale_2)
上述第一数据量化系数data_scale_1、第一权重量化系数weight_scale_1以及第二数据量化系数data_scale_2都是正数,按照上文介绍的ReLU函数的特性,即,输入数据为正数时,ReLU不改变输入数据的取值。因此,可以对上述公式进行变换,得到变换后的公式:
quant_data_2=round(ReLU(quant_result_1*(data_scale_1*weight_scale_1/data_scale_2)))
其中,定义第一数据量化系数与第一权重量化系数的乘积除以第二数据量化系数为重量化系数,用requant_scale表示。
即,requant_scale=data_scale_1*weight_scale_1/data_scale_2。
则,上述变换后的公式可以表示为:
quant_data_2=round(ReLU(quant_result_1*requant_scale)) (7)
如上文所述,上述用于确定重量化系数的第一数据量化系数data_scale_1、第一权重量化系数weight_scale_1以及第二数据量化系数data_scale_2都是可以通过离线校准过程确定的,因此,为了减少加载数据处理所需的参数占用的时间,上述重量化系数也是在离线校准过程中确定好的。如此,基于重量化的数据处理过程中,仅用加载一次重量化系数。避免了基于图5所述的传统的数据处理过程中,在步骤3至步骤5的数据处理过程中需要加载三次数据处理参数。
基于上文介绍的ReLU函数的特性,上述变换后的公式(7)还可以等价于公式(8):
quant_data_2=round(Relu(quant_result_1)*requant_scale) (8)
即,在获取第一输出数据quant_result_1后,可以先通过ReLU进行线性整流运算,再基于重量化系数进行重量化操作。也就是说,上述Relu运算可以在重量化操作之前进行,上述Relu运算也可以在重量化操作之后进行。本申请实施例对此不做限定。
基于上文的介绍,本申请实施例提供一种新的三级数据处理结构。图6是本申请实施例的三级处理结构的示意性框图。图6示出的三级数据处理结构600包括第一线性计算层610,重量化层620,第二线性计算层630。图6所示的三级数据处理结构600对应的数据处理功能依然可以由上文中图3所示的计算设备执行。
需要说明的是,为了便于与图5对比,图6所示的三级数据处理结构600中功能与图5所示的三级数据处理结构500相同的层级的编号相同。另外,图5与图6介绍的数据处理过程中,相同的属于的含义相同。
第一线性计算层610包括第一量化子层511、第一计算子层512,用于输出第一计算结果。
重量化层620,用于对第一线性计算层610输出的第一计算结果进行重量化操作以及ReLU运算,并输出第二量化数据。
第二线性计算层630包括第二计算子层532以及第二反量化子层533,用于对第二量化数据进行处理。
基于图6介绍的三级数据处理结构,介绍本申请实施例的基于神经网络的数据处理方法。图7是本申请实施例的基于神经网络的数据处理方法的流程图。图7所示的方法包括步骤710至步骤730。
710,采用与上述三级数据处理结构中相同的方法得到上述第一计算结果。
即,可以通过第一量化子层511,第一计算子层512得到第一计算结果。
720,对第一计算结果进行重量化操作以及ReLU运算得到第二量化数据。
基于上述公式(7)以及公式(8)的介绍可知,上述重量化操作与ReLU运算之间可以有两种实现方式。需要说明的是,为了便于描述,注意区分本申请实施例中的“重量化”以及“重量化操作”。其中,“重量化”包括上文中介绍的“重量化操作”以及ReLU运算。
实现方式一、对第一计算结果进行重量化得到重量化后的第一计算结果,所述重量化包括:将所述第一计算结果乘以重量化系数以得到所述重量化后的第一计算结果;对所述重量化后的第一计算结果进行所述ReLU运算以得到所述第二量化数据。
上述实现方式一为公式(7)表示的计算顺序。
实现方式二、对所述第一计算结果进行ReLU得到ReLU运算后的第一计算结果,对所述ReLU运算后的第一计算结果进行重量化,所述重量化包括:将所述ReLU运算后的第一计算结果乘以重量化系数以得到所述第二量化数据。
上述实现方式二为公式(8)介绍的计算顺序。
采用实现方式二时,由于ReLU运算可以通过比较器实现,则上述调整了ReLU运算以及重量化的运算顺序后,可以在从存储器中读取第一计算结果输入数据处理电路(例如,向量计算电路307)的过程中,让第一计算结果直接流经比较器,即完成ReLU运算(随路计算),然后将ReLU运算后的第一计算结果直接输入数据处理电路,如此,避免了在数据处理电路中执行ReLU运算,可以减少数据处理电路的计算量,减少数据处理电路处理数据占用的时间。
可选地,上述ReLU运算可以采用比较器实现,上述重量化操作可以采用向量计算电路307执行。
730,采用与所述三级数据处理结构中相同的方法对所述第二量化数据进行处理。
即,可以通过第二计算子层532,第二反量化子层533对所述第二量化数据进行处理。
通常,为了节省在线进行数据处理占用的时间,可以以离线的方式确定基于量化的神经网络,即确定各层的数据量化系数、量化后的权重、数据反量化系数、权重的反量化系数等。
为了便于理解,先结合图8简单说明在线对数据进行量化操作以及离线对权重进行量化操作的过程。图8是基于神经网络进行量化操作的示意性流程图。基于神经网络的量化过程可以分为离线过程810和在线过程820。
离线过程810,又称“离线校准(calibration)过程”,在该过程中,对神经网络每层对应的校准数据和权重进行统计,根据校准数据确定量化位宽、权重量化系数以及数据量化系数,并根据确定的量化位宽以及权重量化系数对每层的原始权重进行量化,得到量化后的权重。
需要说明的是,上述离线量化的过程可以由Soc上的CPU(例如,图3所示的
NPU)完成,还可以由计算云完成。
在线过程820,利用离线过程810中确定的量化位宽以及数据量化系数,对输入数据进行量化,然后将量化后的输入数据以及量化后的权重输入到神经网络专用引擎(例如,图3中的运算电路303)进行计算,最后对计算结果进行反量化。
在传统的神经网络计算架构中,每层线性计算层中对应的量化操作的量化位宽都是相同的。例如,图5所示的第一线性计算层中的量化位宽和第二线性计算层中的量化位宽都是8比特(bit)。这种配置量化位宽的方式,在保证神经网络的一定数据处理精度的前提下,使得通过量化操作减少的计算量非常有限。
基于量化原理的相关介绍,量化操作本质上属于有损的转换,在使用量化操作减少计算量的同时也会以降低神经网络的数据处理精度作为代价。按照目前量化位宽的配置方式,即神经网络整体使用一套量化位宽,若对神经网络的计算速度要求较高,则需要降低神经网络中每个线性计算层使用的量化位宽,如此,极有可能导致整个神经网络无法维持基本的数据处理精度。如果对神经网络的数据处理精度的要求较高,那么神经网络中每个线性计算层的量化位宽通常都较多,导致最终通过量化操作减少的计算量非常有限。因此,基于按照目前量化位宽的配置方式,导致基于神经网络计算的数据处理方法在数据处理精度或者数据处理速度等方面都无法满足用户需求,用户体验不够好。
为了使得基于神经网络计算的数据处理方法在数据处理精度或者数据处理速度等方面可以满足用户需求,提高用户体验,本申请提供了一种新的基于神经网络计算的数据处理方法,即基于用户需求的参数灵活配置神经网络中各个线性计算层对应的量化位宽。
下文结合图9详细说明本申请实施例的基于量化的神经网络的各层参数的选取过程。图9是本申请实施例的基于量化的神经网络的各层参数的选取过程的流程图。所述神经网络包括多个线性计算层(例如,图1或图2所示的卷积层、输入层、隐含层等)。所述方法至少用于其中一个线性计算层的数据处理。应理解,图9所述的方法可以由计算云执行,或者服务器执行。图9所示的方法包括步骤910至步骤970。
910,获取全精度神经网络模型中的每一层对应的校准输入数据以及权重,其中,所述全精度神经网络模型中的第一层的校准输入数据为预先准备的校准数据集中的数据,其余各层的校准输入数据为上一层的输出数据。
全精度神经网络模型可以理解为未经过量化、反量化操作的神经网络,也就是说,全精度神经网络中每层的输入数据,权重都可以是浮点型数据,例如,fp32。
920,获取每一层对应的所述校准输入数据的最优的最大值(max)以及所述权重的最优的最大值(max)。
930,根据每一层的所述校准输入数据的最优的最大值、所述权重的最优的最大值以及每一层可选的多种数据格式确定每一层的多个候选权重量化系数、多个候选数据量化系数、多个候选数据位宽、多个候选数据反量化系数以及多个候选权重量化系数。
可选地,上述数据格式包括:整型INT4,整型INT8,整型INT16,浮点型FP16或者浮点型FP32。
940,根据每一层的所述多个候选权重量化系数和所述全精度神经网络模型中每一层的权重得到每一层的多个量化后的候选权重。
上述根据多个候选权重量化系数和全精度神经网络模型每一层的权重得到每一层的多个候选量化后的权重,与上文中介绍量化原理时对一个权重进行量化的过程相同,为了简洁,在此不再具体介绍。
950,根据每一层的所述多个候选数据量化系数、所述多个候选数据反量化系数、所述多个候选权重量化系数以及所述多个量化后的候选权重确定多种基于量化的神经网络模型。
上述量化后的神经网络模型中的至少一层包括量化操作、数据处理操作以及反量化操作。
960,将所述校准数据集中的数据输入到所述多种基于量化的神经网络模型,统计多个运行结果。
上述运行结果可以包括:神经网络的性能数据,神经网络的功耗数据,或者神经网络的精度数据等。
970,根据所述多个运行结果从所述多种基于量化的神经网络模型中选择运行结果满足预设条件的基于量化的神经网络模型。
本申请实施例的提供的这种量化配置相对于传统的量化配置方式--整个神经网络的多个线性计算层必须使用相同的量化系数而言,有利于提高基于神经网络的量化配置的灵活性。
可选地,上述满足预设条件的基于量化的神经网络模型,可以在上述在线的过程中对数据进行处理。
需要说明的是,上述选择符合预设条件的每一层的所述数据量化系数、所述反量化系数、所述量化后的权重以及所述数据位宽可以通过多种方式实现,本申请实施例对此不作具体限定。例如,符合预设条件的每一层的数据量化系数、反量化系数、量化后的权重以及数据位宽分别包括多种情况,也就是说,每一层的多个候选数据量化系数、多个候选反量化系数、多个候选量化后的权重以及多个候选数据位宽(为了便于描述,这4中参数称为候选参数)都符合预设条件,那么可以从符合预设条件的候选参数中随机选择一种,或者,还可以从符合预设条件的候选参数中选择一个最优值。
其中,从符合预设条件的候选参数中选择一个最优值,例如,若预设条件为速度优先,那么从候选参数中选择数据位宽,以及权重位宽最少的;若预设条件为精度优先,那么从候选参数中选择数据位宽最多的,以及权重位宽最多的。
上述为每一层配置多个候选数据量化系数、多个候选反量化系数以及多个候选量化后的权重可以由多种量化配置得到的。量化配置中可以包含多个配置选项,多个量化配置中不同的量化配置中至少一个配置选项对应的参数不同。
应理解,上述不同量化配置中至少一个配置参数不同,可以包括不同量化配置中可以有一个配置参数的选取不同,或者不同量化配置中可以有多个配置参数的选取不同。
可选地,上述配置选项包括量化位宽、量化方式、相似度的计算方式以及量化系数的配置方式等。
上述量化系数包括量化位宽、量化系数,其中,量化位宽包括权重位宽和上文中的数据位宽,量化系数包括上文中的权重量化系数和数据量化。
可选地,上述量化位宽的参数可以包括4bit、8bit、16bit等。
可选地,上述量化方式的参数可以包括非对称带偏移(offset)的量化方式,以及对称不带偏移(offset)的量化方式。
可选地,上述相似度的计算方式用于确定基于量化后的神经网络计算得到的输出数据与未量化的神经网络(全精度的神经网络)计算得到的输出数据之间的相似度。具体可以包括基于KL(Kullback-Leibler)散度的计算方式、基于对称KL(Kullback-Leibler)散度的计算方式、基于JS(Jensen-Shannon divergence)散度的计算方式等。
也就是说,上述相似度的计算方式可以用于选取最优max。即,原始数据(全精度的数据)通过神经网络进行的数据处理的处理结果,与多种量化后的数据通过神经网络进行数据处理的处理结果,通过上述相似度的计算方式进行比较,选择与基于原始数据较接近的基于某一量化后的数据的处理结果,并将得到该量化后的数据使用的最大值作为最优max。
例如,表1示出了本申请实施例的多种配置选项的可供选择表格,可以根据表1所示的各个配置选项对应的可选参数,生成上述多种量化配置。
表1
可选地,上述量化系数的配置方式用于指示在一层线性计算层中量化系数对应的配置单位。上述配置单位可以包括线性计算层、线性计算层中的每个卷积核、线性计算层对应的输入通道、线性计算层对应的输出通道、线性计算层对应的输入数据的数据张量等。例如,以线性计算层为配置单位配置量化系数,则一个线性计算层对应的量化系数相同。又例如,以卷积核为配置单位配置量化系数,则一个线性计算层对应多个量化系数,每个卷积核对应的一个量化系数。
需要说明的是,上述各个配置选项对应的参数可以包含现有技术中该配置选项可能对应的全部参数,例如,相似度计算方式可以包括现有技术中全部的相似度计算方式。上述各个配置选项对应的参数还可以兼容未来该配置选项可能对应的全部参数。
如前文所述,数据量化系数以及权重量化系数是根据数据最优max以及权重最优max确定的,如果直接使用输入数据的最大值确定数据量化系数,使用原始权重的最大值确定权重量化系数,会降低量化操作的精度。因此,需要基于校准数据寻找数据最优max以及权重最优max,并基于数据最优max确定数据量化系数,基于权重最优max确定权重量化系数,以提高量化操作的准确度。
确定上述数据最优max以及权重最优max的方式可以使用现有技术中确定数据最优max以及权重最优max的方式,或者使用下文中介绍的确定上述数据最优max以及权重最优max的方式。需要说明的是,下文中介绍的确定数据最优max的方式和确定权重最优max的原理相同,为了简洁,下文以确定数据最优max的方式为例进行介绍,确定权重最优max的方式可以参照下文实现。
即,所述量化系数集合中每组量化系数包括量化系数,所述方法还包括:获取第一校准数据,并确定所述第一校准数据在所述每个线性计算层对应的多个候选的最优最大值;所述基于所述多种量化配置,确定所述多个线性计算层中每个线性计算层对应的量化系数集合,包括:根据所述多种量化配置,以及所述每个线性计算层对应的多个候选的最优最大值,确定所述每个线性计算层对应的多个量化系数,所述多个候选的最优最大值中的一个候选的最优最大值对应所述多个量化系数中的一个量化系数。
上述多个候选的最优max的确定方式有很多种,可以在第一校准数据的最大值|max|real附近搜索候选最优最大值,例如,可以在[0.7|max|real,1.3|max|real]的取值范围内进行选择多个候选最优max。也可以以第一校准数据的最大值|max|real为初始最大值,以预设步长为变换量,选择多个候选最优max。还可以基于量化配置中配置的多个相似度的确定方式,选择多个候选的最优最大值。
即,所述确定所述第一校准数据在所述每个线性计算层对应的多个候选的最优最大值,包括:根据所述第一校准数据确定所述第一校准数据在所述每个线性计算层对应的多个最大值;根据预设的多种所述相似度计算方式,从所述每个线性计算层对应的多个最大值中选择多个候选的最优最大值。
可选地,在本申请实施例中,还可以综合考虑三种相似度的确定方式为每层线性计算层选择一个最优max值,然后结合上述量化配置中不同的组合方式计算出不同的组合方式对应的量化系统,然后可以按照上文中基于预设的数据处理精度选择每层线性计算层对应的目标量化系数。
可选地,上述预设条件可以是用户需求的参数,可以用于指示用户需求的神经网络的性能参数,例如,可以是对神经网络计算的数据处理的精度,还可以是对神经网络计算的数据处理的速度,还可以是二者的结合,又或者是对神经网络的功耗等,本申请实施例对此不作具体限定。
上述用户需求可以是在离线过程中,为神经网络配置量化系数之前由用户提供的,还可以是在执行离线过程之前由用户提供,以便离线过程中作为为神经网络配置量化系数的参考因素。
在本申请实施例中,基于用户需求的参数的数据量化系数、量化后的权重值以及反量化系数,有利于使得当前线性计算层对数据的量化过程、反量化过程以及数据处理过程满足用户需求,提高用户体验。避免了传统的量化配置方式中,无法结合用户需求配置数据量化系数、量化后的权重值以及反量化系数。
进一步,若神经网络中的大多线性计算层,或者全部线性计算层都按照本申请实施例的方式配置,有利于使得基于神经网络计算的对数据的量化过程、反量化过程以及数据处理过程满足用户需求,提高用户体验。避免了传统的量化配置方式中,整个神经网络使用一套固定的数据量化系数以及反量化系数,无法结合用户需求进行配置。
可选地,上述基于量化的神经网络中的至少两层线性计算层对应的量化位宽可以不同。
可选地,上述基于量化的神经网络中每层的数据量化系数、每层的量化后的权重以及每层的反量化系数可以存储在一个参数文件中,也可以存储在多个参数文件中。例如,上述数据量化系数以及反量化系数可以存储在一个参数文件中,并存储在图3所示的统一存储器306中,上述量化后权重可以存储在另一个参数文件中,并可以存储在权重存储器302中。本申请实施例对此不作具体限定。
可选地,上述基于量化的神经网络中任一线性计算层(例如第一线性计算层,或者第二线性计算层)对应的数据量化系数中的数据位宽以及反量化系数中的数据位宽可以是一个也可以是多个。若数据量化系数中的数据位宽以及反量化系数中的数据位宽为一个时,可以理解为,当前线性计算层中包含的多个量化过程,数据处理过程,以及反量化过程中使用的数据量化系数中的数据位宽以及反量化系数中的数据位宽相同。若数据量化系数中的数据位宽以及反量化系数中的数据位宽为多个时,可以理解为,当前线性计算层中包含的多个量化过程,数据处理过程,以及反量化过程中使用的数据量化系数中的数据位宽以及反量化系数中的数据位宽可以不同。
例如,当前线性计算层中对应多个数据张量(tensor),每个数据张量可以对应一个数据位宽。又例如,当前线性计算层对应多个输入通道(input channel)时,每个输入通道可以对应一个数据位宽。又例如,当前线性计算层对应多个输出通道(output channel)时,每个输出通道可以对应一个数据位宽。
上述图9所示的方法可以与图7所述的重量化方法结合使用,也就说,在通过图9的方式确定基于量化的神经网络中第一线性计算层中的第一数据反量化系数、第一权值反量化系数以及第二线性计算层中的第二数据量化系统后,可以离线计算重量化系数。当然,图9所示的方法还可以与图5所示的传统的三级数据处理结构结合使用,本申请实施例对此不做限定。
上文结合图1至图9介绍了本申请实施例的方法,下文结合图10和图11介绍本申请实施例的装置。需要说明的是,图10和图11所示的装置可以实现上述方法中各个步骤,为了简洁,在此不再赘述。
图10是本申请实施例的基于量化的神经网络的计算设备的示意图。其中,量化的神经网络包括三级数据处理结构,所述三级数据处理结构包括:第一线性计算层、数据处理层以及第二线性计算层,具体地可以参见图6的相关介绍,为了简洁,在此不再赘述。图10所述的计算设备1000包括第一量化电路1010,第一计算电路1020,重量化电路1030以及ReLU电路1040。
所述第一计算电路1020,用于采用与所述三级数据处理结构中相同的方法得到所述第一计算结果;
所述重量化电路1030,用于对所述第一计算结果进行重量化得到重量化后的第一计算结果,所述重量化包括:将所述第一计算结果乘以重量化系数以得到所述重量化后的第一计算结果;所述ReLU电路1040用于对所述重量化后的第一计算结果进行所述ReLU运算以得到所述第二量化数据;或者,所述ReLU电路1040用于对所述第一计算结果进行ReLU得到ReLU运算后的第一计算结果,所述重量化电路1030用于对所述ReLU运算后的第一计算结果进行重量化,所述重量化包括:将所述ReLU运算后的第一计算结果乘以重量化系数以得到所述第二量化数据;
所述第一量化电路1010,用于采用与所述三级数据处理结构中相同的方法对所述第二量化数据进行处理;其中,所述重量化系数等于所述第一数据量化系数乘以所述第一权重量化系数再除以所述第二数据量化系数。
可选地,作为一个实施例,所述ReLU电路1040包括比较器,所述比较器设置于数据通路中,所述数据通路为所述计算设备的存储器到所述重量化电路1030的输入之间的数据通路,所述比较器,用于对从所述存储器中获取的第一计算结果进行所述ReLU运算,以得到所述ReLU运算后的第一计算结果;所述重量化电路1030,用于从所述比较器处获取所述ReLU运算后的第一计算结果。
可选地,上述第一计算电路1020可以包括运算电路303,上述第一计算电路1120还可以包括上述累加器308。
可选地,上述重量化电路1030可以属于向量计算电路307。
可选地,上述ReLU电路1040也可以属于向量计算电路307。若上述ReLU电路通过比较器实现时,比较器可以位于累加器308与向量计算电路307。此时,上述存储器可以理解为累加器308中的存储单元。
可选地,作为一个实施例,所述比较器的输出作为所述重量化电路的输入。
可选地,作为一个实施例,所述计算设备包括向量计算电路,所述向量计算电路包括所述重量化电路以及所述ReLU电路。
可选地,作为一个实施例,所述第一线性计算层中的量化位宽与所述第二线性计算层中的量化位宽不同。
可选地,作为一个实施例,所述第一权重量化系数、所述第一数据量化系数以及所述第二数据量化系数是基于预设条件确定的,所述预设条件包括:性能最优,功耗最优或者精度最优。
图11是本申请实施例的基于量化神经网络的计算系统1100的示意图。该计算系统1100包括图10所示的计算设备1000,还包括神经网络模型的训练设备1110。所述训练设备1110包括至少一个处理器1111和至少一个存储器1112。
所述至少一个处理器1111用于:
从所述至少一个存储器1112中获取全精度神经网络模型中的每一层对应的校准输入数据以及权重,其中,所述全精度神经网络模型中的第一层的校准输入数据为预先准备的校准数据集中的数据,其余各层的校准输入数据为上一层的输出数据;
获取每一层对应的所述校准输入数据的最优的最大值以及所述权重的最优的最大值;
根据每一层的所述校准输入数据的最优的最大值、所述权重的最优的最大值以及每一层可选的多种数据格式确定每一层的多个候选权重量化系数、多个候选数据量化系数、多个候选数据位宽、多个候选数据反量化系数以及多个候选权重量化系数;
根据每一层的所述多个候选权重量化系数和所述全精度神经网络模型中每一层的权重得到每一层的多个量化后的候选权重;
根据每一层的所述多个候选数据量化系数、所述多个候选数据反量化系数、所述多个候选权重量化系数以及所述多个量化后的候选权重确定多种基于量化的神经网络模型;
将所述校准数据集中的数据输入到所述多种基于量化的神经网络模型,统计多个运行结果;
根据所述多个运行结果从所述多种基于量化的神经网络模型中选择运行结果满足预设条件的所述基于量化的神经网络模型。
可选地,上述神经网络的训练设备可以是服务器或者计算云等。
可选地,作为一个实施例,所述数据格式包括:整型INT4,整型INT8,整型INT16,浮点型FP16或者浮点型FP32。
可选地,作为一个实施例,所述预设条件包括:性能最优,功耗最优或者精度最优。
可选地,作为一个实施例,所述运行结果包括:性能数据,功耗数据,或者精度数据。
应理解,本申请实施例中,该存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。处理器的一部分还可以包括非易失性随机存取存储器。例如,处理器还可以存储设备类型的信息。
应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够读取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digital video disc,DVD))或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (16)

1.一种基于量化的神经网络的数据处理方法,其特征在于,所述基于量化的神经网络包括三级数据处理结构,所述三级数据处理结构包括:第一线性计算层、修正线性单元ReLU层以及第二线性计算层;其中,
所述第一线性计算层包括第一量化子层、第一计算子层以及第一反量化子层;所述第一量化子层用于根据第一数据量化系数对输入数据进行量化,得到第一量化数据;所述第一计算子层用于根据量化后的第一权重对所述第一量化数据进行计算,得到第一计算结果,所述第一反量化子层用于对所述第一计算结果进行反量化,得到第一输出数据;所述量化后的第一权重根据第一权重量化系数得到;
所述ReLU层用于对所述第一输出数据进行ReLU运算,得到中间输出数据;
所述第二线性计算层包括第二量化子层、第二计算子层以及第二反量化子层;所述第二量化子层用于根据第二数据量化系数对所述中间输出数据进行量化,得到第二量化数据;所述第二计算子层用于对所述第二量化数据进行计算,得到第二计算结果,所述第二反量化子层用于根据第二反量化系数对所述第二计算结果进行反量化,得到第二输出数据;
所述数据处理方法包括:
采用与所述三级数据处理结构中相同的方法对所述输入数据进行处理,以得到所述第一计算结果,其中,所述输入数据为图像;
对所述第一计算结果进行重量化得到重量化后的第一计算结果,所述重量化包括:将所述第一计算结果乘以重量化系数以得到所述重量化后的第一计算结果;对所述重量化后的第一计算结果进行所述ReLU运算以得到所述第二量化数据;或者,对所述第一计算结果进行ReLU得到ReLU运算后的第一计算结果,对所述ReLU运算后的第一计算结果进行重量化,所述重量化包括:将所述ReLU运算后的第一计算结果乘以重量化系数以得到所述第二量化数据;
采用与所述三级数据处理结构中相同的方法对所述第二量化数据进行处理,以得到所述第二输出数据,其中,所述第二输出数据为所述图像的特征信息;
其中,所述重量化系数等于所述第一数据量化系数乘以所述第一权重量化系数再除以所述第二数据量化系数。
2.如权利要求1所述的方法,其特征在于,所述第一计算结果被存储在存储器中,所述对所述第一计算结果进行ReLU得到ReLU运算后的第一计算结果包括:
将所述第一计算结果从所述存储器中读出;
将所述第一计算结果通过数据通路上的比较器来完成所述ReLU运算,以得到所述ReLU运算后的第一计算结果。
3.如权利要求2所述的方法,其特征在于,所述重量化由重量化电路来处理,所述比较器的输出作为所述重量化电路的输入。
4.如权利要求3所述的方法,其特征在于,所述数据通路为数据从所述存储器到所述重量化电路的输入之间的路径。
5.如权利要求1-4中任一项所述的方法,其特征在于,在所述采用与所述三级数据处理结构中相同的方法得到所述第一计算结果之前,所述方法还包括:
获取全精度神经网络模型中的每一层对应的校准输入数据以及权重,其中,所述全精度神经网络模型中的第一层的校准输入数据为预先准备的校准数据集中的数据,其余各层的校准输入数据为上一层的输出数据;
获取每一层对应的所述校准输入数据的最优的最大值以及所述权重的最优的最大值;
根据每一层的所述校准输入数据的最优的最大值、所述权重的最优的最大值以及每一层可选的多种数据格式确定每一层的多个候选权重量化系数、多个候选数据量化系数、多个候选数据位宽、多个候选数据反量化系数以及多个候选权重量化系数;
根据每一层的所述多个候选权重量化系数和所述全精度神经网络模型中每一层的权重得到每一层的多个量化后的候选权重;
根据每一层的所述多个候选数据量化系数、所述多个候选数据反量化系数、所述多个候选权重量化系数以及所述多个量化后的候选权重确定多种基于量化的神经网络模型;
将所述校准数据集中的数据输入到所述多种基于量化的神经网络模型,统计多个运行结果;
根据所述多个运行结果从所述多种基于量化的神经网络模型中选择运行结果满足预设条件的所述基于量化的神经网络模型。
6.如权利要求5所述的方法,其特征在于,所述数据格式包括:整型INT4,整型INT8,整型INT16,浮点型FP16或者浮点型FP32。
7.如权利要求5所述的方法,其特征在于,所述预设条件包括:性能最优,功耗最优或者精度最优。
8.如权利要求5所述的方法,其特征在于,所述运行结果包括:性能数据,功耗数据,或者精度数据。
9.一种基于量化的神经网络的计算设备,其特征在于,所述基于量化的神经网络包括三级数据处理结构,所述三级数据处理结构包括:第一线性计算层、修正线性单元ReLU层以及第二线性计算层,其中,
所述第一线性计算层包括第一量化子层、第一计算子层以及第一反量化子层;所述第一量化子层用于根据第一数据量化系数对输入数据进行量化,得到第一量化数据;所述第一计算子层用于根据量化后的第一权重对所述第一量化数据进行计算,得到第一计算结果,所述第一反量化子层用于对所述第一计算结果进行反量化,得到第一输出数据;所述量化后的第一权重根据第一权重量化系数得到;
所述ReLU层用于对所述第一输出数据进行ReLU运算,得到中间输出数据;
所述第二线性计算层包括第二量化子层、第二计算子层以及第二反量化子层;所述第二量化子层用于根据第二数据量化系数对所述中间输出数据进行量化,得到第二量化数据;所述第二计算子层用于对所述第二量化数据进行计算,得到第二计算结果,所述第二反量化子层用于根据第二反量化系数对所述第二计算结果进行反量化,得到第二输出数据;
所述计算设备用于实现三级数据处理结构的功能,所述计算设备包括:第一量化电路、第一计算电路、重量化电路、ReLU电路;
所述第一计算电路用于采用与所述三级数据处理结构中相同的方法对所述输入数据进行处理,以得到所述第一计算结果,其中,所述输入数据为图像;
所述重量化电路用于对所述第一计算结果进行重量化得到重量化后的第一计算结果,所述重量化包括:将所述第一计算结果乘以重量化系数以得到所述重量化后的第一计算结果;所述ReLU电路用于对所述重量化后的第一计算结果进行所述ReLU运算以得到所述第二量化数据;或者,所述ReLU电路用于对所述第一计算结果进行ReLU得到ReLU运算后的第一计算结果,所述重量化电路用于对所述ReLU运算后的第一计算结果进行重量化,所述重量化包括:将所述ReLU运算后的第一计算结果乘以重量化系数以得到所述第二量化数据;
所述第一量化电路,用于采用与所述三级数据处理结构中相同的方法对所述第二量化数据进行处理,以得到所述第二输出数据,其中,所述第二输出数据为所述图像的特征信息;
其中,所述重量化系数等于所述第一数据量化系数乘以所述第一权重量化系数再除以所述第二数据量化系数。
10.如权利要求9所述的计算设备,其特征在于,所述ReLU电路包括比较器,所述比较器设置于数据通路中,所述数据通路为所述重量化电路与所述计算设备的存储器之间的数据通路,
所述比较器,用于对从所述存储器中获取的第一计算结果进行所述ReLU运算,以得到所述ReLU运算后的第一计算结果;
所述重量化电路,用于从所述比较器处获取所述ReLU运算后的第一计算结果。
11.如权利要求10所述的计算设备,其特征在于,所述比较器的输出作为所述重量化电路的输入。
12.如权利要求9所述的计算设备,其特征在于,所述计算设备包括向量计算电路,所述向量计算电路包括所述重量化电路以及所述ReLU电路。
13.如权利要求9-12中任一项所述的计算设备,其特征在于,所述第一线性计算层的数据格式或者第二线性层的数据格式为以下多种数据格式中的任一种,所述多种数据格式包括整型INT4,整型INT8,整型INT16,浮点型FP16或者浮点型FP32。
14.如权利要求9-12中任一项所述的计算设备,其特征在于,所述第一权重量化系数、所述第一数据量化系数以及所述第二数据量化系数是基于预设条件确定的,所述预设条件包括:性能最优,功耗最优或者精度最优。
15.一种计算系统,其特征在于,包括控制器以及计算设备,
所述控制器通过向所述计算设备发射多条指令,以控制所述计算设备执行如权利要求1-8中任一项所述的数据处理方法。
16.一种计算系统,其特征在于,包括控制器以及如权利要求9-14中任一项所述的计算设备。
CN201910517485.4A 2019-06-14 2019-06-14 基于神经网络计算的数据处理方法和装置 Active CN112085175B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910517485.4A CN112085175B (zh) 2019-06-14 2019-06-14 基于神经网络计算的数据处理方法和装置
PCT/CN2020/095823 WO2020249085A1 (zh) 2019-06-14 2020-06-12 基于神经网络计算的数据处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910517485.4A CN112085175B (zh) 2019-06-14 2019-06-14 基于神经网络计算的数据处理方法和装置

Publications (2)

Publication Number Publication Date
CN112085175A CN112085175A (zh) 2020-12-15
CN112085175B true CN112085175B (zh) 2024-05-03

Family

ID=73734189

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910517485.4A Active CN112085175B (zh) 2019-06-14 2019-06-14 基于神经网络计算的数据处理方法和装置

Country Status (2)

Country Link
CN (1) CN112085175B (zh)
WO (1) WO2020249085A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10977854B2 (en) 2018-02-27 2021-04-13 Stmicroelectronics International N.V. Data volume sculptor for deep learning acceleration
CN113570033B (zh) 2021-06-18 2023-04-07 北京百度网讯科技有限公司 神经网络处理单元、神经网络的处理方法及其装置
EP4336409A1 (en) * 2022-09-12 2024-03-13 STMicroelectronics S.r.l. Neural network hardware accelerator circuit with requantization circuits

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106951962A (zh) * 2017-03-22 2017-07-14 北京地平线信息技术有限公司 用于神经网络的复合运算单元、方法和电子设备
CN108108811A (zh) * 2017-12-18 2018-06-01 北京地平线信息技术有限公司 神经网络中的卷积计算方法和电子设备
CN108734272A (zh) * 2017-04-17 2018-11-02 英特尔公司 卷积神经网络优化机构
CN109615068A (zh) * 2018-11-08 2019-04-12 阿里巴巴集团控股有限公司 一种对模型中的特征向量进行量化的方法和装置
CN109754063A (zh) * 2017-11-07 2019-05-14 三星电子株式会社 用于学习低精度神经网络的方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI630544B (zh) * 2017-02-10 2018-07-21 耐能股份有限公司 卷積神經網路的運算裝置及方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106951962A (zh) * 2017-03-22 2017-07-14 北京地平线信息技术有限公司 用于神经网络的复合运算单元、方法和电子设备
CN108734272A (zh) * 2017-04-17 2018-11-02 英特尔公司 卷积神经网络优化机构
CN109754063A (zh) * 2017-11-07 2019-05-14 三星电子株式会社 用于学习低精度神经网络的方法及装置
CN108108811A (zh) * 2017-12-18 2018-06-01 北京地平线信息技术有限公司 神经网络中的卷积计算方法和电子设备
CN109615068A (zh) * 2018-11-08 2019-04-12 阿里巴巴集团控股有限公司 一种对模型中的特征向量进行量化的方法和装置

Also Published As

Publication number Publication date
CN112085175A (zh) 2020-12-15
WO2020249085A1 (zh) 2020-12-17

Similar Documents

Publication Publication Date Title
CN111652368B (zh) 一种数据处理方法及相关产品
US11144828B2 (en) Training task optimization system, training task optimization method and non-transitory computer readable medium for operating the same
US9916531B1 (en) Accumulator constrained quantization of convolutional neural networks
US11003736B2 (en) Reduced dot product computation circuit
US20200097827A1 (en) Processing method and accelerating device
CN112085175B (zh) 基于神经网络计算的数据处理方法和装置
US20200117981A1 (en) Data representation for dynamic precision in neural network cores
CN110929865B (zh) 网络量化方法、业务处理方法及相关产品
JP2021072103A (ja) 人工ニューラルネットワークの量子化方法とそのためのシステム及び人工ニューラルネットワーク装置
WO2021135715A1 (zh) 一种图像压缩方法及装置
US11704556B2 (en) Optimization methods for quantization of neural network models
US20240135174A1 (en) Data processing method, and neural network model training method and apparatus
CN111223128A (zh) 目标跟踪方法、装置、设备及存储介质
WO2020003043A1 (en) Low precision deep neural network enabled by compensation instructions
CN113238989A (zh) 将数据进行量化的设备、方法及计算机可读存储介质
CN110874627A (zh) 数据处理方法、数据处理装置及计算机可读介质
CN114698395A (zh) 神经网络模型的量化方法和装置、数据处理的方法和装置
CN110337636A (zh) 数据转换方法和装置
US11423313B1 (en) Configurable function approximation based on switching mapping table content
CN113238987B (zh) 量化数据的统计量化器、存储装置、处理装置及板卡
JP2022512211A (ja) 画像処理方法、装置、車載演算プラットフォーム、電子機器及びシステム
CN111385601A (zh) 一种视频审核的方法及系统
CN112686365A (zh) 运行神经网络模型的方法、装置和计算机设备
WO2023109748A1 (zh) 一种神经网络的调整方法及相应装置
CN114065913A (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