CN116384445A - 神经网络模型的处理方法和相关装置 - Google Patents
神经网络模型的处理方法和相关装置 Download PDFInfo
- Publication number
- CN116384445A CN116384445A CN202211722034.2A CN202211722034A CN116384445A CN 116384445 A CN116384445 A CN 116384445A CN 202211722034 A CN202211722034 A CN 202211722034A CN 116384445 A CN116384445 A CN 116384445A
- Authority
- CN
- China
- Prior art keywords
- fixed point
- network layer
- weight
- neural network
- layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003062 neural network model Methods 0.000 title claims abstract description 55
- 238000003672 processing method Methods 0.000 title abstract description 5
- 238000000034 method Methods 0.000 claims abstract description 68
- 238000013139 quantization Methods 0.000 claims abstract description 23
- 230000015654 memory Effects 0.000 claims description 41
- 238000004364 calculation method Methods 0.000 claims description 34
- 238000012545 processing Methods 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 12
- YBJHBAHKTGYVGT-ZKWXMUAHSA-N (+)-Biotin Chemical compound N1C(=O)N[C@@H]2[C@H](CCCCC(=O)O)SC[C@@H]21 YBJHBAHKTGYVGT-ZKWXMUAHSA-N 0.000 claims description 9
- FEPMHVLSLDOMQC-UHFFFAOYSA-N virginiamycin-S1 Natural products CC1OC(=O)C(C=2C=CC=CC=2)NC(=O)C2CC(=O)CCN2C(=O)C(CC=2C=CC=CC=2)N(C)C(=O)C2CCCN2C(=O)C(CC)NC(=O)C1NC(=O)C1=NC=CC=C1O FEPMHVLSLDOMQC-UHFFFAOYSA-N 0.000 claims description 9
- 238000013528 artificial neural network Methods 0.000 abstract description 41
- 230000008569 process Effects 0.000 abstract description 24
- 239000011159 matrix material Substances 0.000 description 50
- 238000012549 training Methods 0.000 description 42
- 230000006870 function Effects 0.000 description 34
- 238000013527 convolutional neural network Methods 0.000 description 30
- 230000004913 activation Effects 0.000 description 23
- 239000013598 vector Substances 0.000 description 20
- 238000007781 pre-processing Methods 0.000 description 16
- 230000001537 neural effect Effects 0.000 description 11
- 210000002569 neuron Anatomy 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 239000004973 liquid crystal related substance Substances 0.000 description 8
- 230000004927 fusion Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 238000010606 normalization Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013480 data collection Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Facsimile Image Signal Circuits (AREA)
- Image Analysis (AREA)
- Color Image Communication Systems (AREA)
Abstract
Description
技术领域
本申请实施例涉及人工智能领域,并且更为具体地,涉及一种神经网络模型的处理方法、处理装置、计算机存储介质和计算机程序产品。
背景技术
人工智能领域,可以使用定点量化计算方法实现神经网络模型中的运算,例如,使用定点量化计算方法实现神经网络模型中的矩阵运算。
使用定点量化计算方法实现神经网络模型中的运算时,需要提高计算速度,减少其占用的内存和消耗的功耗。
发明内容
本申请实施例提供了一种神经网络模型的处理方法、处理装置、计算机存储介质和计算机程序产品。下面对本申请实施例的各个方面进行介绍。
第一方面,提供一种神经网络模型的处理方法,包括:获取m、Za、M0、Zw、qw和qb,m和M0满足关系式M=2―mM0,M满足关系式其中,Sw表示所述神经网络模型中的第一网络层的实数权重与定点数权重之间的比值,所述第一网络层的浮点计算表达式为a=wx+b,Sx表示所述第一网络层的实数输入与定点数输入之间的比值,Sa表示所述第一网络层的实数输出与定点数输出之间的比值,M0是一个定点数,qb表示b的定点数,Zw表示实数中的0经过量化后对应的定点数权重,Za表示实数中的0经过量化后对应的定点数输出,qw为使用缩放因子Sw对所述第一网络层的实数权重进行量化所得到的定点数权重;获取使用移位量化方式对Za、Zw、qw和qb分别进行量化所得到的/>和/>根据m和/>确定/>根据m和/>确定/>根据m和/>确定/>根据m和/>确定/>以使得所述第一网络层的定点计算表达式更新为第一表达式/>qa表示所述第一网络层的定点数输出。
第二方面,提供一种神经网络模型的处理装置,包括:获取单元,用于获取m、Za、M0、Zw、qw和qb,m和M0满足关系式M=2―mM0,M满足关系式其中,Sw表示所述神经网络模型中的第一网络层的实数权重与定点数权重之间的比值,所述第一网络层的浮点计算表达式为a=wx+b,Sx表示所述第一网络层的实数输入与定点数输入之间的比值,Sa表示所述第一网络层的实数输出与定点数输出之间的比值,M0是一个定点数,qb表示b的定点数,Zw表示实数中的0经过量化后对应的定点数权重,Za表示实数中的0经过量化后对应的定点数输出,qw为使用缩放因子Sw对所述第一网络层的实数权重进行量化所得到的定点数权重;所述获取单元,用于获取使用移位量化方式对Za、Zw、qw和qb分别进行量化所得到的/>和/>确定单元,用于根据m和/>确定/>根据m和/>确定/>根据m和/>确定/>根据m和/>确定/>以使得所述第一网络层的定点计算表达式更新为第一表达式/> qa表示所述第一网络层的定点数输出。
第三方面,提供一种神经网络模型的处理装置,包括存储器和处理器,所述存储器用于存储程序,所述处理器用于调用所述存储器中的程序,以执行如第一方面所述的方法。
第四方面,提供一种芯片,包括:存储器,用于存储代码;处理器,用于执行所述存储器中存储的代码,以执行如第一方面所述的方法。
第五方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序用于执行如第一方面所述的方法。
在本申请实施例中,将网络层的缩放因子方式的定点计算式中的缩放因子关联的移位操作在神经网络模型的预处理阶段融合到该网络层权重的移位量化操作中,从而可以减少神经网络模型在推理过程中移位操作,进而可以降低推理过程消耗的资源。
此外,本申请实施例中,将网络层的缩放因子方式的定点计算式中的缩放因子关联的乘法操作在神经网络模型的预处理阶段融合到该网络层或其他层的权重中,从而可以减少神经网络模型在推理过程中的乘法操作,进而可以降低推理过程消耗的资源。
附图说明
图1是本申请一个实施例的神经网络模型的结构示意图。
图2是本申请一个实施例的神经网络***的示例性架构图。
图3为本申请实施例提供的一种芯片硬件结构的结构示意图。
图4是本申请一个实施例提供的神经网络模型的处理方法的流程示意图。
图5是本申请一个实施例提供的神经网络模型的处理装置的结构示意图。
图6是本申请实施例提供的装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。
本申请实施例涉及了大量神经网络的相关应用,为了更好地理解本申请实施例的方案,下面先对本申请实施例可能涉及的神经网络的相关术语和概念进行介绍。
(1)神经网络
神经网络可以是由神经单元组成的,神经单元可以是指以xs和截距1为输入的运算单元,该运算单元的输出可以如公式(1)所示:
其中,s=1、2、……n,n为大于1的自然数,Ws为xs的权重,b为神经单元的偏置。f为神经单元的激活函数(activation functions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入,激活函数可以是sigmoid函数。神经网络是将多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。
(2)深度神经网络
深度神经网络(deep neural network,DNN),也称多层神经网络,可以理解为具有多层隐含层的神经网络。按照不同层的位置对DNN进行划分,DNN内部的神经网络可以分为三类:输入层,隐含层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。
虽然DNN看起来很复杂,但是就每一层的工作来说,其实并不复杂,简单来说就是如下线性关系表达式:其中,/>是输入向量,/>是输出向量,/>是偏移向量,W是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量/>经过如此简单的操作得到输出向量/>由于DNN层数多,系数W和偏移向量/>的数量也比较多。这些参数在DNN中的定义如下所述:以系数W为例:假设在一个三层的DNN中,第二层的第4个神经元到第三层的第2个神经元的线性系数定义为/>上标3代表系数W所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。
需要注意的是,输入层是没有W参数的。在深度神经网络中,更多的隐含层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络的也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络的所有层的权重矩阵(由很多层的向量W形成的权重矩阵)。
(3)卷积神经网络
卷积神经网络(convolutional neuron network,CNN)是一种带有卷积结构的深度神经网络。卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器,该特征抽取器可以看作是滤波器。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取信息的方式与位置无关。卷积核可以以随机大小的矩阵的形式初始化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。
(4)损失函数
在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断地调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。
(5)反向传播算法
神经网络可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始的神经网络模型中参数的大小,使得神经网络模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的神经网络模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的神经网络模型的参数,例如权重矩阵。
由于CNN是一种非常常见的神经网络,下面结合图1重点对CNN的结构进行详细的介绍。如上文的基础概念介绍所述,卷积神经网络是一种带有卷积结构的深度神经网络,是一种深度学习(deep learning)架构,深度学习架构是指通过机器学习的算法,在不同的抽象层级上进行多个层次的学习。作为一种深度学习架构,CNN是一种前馈(feed-forward)人工神经网络,该前馈人工神经网络中的各个神经元可以对输入其中的待处理数据作出响应。
如图1所示,卷积神经网络(CNN)100可以包括输入层110,卷积层120、全连接层130、激活函数层140和输出层150。下面对这些层的相关内容做详细介绍。
可以理解的是,图1所示的CNN仅是一种示例,本申请实施例中的CNN可以包括更多或更少的层,例如,还可以包括更多的卷积层、全连接层、激活函数层,还可以包括池化层。
输入层110可以获取待处理数据,待处理数据可以为输入图像,也可以为其他数据。待处理数据可以为矩阵,例如,二维或三维矩阵。
卷积层120可以包括很多个卷积算子,卷积算子也称为核,其在模型处理中的作用相当于一个从输入的待处理数据(例如输入图像)中提取特定信息的过滤器,卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义,在对数据进行卷积操作的过程中,权重矩阵通常在输入数据(输入矩阵)上沿着水平方向一个像素接着一个像素(或两个像素接着两个像素……这取决于步长stride的取值)的进行处理,从而完成从数据中提取特定特征的工作。该权重矩阵的大小应该与数据的大小相关,需要注意的是,权重矩阵的纵深维度(depth dimension)和输入数据的纵深维度是相同的,在进行卷积运算的过程中,权重矩阵会延伸到输入数据的整个深度。因此,和一个单一的权重矩阵进行卷积会产生一个单一纵深维度的卷积化输出,但是大多数情况下不使用单一权重矩阵,而是应用多个尺寸(行×列)相同的权重矩阵,即多个同型矩阵。每个权重矩阵的输出被堆叠起来形成卷积数据的纵深维度,这里的维度可以理解为由上面所述的“多个”来决定。不同的权重矩阵可以用来提取数据中不同的特征,例如一个权重矩阵用来提取图像边缘信息,另一个权重矩阵用来提取图像的特定颜色,又一个权重矩阵用来对图像中不需要的噪点进行模糊化等。该多个权重矩阵尺寸(行×列)相同,经过该多个尺寸相同的权重矩阵提取后的特征图的尺寸也相同,再将提取到的多个尺寸相同的特征图合并形成卷积运算的输出。
这些权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以用来从输入数据中提取信息,从而使得卷积神经网络100进行正确的预测。
当卷积神经网络100有多个卷积层的时候,初始的卷积层往往提取较多的一般特征,该一般特征也可以称之为低级别的特征;随着卷积神经网络100深度的加深,越往后的卷积层提取到的特征越来越复杂,比如高级别的语义之类的特征,语义越高的特征越适用于待解决的问题。
在经过卷积层的处理后,卷积神经网络100还不足以输出所需要的输出信息。因为如前所述,卷积层120只会提取特征,并减少输入带来的参数。然而为了生成最终的输出信息(所需要的类信息或其他相关信息),卷积神经网络100需要利用全连接层130来生成一个或者一组所需要的类的数量的输出。
激活函数层140对全连接层130的输出进行分类,并输出分类结果。激活函数层140可以为激活函数为relu的层;或者,激活函数层140也可以为激活函数为linear、prelu或sigmoid的层。
输出层150具有类似分类交叉熵的损失函数,具体用于计算预测误差,一旦整个卷积神经网络100的前向传播完成,反向传播就会开始更新前面提到的各层的权重值以及偏差,以减少卷积神经网络100的损失,及卷积神经网络100通过输出层输出的结果和理想结果之间的误差。
需要说明的是,如图1所示的卷积神经网络100仅作为一种卷积神经网络的示例,在具体的应用中,卷积神经网络还可以以其他网络模型的形式存在。
图2为本申请一个实施例的神经网络***200的示例性架构图。在图2中,数据采集设备260用于采集训练数据。针对图像分类方法来说,训练数据可以包括训练图像以及训练图像对应的分类结果,其中,训练图像的分类结果可以是人工预先标注的结果。
在采集到训练数据之后,数据采集设备260将这些训练数据存入数据库230,训练设备220基于数据库230中维护的训练数据训练得到目标模型201。
下面以输入数据包含图像为例,对训练设备220基于训练数据得到目标模型201进行描述。训练设备220对输入的原始图像进行处理,将输出的图像与原始图像进行对比,直到训练设备220输出的图像与原始图像的差值小于一定的阈值,从而完成目标模型201的训练。
上述目标模型201能够用于数据处理,例如,对输入图像进行图像分类,即,将待处理图像通过相关预处理后输入该目标模型201,即可得到图像的分类结果。本申请实施例中的目标模型201具体可以为神经网络。需要说明的是,在实际的应用中,所述数据库230中维护的训练数据不一定都来自于数据采集设备260的采集,也有可能是从其他设备接收得到的。另外需要说明的是,训练设备220也不一定完全基于数据库230维护的训练数据进行目标模型201的训练,也有可能从云端或其他地方获取训练数据进行模型训练,上述描述不应该作为对本申请实施例的限定。
根据训练设备220训练得到的目标模型201可以应用于不同的***或设备中,如应用于图2所示的执行设备210,所述执行设备210可以是终端,如手机终端,平板电脑,笔记本电脑,增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR),车载终端等,还可以是服务器或者云端设备等。在图2中,执行设备210配置输入/输出(input/output,I/O)接口212,用于与外部设备进行数据交互,用户可以通过客户设备240向I/O接口212输入数据,所述输入数据在本申请实施例中可以包括:客户设备输入的待处理图像。
预处理模块213和预处理模块214用于根据I/O接口212接收到的输入数据(如待处理图像)进行预处理,在本申请实施例中,也可以没有预处理模块213和预处理模块214(也可以只有其中的一个预处理模块),而直接采用计算模块211对输入数据进行处理。
在执行设备210对输入数据进行预处理,或者在执行设备210的计算模块211执行计算等相关的处理过程中,执行设备210可以调用数据存储***250中的数据、代码等以用于相应的处理,也可以将相应处理得到的数据、指令等存入数据存储***250中。
最后,I/O接口212将处理结果,如上述得到的输出结果(如待处理图像的分类结果)返回给客户设备240,从而提供给用户。
值得说明的是,训练设备220可以针对不同的目标或称不同的任务,基于不同的训练数据生成相应的目标模型201,该相应的目标模型201即可以用于实现上述目标或完成上述任务,从而为用户提供所需的结果。
在图2所示情况下,用户可以手动给定输入数据,该手动给定可以通过I/O接口212提供的界面进行操作。另一种情况下,客户设备240可以自动地向I/O接口212发送输入数据,如果要求客户设备240自动发送输入数据需要获得用户的授权,则用户可以在客户设备240中设置相应权限。用户可以在客户设备240查看执行设备210输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备240也可以作为数据采集端,采集如图所示输入I/O接口212的输入数据及输出I/O接口212的输出结果作为新的样本数据,并存入数据库230。当然,也可以不经过客户设备240进行采集,而是由I/O接口212直接将如图所示输入I/O接口212的输入数据及输出I/O接口212的输出结果,作为新的样本数据存入数据库230。
可以理解的是,图2仅是本申请实施例提供的一种***架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图2中,数据存储***250相对执行设备210是外部存储器,在其它情况下,也可以将数据存储***250置于执行设备210中。
如图2所示,根据训练设备220训练得到目标模型201,该目标模型201在本申请实施例中可以是本申请中的神经网络,具体的,本申请实施例提供的神经网络可以CNN,深度卷积神经网络(deep convolutional neural networks,DCNN)等等。
图3为本申请实施例提供的一种芯片硬件结构,该芯片包括神经网络处理器30。该芯片可以被设置在如图2所示的执行设备210中,用以完成计算模块211的计算工作。该芯片也可以被设置在如图2所示的训练设备220中,用以完成训练设备220的训练工作并输出目标模型201。如图1所示的卷积神经网络中各层的算法均可在如图3所示的芯片中得以实现。
神经网络处理器NPU 30作为协处理器挂载到主CPU(host CPU)上,由主CPU分配任务。NPU的核心部分为运算电路303,控制器304控制运算电路303提取存储器(权重存储器或输入存储器)中的数据并进行运算。
在一些实现方式中,运算电路303内部包括多个处理单元(process engine,PE)。在一些实现方式中,运算电路303是二维脉动阵列。运算电路303还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现方式中,运算电路303是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路303从权重存储器302中取矩阵B相应的数据,并缓存在运算电路303中每一个PE上。运算电路303从输入存储器301中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)308中。
作为一种示例,运算电路303可以通过移位操作实现矩阵运算。通过移位操作实现矩阵运算的实现方式可以参考后续内容。
向量计算单元307可以对运算电路303的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。例如,向量计算单元307可以用于神经网络中非卷积/非FC层的网络计算,如池化(pooling),批归一化(batch normalization),局部响应归一化(local response normalization)等。
在一些实现方式中,向量计算单元能307将经处理的输出的向量存储到统一缓存器306。例如,向量计算单元307可以将非线性函数应用到运算电路303的输出,例如累加值的向量,用以生成激活值。在一些实现方式中,向量计算单元307生成归一化的值、合并值,或二者均有。在一些实现方式中,处理过的输出的向量能够用作到运算电路303的激活输入,例如用于在神经网络中的后续层中的使用。
统一存储器306用于存放输入数据以及输出数据。
权重数据直接通过存储单元访问控制器305(direct memory accesscontroller,DMAC)将外部存储器中的输入数据搬运到输入存储器301和/或统一存储器306、将外部存储器中的权重数据存入权重存储器302,以及将统一存储器306中的数据存入外部存储器。
总线接口单元(bus interface unit,BIU)310,用于通过总线实现主CPU、DMAC和取指存储器309之间进行交互。
与控制器304连接的取指存储器(instruction fetch buffer)309,用于存储控制器304使用的指令;
控制器304,用于调用指存储器309中缓存的指令,实现控制该运算加速器的工作过程。
一般地,统一存储器306,输入存储器301,权重存储器302以及取指存储器309均为片上(On-Chip)存储器,外部存储器为该NPU外部的存储器,该外部存储器可以为双倍数据率同步动态随机存储器(double data rate synchronous dynamic random accessmemory,简称DDR SDRAM)、高带宽存储器(high bandwidth memory,HBM)或其他可读可写的存储器。
其中,图1所示的卷积神经网络中各层的运算可以由运算电路303或向量计算单元307执行。
卷积网络中的卷积层和全连接层本质上都是一堆矩阵乘法,为了提高计算速度、内存和功耗消耗,浮点矩阵运算转换为定点矩阵运算,定点矩阵运算可以简称为定点运算。本申请实施例中,定点运算也可以成为量化运算或定点量化运算。
定点运算的一种实现方式为缩放因子定点量化运算。下面介绍实现缩放因子定点量化运算。
用r表示浮点实数,q表示量化后的定点数。作为示例,该浮点实数可以是32位浮点实数,该定点数可以是8比特的定点数。
浮点和整型之间的换算公式为:
r=S(q―Z) (2)
其中,S是scale,表示实数和定点数之间的比例关系;Z是zero point,表示实数中的0经过量化后对应的定点数;round表示向最近整数取整的含义。
rmax、rmin分别是r的最大值和最小值,qmax、qmin分别是q的最大值和最小值。
可以理解的是,定点整数的zero point就代表浮点实数的0,二者之间的换算不存在精度损失,这一点可以从公式(3)中看出来,把r=0代入后就可以得到q=Z。这么做的目的是为了在padding时保证浮点数值的0和定点整数的zero point完全等价,保证定点和浮点之间的表征能够一致。
假设r1、r2是浮点实数上的两个N×N的矩阵,r3是r1、r2相乘后的矩阵,则r3可以表示为:
假设S1、Z1分别是r1矩阵对应的scale和zero point,S2、Z2分别是r2矩阵对应的scale和zero point,S3、Z3分别是r3矩阵对应的scale和zero point,那么由(6)式可以推出:
其中,表示r1矩阵中第i行第j列元素基于缩放因子S1量化得到的定点数,/>表示r2矩阵中第j行第k列元素基于缩放因子S2量化得到的定点数,/>表示r3矩阵中第i行第k列元素基于缩放因子S3量化得到的定点数.
对式(7)进行整理之后可以得到:
可以理解的是,定点数并不一定是整数。所谓定点,指的是小数点的位置是固定的,即小数位数是固定的。
下面介绍包含矩阵运算的神经网络层的示例性定点计算方式。该神经网络层的示例为卷积层或全连接层等。
用S、Z表示scale和zero point,r表示浮点实数,q表示定点整数。作为示例,该浮点实数可以是32位浮点实数,该定点整数可以是8比特的定点整数。
假设该层的权重weight为w,bias为b,输入为x,输出的激活值为a,则该层的浮点计算可以表示成:
基于浮点数与定点数之间的量化关系,可以把该层的浮点运算可以表示成如下定点运算表达式:
可以调整得到:
这里可以直接用SwSx来代替Sb,Zb直接记为0,则公式(11)可以调整为:
因为M可以通过一个定点数加上比特移位操作(bit shift)来实现,因此公式(12)可以通过定点运算进行计算。
若M表示成M=2―mM0,其中,M0是一个定点实数,则式(12)可以调整为:
为权重qw设置N个子码本(codebook),每个码本包含R=2B―1个码字,每个码字位宽B bits,B为定点数的比特数。此时量化后的权重可以用式(14)表示:
获取qw的所***字,基于每个码字对qw进行移位并获取所***字对应的移位结果的累加和以得到获取Zw的所***字,基于每个码字对qx进行移位并获取所***字移位结果的累加和以得到/>计算/>其中, 可以提前计算得到;基于2―m对/>的计算结果进行移位;将移位结果乘上M0,然后再加上Za。
经过发明人研究发现,可以对上述计算过程进行优化,以节省推理过程中的资源消耗和加快计算速度。
发明人提出的技术方案中,可以将M0融合网络层的权重中。作为示例,可以将M0融合至当前层或其它层的权重中。
因为激活函数层的权重数量比卷积层的权重的数量少,因此,将M0融合到激活函数层的权重中,相比于融合至卷积层的权重中,可以降低计算量,提高计算速度,降低融合所消耗的资源。
此处的将M0融合到权重中,可以理解为获取M0和权重的乘积,将乘积作为替代原权重使用。
在一些实现方式中,本申请中对2―m和M0的融合可以位于神经网络模型训练之后。作为示例,可以在训练得到神经网络模型之后,对神经网络模型进行量化的过程中或在对神经网络模型量化之后,对2―m和M0进行融合。
例如,可以在图2中的训练设备训练得到目标神经网络模型201之后,由图2所示的预处理模块213和/或预处理模块214执行2―m和M0的融合。
图4为本申请一个实施例的神经网络模型的处理方法。该方法可以包含S410至430。
作为示例,可以在训练得到神经网络模型且对该神经网络模型进行量化处理之后,将量化处理所得的神经网络模型作为待处理神经网络模型,并执行本方法。
例如,训练设备220训练得到目标模型201,且预处理模块213对目标模型201进行量化预处理重新构造目标模型201中需要定点计算的网络层的定点计算表达式之后,将预处理模块213得到的神经网络模型作为待处理神经网络模型,并由预处理模块214执行S410。
作为另一个示例,可以在对神经网络模型进行量化训练之后,将量化处理所得的神经网络模型作为待处理神经网络模型,并执行本方法。
S410,获取m、Za、M0、Zw、qw和qb,m和M0满足关系式M=2―mM0,M满足关系式其中,Sw表示待处理神经网络模型中的第一网络层的实数权重与定点数权重之间的比值,第一网络层的浮点计算表达式为a=wx+b,Sx表示第一网络层的实数输入与定点数输入之间的比值,Sa表示第一网络层的实数输出与定点数输出之间的比值,M0是一个定点数,qb表示b的定点数,Zw表示实数中的0经过量化后对应的定点数权重,Za表示实数中的0经过量化后对应的定点数输出,qw为使用缩放因子Sw对第一网络层的实数权重进行量化所得到的定点数权重。
作为示例,Sw、Sx和Sa可以参考式(4)计算得到。
作为示例,Zw可以参考式(5)计算得到。
作为示例,qb可以参考式(3)计算得到。
作为示例,qw可以是使用式(5)所示的方式对第一网络层中的每个权重进行量化处理所得到的权重。
作为示例,第一网络层可以包括卷积层或全连接层等。
可选地,方法400还可以包括步骤S440,具体如下:
在执行S440之前,可以先对第二网络层的浮点数类型的权重进行缩放因子方式量化,得到第二权重。
作为示例,第一网络层为卷积层时,第二网络层可以是位于卷积层之后的网络层。可选地,第二网络层可以为激活函数层,激活函数层对应的激活函数可以为linear、relu、prelu或sigmoid等。可以理解的是,第二网络层可以具有如下特点:输入一个点,计算得到的输出为一个点,并且输出的这个点不依赖输入的点以外的其它任何点。
可选地,方法400还可以包括步骤S450,具体如下:
在执行S450之前,可以先对第一网络层的浮点数类型的输入进行量化,得到第一定点输入。
可选地,方法400还可以包括步骤S460,具体如下:
S460,在使用待处理神经网络模型进行推理时,基于第二网络层的定点数输入和第二权重确定第二网络层的输出。
在执行S460之前,可以先对第二网络层的浮点数类型的输入进行量化,得到第二定点输入。
本实施例中,可选地,可以包含更多或者更少的步骤。
本实施例中,可选地,在S440中,可以根据M0和第一网络层的第一权重确定第一网络层的第二权重,第二权重为M0和第一权重的乘积。这种情况下,在S410中的qw为使用缩放因子方式对第二权重进行量化得到的定点数权重。
上文结合图1至图4,详细描述了本申请的方法实施例,下面结合图5至图6,详细描述本申请的装置实施例。应理解,装置实施例的描述与方法实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图5是本申请实施例提供的神经网络模型的处理装置的结构示意图。如图5所示,装置500可以包括获取单元510和确定单元520。
获取单元410,用于获取m、Za、M0、Zw、qw和qb,m和M0满足关系式M=2―mM0,M满足关系式其中,Sw表示所述神经网络模型中的第一网络层的实数权重与定点数权重之间的比值,所述第一网络层的浮点计算表达式为a=wx+b,Sx表示所述第一网络层的实数输入与定点数输入之间的比值,Sa表示所述第一网络层的实数输出与定点数输出之间的比值,M0是一个定点数,qb表示b的定点数,Zw表示实数中的0经过量化后对应的定点数权重,Za表示实数中的0经过量化后对应的定点数输出,qw为使用缩放因子Sw对所述第一网络层的实数权重进行量化所得到的定点数权重;
可选地,所述确定单元420还用于:根据M0和所述神经网络模型的第二网络层的第一权重确定所述第二网络层的第二权重,所述第二权重为M0和所述第一权重的乘积,以使得所述第一网络层的定点计算表达式更新为第二表达式
可选地,所述第二网络层位于所述第一网络层之后,且所述第一网络层的输出为所述第二网络层的输入。
可选地,所述第一网络层为卷积层,所述第二网络层为具有如下特点:基于点输入计算得到点输出,并且所述点输出不依赖所述点输入以外的其它点输入
可选地,所述确定单元420还用于:在使用所述神经网络模型进行推理时,基于所述第二网络层的定点数输入和所述第二权重确定所述第二网络层的输出。
图6是本申请一实施例提供的装置的示意性结构图。图6中的虚线表示该单元或模块为可选的。该装置600可用于实现上述方法实施例中描述的方法。装置600可以是芯片或神经网络模型的处理装置。
装置600可以包括一个或多个处理器610。该处理器610可支持装置600实现前文方法实施例所描述的方法。该处理器610可以是通用处理器或者专用处理器。例如,该处理器可以为中央处理单元(central processing unit,CPU)。或者,该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(applicationspecific integrated circuit,ASIC)、现成可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
装置600还可以包括一个或多个存储器620。存储器620上存储有程序,该程序可以被处理器610执行,使得处理器610执行前文方法实施例所描述的方法。存储器620可以独立于处理器610也可以集成在处理器610中。
装置600还可以包括收发器630。处理器610可以通过收发器630与其他设备或芯片进行通信。例如,处理器610可以通过收发器630与其他设备或芯片进行数据收发。
本申请实施例还提供一种计算机可读存储介质,用于存储程序。该计算机可读存储介质可应用于本申请实施例提供的装置中,并且该程序使得计算机执行本申请各个实施例中的由装置执行的方法。
本申请实施例还提供一种计算机程序产品。该计算机程序产品包括程序。该计算机程序产品可应用于本申请实施例提供的装置中,并且该程序使得计算机执行本申请各个实施例中的由装置执行的方法。
本申请实施例还提供一种计算机程序。该计算机程序可应用于本申请实施例提供的装置中,并且该计算机程序使得计算机执行本申请各个实施例中的由装置执行的方法。
应理解,在本申请实施例中,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据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 (10)
1.一种神经网络模型的处理方法,其特征在于,包括:
获取m、Za、M0、Zw、qw和qb,m和M0满足关系式M=2―mM0,M满足关系式 其中,Sw表示所述神经网络模型中的第一网络层的实数权重与定点数权重之间的比值,所述第一网络层的浮点计算表达式为a=wx+b,Sx表示所述第一网络层的实数输入与定点数输入之间的比值,Sa表示所述第一网络层的实数输出与定点数输出之间的比值,M0是一个定点数,qb表示b的定点数,Zw表示实数中的0经过量化后对应的定点数权重,Za表示实数中的0经过量化后对应的定点数输出,qw为使用缩放因子Sw对所述第一网络层的实数权重进行量化所得到的定点数权重;
3.根据权利要求2所述的方法,其特征在于,所述第二网络层位于所述第一网络层之后,且所述第一网络层的输出为所述第二网络层的输入。
4.根据权利要求3所述的方法,其特征在于,所述第一网络层为卷积层,所述第二网络层具有如下特点:基于点输入计算得到点输出,并且所述点输出不依赖所述点输入以外的其它点输入。
5.根据权利要求3或4所述的方法,其特征在于,所述方法还包括:
在使用所述神经网络模型进行推理时,基于所述第二网络层的定点数输入和所述第二权重确定所述第二网络层的输出。
7.一种神经网络模型的处理装置,其特征在于,包括:
获取单元,用于获取m、Za、M0、Zw、qw和qb,m和M0满足关系式M=2―mM0,M满足关系式其中,Sw表示所述神经网络模型中的第一网络层的实数权重与定点数权重之间的比值,所述第一网络层的浮点计算表达式为a=wx+b,Sx表示所述第一网络层的实数输入与定点数输入之间的比值,Sa表示所述第一网络层的实数输出与定点数输出之间的比值,M0是一个定点数,qb表示b的定点数,Zw表示实数中的0经过量化后对应的定点数权重,Za表示实数中的0经过量化后对应的定点数输出,qw为使用缩放因子Sw对所述第一网络层的实数权重进行量化所得到的定点数权重;
8.一种神经网络模型的处理装置,其特征在于,包括存储器和处理器,所述存储器用于存储程序,所述处理器用于调用所述存储器中的程序,以执行如权利要求1至6中任一项所述的方法。
9.一种芯片,其特征在于,包括:
存储器,用于存储代码;
处理器,用于执行所述存储器中存储的代码,以执行如权利要求1至6中任一所述的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序用于执行如权利要求1至6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211722034.2A CN116384445A (zh) | 2022-12-30 | 2022-12-30 | 神经网络模型的处理方法和相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211722034.2A CN116384445A (zh) | 2022-12-30 | 2022-12-30 | 神经网络模型的处理方法和相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116384445A true CN116384445A (zh) | 2023-07-04 |
Family
ID=86962211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211722034.2A Pending CN116384445A (zh) | 2022-12-30 | 2022-12-30 | 神经网络模型的处理方法和相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116384445A (zh) |
-
2022
- 2022-12-30 CN CN202211722034.2A patent/CN116384445A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6946572B2 (ja) | 加速された量子化積和演算 | |
US11501415B2 (en) | Method and system for high-resolution image inpainting | |
US11593658B2 (en) | Processing method and device | |
CN105512723B (zh) | 一种用于稀疏连接的人工神经网络计算装置和方法 | |
WO2022042713A1 (zh) | 一种用于计算设备的深度学习训练方法和装置 | |
WO2020073211A1 (zh) | 运算加速器、处理方法及相关设备 | |
CN113326930B (zh) | 数据处理方法、神经网络的训练方法及相关装置、设备 | |
CN112418392A (zh) | 一种神经网络构建方法以及装置 | |
KR102655950B1 (ko) | 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치 | |
CN114118347A (zh) | 用于神经网络量化的细粒度每向量缩放 | |
WO2023010244A1 (zh) | 神经网络加速器及神经网络加速器的数据处理方法 | |
CN110795618B (zh) | 内容推荐方法、装置、设备及计算机可读存储介质 | |
CN112561028A (zh) | 训练神经网络模型的方法、数据处理的方法及装置 | |
WO2022088063A1 (zh) | 神经网络模型的量化方法和装置、数据处理的方法和装置 | |
US20240135174A1 (en) | Data processing method, and neural network model training method and apparatus | |
WO2022111002A1 (zh) | 用于训练神经网络的方法、设备和计算机可读存储介质 | |
CN114078195A (zh) | 分类模型的训练方法、超参数的搜索方法以及装置 | |
CN112789627A (zh) | 一种神经网络处理器、数据处理方法及相关设备 | |
US20230143985A1 (en) | Data feature extraction method and related apparatus | |
CN113238989A (zh) | 将数据进行量化的设备、方法及计算机可读存储介质 | |
CN114978189A (zh) | 一种数据编码方法以及相关设备 | |
CN116468114A (zh) | 一种联邦学习方法及相关装置 | |
CN113238987B (zh) | 量化数据的统计量化器、存储装置、处理装置及板卡 | |
CN112085175A (zh) | 基于神经网络计算的数据处理方法和装置 | |
CN109389209B (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 |