CN109389209A - 处理装置及处理方法 - Google Patents
处理装置及处理方法 Download PDFInfo
- Publication number
- CN109389209A CN109389209A CN201710689595.XA CN201710689595A CN109389209A CN 109389209 A CN109389209 A CN 109389209A CN 201710689595 A CN201710689595 A CN 201710689595A CN 109389209 A CN109389209 A CN 109389209A
- Authority
- CN
- China
- Prior art keywords
- instruction
- neural network
- vector
- weight
- cambricon
- 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.)
- Granted
Links
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
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/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
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
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 Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本公开提供了一种处理装置及处理方法,用于处理量化后的网络数据,可以减少网络数据传输,减少数据传输能耗。此外,本公开还可以同时对量化后的权值以及未量化权值进行多种运算,实现了运算的多元化。
Description
技术领域
本公开涉及神经网络领域,尤其涉及一种数据的量化装置及量化方法、处理装置及处理方法。
背景技术
对神经网络(neural network)的权值进行量化(quantization),能够减少表示每一个权值的比特数,从而降低权值存储开销和访存开销。但是传统的量化方法仅仅按照神经网络的层为单位进行量化,并没有挖掘神经网络层间权值的相似性以及层内权值局部相似性,在使用低比特数表示权值的同时,会降低神经网络的精度。因此,如何充分挖掘神经网络的权值分布特性进行低比特量化成为一个亟待解决的问题。
公开内容
(一)要解决的技术问题
本公开的目的在于提供一种数据的量化装置及量化方法、处理装置及处理方法,以解决上述的至少一项技术问题。
(二)技术方案
本公开的一方面,提供了一种数据的量化方法,包括步骤:
对权值进行分组;
对每一组权值用聚类算法进行聚类操作,将一组权值分成m个类,每个类计算出一个中心权值,每个类中的所有权值都用中心权值替换,其中,m为正整数;以及
对中心权值进行编码操作,得到密码本和权值字典。
在本公开的一些实施例中,还包括步骤:对神经网络进行重训练,重训练时只训练密码本,权值字典内容保持不变。
在本公开的一些实施例中,所述重训练采用反向传播算法。
在本公开的一些实施例中,所述分组包括分为一组、层类型分组、层间分组和/或层内分组。
在本公开的一些实施例中,所述聚类算法包括K-means、K-medoids、Clara和/或Clarans。
在本公开的一些实施例中,所述分组为分为一组,将神经网络的所有权值归为一组。
在本公开的一些实施例中,所述分组为层类型分组,对i个卷积层,j个全连接层,m个LSTM层,t种不同类型的层,其中,i,j,m为大于等于0的正整数,且满足i+j+m≥1,t为大于等于1的正整数且满足t=(i>0)+(j>0)+(m>0),将神经网络的权值将被分为t组。
在本公开的一些实施例中,所述分组为层间分组,将神经网络中一个或者多个卷积层的权值、一个或者多个全连接层的权值和一个或者多个长短时记忆网络层的权值各划分成一组。
在本公开的一些实施例中,所述分组为层内分组,将神经网络的卷积层作为一个四维矩阵(Nfin,Nfout,Kx,Ky),其中,Nfin,Nfout,Kx,Ky是正整数,Nfin表示输入特征图像数量,Nfout表示输出特征图像数量,(Kx,Ky)表示卷积核的大小,卷积层的权值按(Bfin,Bfout,Bx,By)的组大小被分成Nfin*Nfout*Kx*Ky/(Bfin*Bfout*Bx*By)个不同的组,其中Bfin为小于等于Nfin的正整数,Bfout为小于等于Nfout的正整数,Bx为小于等于Kx的正整数,By为小于等于Ky的正整数;将神经网络的全连接层作为一个二维矩阵(Nin,Nout),其中Nin,Nout是正整数,Nin表示输入神经元的个数,Nout表示输出神经元的个数,共有Nin*Nout个权值;全连接层权值按照(Bin,Bout)的组大小被分成(Nin*Nout)/(Bin*Bout)个不同的组,其中Bin是小于等于Nin的正整数,Bout是小于等于Nout的正整数;将神经网络的LSTM层权值作为多个全连接层的权值的组合,且LSTM层的权值由n个全连接层权值组成,其中n为正整数,则每一个全连接层都可以按照全连接层的分组方式进行分组操作。
在本公开的一些实施例中,所述分组为分为一组、层内分组和层间分组,将卷积层作为一组,将全连接层进行层内分组,将LSTM层进行层间分组。
在本公开的一些实施例中,所述一个类的中心权值选择方法为:使得代价函数J(w,w0)最小。
在本公开的一些实施例中,所述代价函数为:
其中,w是一个类中的权值,w0是该类的中心权值,n是该类中权值的数量,n为正整数,wi是该类中第i个权值,i为正整数,且1≤i≤n。
本公开的另一方面,还提供了一种数据的量化装置,包括:
存储器,用于存储操作指令;
处理器,用于执行存储器中的操作指令,在执行该操作指令时依照前述的量化方法进行操作。
在本公开的一些实施例中,所述操作指令为二进制数,包括操作码和地址码,操作码指示处理器即将进行的操作,地址码指示处理器到存储器中的地址中读取参与操作的数据。
本公开的又一方面,还提供了一种处理装置,包括:
控制单元,用于接收指令并进行译码,生成查找控制信息和运算控制信息;
查找表单元,用于接收所述查找控制信息、权值字典和密码本,并根据查找控制信息,对权值字典和密码本进行查表操作,得到量化权值;以及
运算单元,用于接收所述运算控制信息和输入神经元,并根据运算控制信息,对量化权值和输入神经元进行运算操作,得到并将输出神经元输出。
在本公开的一些实施例中,还包括:预处理单元,用于对外部输入的输入信息进行预处理,得到所述输入神经元、权值字典、密码本和指令;存储单元,用于存储输入神经元、权值字典、密码本和指令,以及接收输出神经元;缓存单元,用于缓存所述指令、输入神经元、输出神经元、权值字典和密码本;以及直接内存存取单元,用于在所述存储单元和缓存单元之间进行数据或者指令读写。
在本公开的一些实施例中,所述预处理单元中,对外部输入的输入信息进行的预处理包括:切分、高斯滤波、二值化、正则化和/或归一化。
在本公开的一些实施例中,所述缓存单元包括:指令缓存,用于缓存所述指令;输入神经元缓存,用于缓存所述输入神经元;以及输出神经元缓存,用于缓存所述输出神经元。
在本公开的一些实施例中,所述缓存单元还包括:权值字典缓存,用于缓存所述权值字典;以及密码本缓存,用于缓存所述密码本。
在本公开的一些实施例中,所述指令为神经网络专用指令。
在本公开的一些实施例中,所述神经网络专用指令包括:控制指令,用于控制神经网络执行过程;数据传输指令,用于完成不同存储介质之间的数据传输,数据格式包括矩阵、向量和标量;运算指令,用于完成神经网络的算术运算,包括矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令、MAXOUT神经网络运算指令;以及逻辑指令,用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。
在本公开的一些实施例中,所述神经网络专用指令包括至少一种Cambricon指令,该Cambricon指令包括操作码和操作数,所述Cambricon指令包括:Cambricon控制指令用于控制执行过程,且该Cambricon控制指令包括跳转指令和条件分支指令;Cambricon数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令、存储指令、搬运指令;其中,所述加载指令用于将数据从主存加载到缓存;存储指令用于将数据从缓存存储到主存;搬运指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据;Cambricon运算指令用于完成神经网络算术运算,包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令;其中,所述Cambricon矩阵运算指令用于完成神经网络中的矩阵运算,包括矩阵乘向量、向量乘矩阵、矩阵乘标量、外积、矩阵加矩阵和矩阵减矩阵;所述Cambricon向量运算指令用于完成神经网络中的向量运算,包括向量基本运算、向量超越函数运算、内积、向量随机生成和向量中最大/最小值;Cambricon标量运算指令用于完成神经网络中的标量运算,包括标量基本运算和标量超越函数运算;Cambricon逻辑指令用于神经网络的逻辑运算,逻辑运算包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令;其中,所述Cambricon向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并;向量逻辑运算包括与、或、非;所述Cambricon标量逻辑运算包括标量比较和标量逻辑运算。
在本公开的一些实施例中,所述Cambricon数据传输指令支持以下的一种或者多种数据组织方式:矩阵、向量和标量;所述向量基本运算包括向量加、减、乘、除;向量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述标量基本运算包括标量加、减、乘、除;标量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述向量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述向量逻辑运算包括与、或、非;所述标量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述标量逻辑运算包括与、或、非。
在本公开的一些实施例中,所述存储单元还用于存储未量化权值,且该未量化权值直接输出至运算单元。
在本公开的一些实施例中,所述运算单元包括:第一运算部分,用于将所述权值和输入神经元相乘;和/或第二运算部分,包括一个或者多个加法器,用于对所述权值和输入神经元通过一个或多个加法器相加;和/或第三运算部分,对所述权值和输入神经元进行非线性函数运算,所述非线性函数包括激活函数,所述激活函数包括sigmoid、tanh、relu和/或softmax;和/或第四运算部分,用于对所述权值和输入神经元进行池化操作,所述池化操作包括平均值池化、最大值池化和/或中值池化;其中,所述权值为未量化权值和/或量化权值。
在本公开的一些实施例中,所述第二运算部分包括多个加法器,所述多个加法器组成加法树,实现权值和输入神经元的逐级相加。
本公开的再一方面,还提供了一种处理方法,包括步骤:
接收输入神经元、权值字典、密码本和指令;
对所述指令译码,得到查找控制信息和运算控制信息;以及
根据所述查找控制信息,查找权值字典和密码本得到量化权值,根据所述运算控制信息,对该量化权值以及输入神经元进行运算操作,得到并将输出神经元输出。
在本公开的一些实施例中,在接收输入神经元、权值字典、密码本和指令之前,还包括步骤:对外部输入的输入信息进行预处理,得到所述输入神经元、权值字典、密码本和指令;以及在接收输入神经元、权值字典、密码本和指令之后,还包括步骤:存储输入神经元、权值字典、密码本和指令,以及存储输出神经元;以及缓存所述指令、输入神经元、输出神经元。
在本公开的一些实施例中,在接收输入神经元、权值字典、密码本和指令之后,还包括步骤:缓存权值字典和密码本。
在本公开的一些实施例中,所述预处理包括切分、高斯滤波、二值化、正则化和、或归一化。
在本公开的一些实施例中,所述指令为神经网络专用指令。
在本公开的一些实施例中,所述神经网络专用指令包括:控制指令,用于控制神经网络执行过程;数据传输指令,用于完成不同存储介质之间的数据传输,数据格式包括矩阵、向量和标量;运算指令,用于完成神经网络的算术运算,包括矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令、MAXOUT神经网络运算指令;以及逻辑指令,用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。
在本公开的一些实施例中,所述神经网络专用指令包括至少一种Cambricon指令,该Cambricon指令包括操作码和操作数,所述Cambricon指令包括:Cambricon控制指令用于控制执行过程,且该Cambricon控制指令包括跳转指令和条件分支指令;Cambricon数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令、存储指令、搬运指令;其中,所述加载指令用于将数据从主存加载到缓存;存储指令用于将数据从缓存存储到主存;搬运指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据;Cambricon运算指令用于完成神经网络算术运算,包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令;其中,所述Cambricon矩阵运算指令用于完成神经网络中的矩阵运算,包括矩阵乘向量、向量乘矩阵、矩阵乘标量、外积、矩阵加矩阵和矩阵减矩阵;所述Cambricon向量运算指令用于完成神经网络中的向量运算,包括向量基本运算、向量超越函数运算、内积、向量随机生成和向量中最大/最小值;Cambricon标量运算指令用于完成神经网络中的标量运算,包括标量基本运算和标量超越函数运算;以及Cambricon逻辑指令用于神经网络的逻辑运算,逻辑运算包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令;其中,所述Cambricon向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并;向量逻辑运算包括与、或、非;所述Cambricon标量逻辑运算包括标量比较和标量逻辑运算。
在本公开的一些实施例中,所述Cambricon数据传输指令支持以下的一种或者多种数据组织方式:矩阵、向量和标量;所述向量基本运算包括向量加、减、乘、除;向量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述标量基本运算包括标量加、减、乘、除;标量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述向量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述向量逻辑运算包括与、或、非;所述标量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述标量逻辑运算包括与、或、非。
在本公开的一些实施例中,还包括步骤:接收未量化权值,根据运算控制信息,对该位量化权值和输入神经元进行运算,得到并将输出神经元输出。
在本公开的一些实施例中,所述运算操作包括:将权值和输入神经元相加;和/或将权值和输入神经元相乘;和/或对所述权值和输入神经元进行非线性函数运算,所述非线性函数包括激活函数,所述激活函数包括sigmoid、tanh、relu和/或softmax;和/或对所述权值和输入神经元进行池化操作,所述池化操作包括平均值池化、最大值池化和/或中值池化,其中,所述权值包括量化权值和/或非量化权值。
在本公开的一些实施例中,权值和输入神经元的相加由一个或多个加法器实现。
在本公开的一些实施例中,所述多个加法器构成加法树,实现权值和输入神经元的逐级相加。
(三)有益效果
本公开相较于现有技术具有以下优点:
1、本公开的数据的量化方法,摒弃了现有技术中仅按神经网络的层为单位进行量化的缺陷,通过挖掘神经网络层间权值的相似性以及层内权值局部相似性,以挖掘神经网络的权值分布特性从而进行低比特量化,减小了表示每一个权值的比特数,从而降低了权值存储开销和访存开销。
2、本公开的数据的量化方法可以对神经网络进行重训练,且重训练时只需训练密码本,不需要训练权值字典,简化了重训练操作。
3、本公开提供的处理装置同时对量化后的权值以及未量化权值进行多种运算,实现了运算的多元化。
4、本公开通过采用针对局部量化的多层人工神经网络运算的神经网络专用指令和灵活的运算单元,解决了CPU(中央处理器)和GPU(图形处理器)运算性能不足,前端译码开销大的问题,有效提高了对多层人工神经网络运算算法的支持。
5、本公开通过采用针对多层人工神经网络运算算法的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络运算及其训练算法性能瓶颈的问题。
附图说明
图1为本公开实施例的数据的量化方法的步骤示意图;
图2为本公开实施例的数据的量化的过程示意图;
图3为本公开实施例的数据的量化装置的结构示意图;
图4为本公开实施例的处理装置的结构示意图;
图5为本公开实施例的查表的过程示意图;
图6为本公开实施例的一具体实施例的处理装置的结构示意图;
图7为本公开实施例的处理方法的步骤示意图;
图8为本公开实施例的一具体实施例的处理方法的步骤示意图。
具体实施方式
基于现有技术仅按神经网络的层为单位进行量化的技术问题,本公开提供了一种数据的量化方法,通过分组和聚类操作,将一组权值分成m个类,每个类计算出一个中心权值,每个类中的所有权值都用中心权值替换;以及对中心权值进行编码操作,以得到密码本和权值字典,形成了一套完整的量化方法。此外,本公开还可以对神经网络进行重训练,且重训练只需训练密码本,权值字典内容保持不变,减小了工作量。还可以将该量化方法得到的量化权值应用在本公开提供的处理装置中,增加了查找表单元,每次进行处理时不需输入权值,只需根据查找控制指令查找权值字典和密码本即可获得量化权值,实现了系统化的操作,且通过充分挖掘神经网络的权值分布特性,得到低比特量化的权值,大大提高了处理速度,降低了权值存储开销和访存开销。
本公开某些实施例于后方将参照所附附图做更全面性地描述,其中一些但并非全部的实施例将被示出。实际上,本公开的各种实施例可以许多不同形式实现,而不应被解释为限于此数所阐述的实施例;相对地,提供这些实施例使得本公开满足适用的法律要求。
在本说明书中,下述用于描述本公开原理的各种实施例只是说明,不应该以任何方式解释为限制公开的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本公开的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不悖离本公开的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同附图标记用于相似功能和操作。在本公开中,术语“包括”和“含有”及其派生词意为包括而非限制。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
本公开实施例的一方面,提供了一种数据的量化方法,图1为本公开实施例的数据的量化方法的步骤示意图,如图1所示,包括步骤:
S101、对权值进行分组;进一步地,分组的策略可以按照分为一组、层类型分组、层间分组、层内分组、混合分组等方式进行;
S102、根据对各组的权值用聚类算法进行聚类操作,将一组权值分成m个类,每个类计算出一个中心权值,每个类中的所有权值都用中心权值替换。其中,所述聚类算法包括但不限于K-measn、K-medoids、Clara和Clarans。
进一步地,所述一个类的中心权值选择方法为,使得代价函数J(w,w0)最小。可选的,代价函数可以是平方距离,其中,w是一个类中的所有权值,w0是该类的中心权值,n是该类中权值的数量,wi是该类中第i个权值,i是大于等于1小于等于n的正整数。
S103、对中心权值进行编码操作,得到密码本和权值字典。
该权值量化方法还可以对神经网络进行重训练,在重训练过程中,只训练密码本,权值字典内容保持不变。具体的,重训练可以采用反向传播算法。
图2为本公开实施例的数据的量化的过程示意图,如图2所示,按照分组的策略对权值进行分组,得到有序排列的权值矩阵。再对分组后的权值矩阵进行组内采样以及聚类操作,从而将值相近的权值划为同一类别,得到1.50、-0.13、-1.3和0.23这4个中心权值,并分别对应四个类别的权值。然后,对中心权值进行编码操作,将中心权值为-1.3的类别编码为00,将中心权值为-0.13的类别编码为01,将中心权值为0.23的类别编码为10,将中心权值为1.50的类别编码为11,此为密码本内容。另外,还分别用4个权值对应的编码内容(00、01、10和11)分别表示对应类别中的权值,从而得到权值字典。该量化过程充分挖掘了神经网络层间权值的相似性以及层内权值局部相似性,得到神经网络的权值分布特性从而进行低比特量化,减小了表示每一个权值的比特数,从而降低了权值存储开销和访存开销。
接下来,对神经网络的数据的量化方法进行举例说明:
实施例1:将神经网络的所有权值归为一组,对每一组权值采用K-means聚类算法进行聚类,每个类计算出一个中心权值,每一个类中所有权值用中心权值进行替换。然后对量化后的权值生成字典和密码本,对神经网络进行重训练,在重训练过程中仅仅训练密码本而不训练字典。具体的,重训练采用反向传播算法进行重新训练。
实施例2:将神经网络的权值按照层类型进行分组。所有卷积层的权值为一组,所有全连接层的权值为一组,所有LSTM(长短时记忆网络)层的权值为一组。若一个神经网络有i个卷积层,j个全连接层,m个LSTM层,t种不同类型的层,其中i,j,m为大于等于0的正整数且满足i+j+m>=1,t为大于等于1的正整数且满足t=(i>0)+(j>0)+(m>0),神经网络的权值将被分为t组。对组内权值采用K-medoids聚类算法进行聚类,每个类计算出一个中心权值,每一个类中所有权值用中心权值进行替换。然后对每一组内量化后的权值生成字典和密码本,最后对神经网络进行重训练,在重训练过程中仅仅训练密码本而不训练字典。具体的,重训练采用反向传播算法进行重新训练。
实施例3:将神经网络的权值按照层间结构进行分组。一个或者连续多个卷积层分为一组,一个或者连续多个全连接层分为一组,一个或者连续多个LSTM层分为一组。对每一组内权值采用Clara聚类算法进行聚类,值相近的权值将被划分到同一个类,每个类计算出一个中心权值,每个类中的所有权值都用中心权值替换。然后对每一组内量化后的权值生成字典和密码本,最后对神经网络进行重训练,在重训练过程中仅仅训练密码本而不训练字典。具体的,重训练采用反向传播算法进行重新训练。
实施例4:将神经网络的权值按照层内结构进行分组。神经网络的卷积层可以看成是一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin,Nfout,Kx,Ky是正整数,Nfin表示输入特征图像(feature map)数量,Nfout表示输出特征图像数量,(Kx,Ky)表示卷积核(kernel)的大小。卷积层的权值按(Bfin,Bfout,Bx,By)的组大小被分成Nfin*Nfout*Kx*Ky/(Bfin*Bfout*Bx*By)个不同的组,其中Bfin为小于等于Nfin的正整数,Bfout为小于等于Nfout的正整数,Bx为小于等于Kx的正整数,By为小于等于Ky的正整数。
神经网络的全连接层可以看成是一个二维矩阵(Nin,Nout),其中Nin,Nout是正整数,Nin表示输入神经元的个数,Nout表示输出神经元的个数,共有Nin*Nout个权值。全连接层权值按照(Bin,Bout)的组大小被分成(Nin*Nout)/(Bin*Bout)个不同的组,其中Bin是小于等于Nin的正整数,Bout是小于等于Nout的正整数。
神经网络的LSTM层权值可以看出多个全连接层的权值的组合,假设LSTM层的权值由n个全连接层权值组成,其中n为正整数,则每一个全连接层都可以按照全连接层的分组方式进行分组操作。
对每一组内权值采用Clarans聚类算法进行聚类,每个类计算出一个中心权值,每一个类中所有权值用中心权值进行替换。然后对每一组内量化后的权值生成字典和密码本,最后对神经网络进行重训练,在重训练过程中仅仅训练密码本而不训练字典。具体的,重训练采用反向传播算法进行重新训练。
实施例5:将神经网络的权值按照混合的方式进行分组,如所有卷积层为一组,所有全连接层按照层内结构进行分组,所有LSTM层按照层间结构进行分组。对每一组内权值采用Clarans聚类算法进行聚类,每个类计算出一个中心权值,每个类计算出一个中心权值,每个类中的所有权值都用中心权值替换。然后对每一组内量化后的权值生成字典和密码本,最后对神经网络进行重训练,在重训练过程中仅仅训练密码本而不训练字典。具体的,重训练采用反向传播算法进行重新训练。
本公开实施例的另一方面,还提供了一种数据的量化装置,图3为本公开实施例的数据的量化装置的结构示意图,如图3所示,其包括:
存储器1,用于存储操作指令;所述操作指令一般为二进制数形式,由操作码和地址码构成,操作码指示处理器2即将进行的操作,地址码指示处理器2到存储器1中的地址中读取参与操作的数据。
处理器2,用于执行存储器1中的操作指令,在执行指令时依照上述的数据的量化方法进行操作。
本公开的数据的量化装置,处理器2通过执行存储器1中的操作指令,依照前述数据的量化方法进行操作,能够对杂乱无章的权值进行量化,得到低比特化且规范化的量化权值,充分挖掘了神经网络层间权值的相似性以及层内权值局部相似性,得到神经网络的权值分布特性从而进行低比特量化,减小了表示每一个权值的比特数,从而降低了权值存储开销和访存开销。
本公开实施例的另一方面,提供了一种处理装置,图4为本公开实施例的处理装置的结构示意图,如图4所示,该处理装置包括:控制单元1、查找表单元2和运算单元3。
控制单元1接收指令,并对其进行译码,生成查找控制信息和运算控制信息。
其中,该指令为神经网络专用指令,包括所有专用于完成人工神经网络运算的指令。神经网络专用指令包括但不仅限于控制指令,数据传输指令,运算指令和逻辑指令。其中控制指令控制神经网络执行过程。数据传输指令完成不同存储介质之间的数据传输,数据格式包括但不仅限于矩阵,向量和标量。运算指令完成神经网络的算术运算,包括但不仅限于矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令和MAXOUT神经网络运算指令。逻辑指令完成神经网络的逻辑运算,包括但不仅限于向量逻辑运算指令和标量逻辑运算指令。
其中,RBM神经网络运算指令用于实现Restricted Boltzmann Machine(受限玻尔兹曼机)神经网络运算。
LRN神经网络运算指令用于实现Local Response Normalization(近邻归一化)神经网络运算。
LSTM神经网络运算指令用于实现Long Short-Term Memory(长短时记忆)神经网络运算。
RNN神经网络运算指令用于实现Recurrent Neural Networks(递归神经网络)神经网络运算。
RELU神经网络运算指令用于实现Rectified linear unit(线性修正单元)神经网络运算。
PRELU神经网络运算指令用于实现Parametric Rectified Linear Unit(带参数的线性修正单元)神经网络运算。
SIGMOID神经网络运算指令用于实现S型生长曲线(SIGMOID)神经网络运算
TANH神经网络运算指令用于实现双曲正切函数(TANH)神经网络运算。
MAXOUT神经网络运算指令用于实现最大输出值(MAXOUT)神经网络运算。
更进一步地,该神经网络专用指令包括Cambricon(寒武纪)指令集。
所述Cambricon指令集包括至少一种Cambricon指令,该Cambricon指令的长度可以为64bit,也可以根据实际需求,改变其长度。该Cambricon指令包括操作码和操作数。Cambricon指令包含四种类型的指令,分别是Cambricon控制指令(controlinstructions)、Cambricon数据传输指令(data transfer instructions)、Cambricon运算指令(computational instructions)和Cambricon逻辑指令(logical instructions)。
其中,Cambricon控制指令用于控制执行过程。Cambricon控制指令包括跳转(jump)指令和条件分支(conditional branch)指令。
Cambricon数据传输指令用于完成不同存储介质之间的数据传输。Cambricon数据传输指令包括加载(load)指令、存储(store)指令和搬运(move)指令。load指令用于将数据从主存加载到缓存,store指令用于将数据从缓存存储到主存,move指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据。数据传输指令支持三种不同的数据组织方式,包括矩阵,向量和标量。
Cambricon运算指令用于完成神经网络算术运算。Cambricon运算指令包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令。
Cambricon矩阵运算指令完成神经网络中的矩阵运算,包括矩阵乘向量(matrixmultiply vector)、向量乘矩阵(vector multiply matrix)、矩阵乘标量(matrixmultiply scalar)、外积(outer product)、矩阵加矩阵(matrix add matrix)和矩阵减矩阵(matrix subtract matrix)。
Cambricon向量运算指令完成神经网络中的向量运算,包括向量基本运算(vectorelementary arithmetics)、向量超越函数运算(vector transcendental functions)、内积(dot product)、向量随机生成(random vector generator)和向量中最大/最小值(maximum/minimum of a vector)。其中向量基本运算包括向量加、减、乘、除(add、subtract、multiply、divide),向量超越函数是指那些不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数、对数函数、三角函数和反三角函数。
Cambricon标量运算指令完成神经网络中的标量运算,包括标量基本运算(scalarelementary arithmetics)和标量超越函数运算(scalar transcendental functions)。其中标量基本运算包括标量、减、乘、除(add、subtract、multiply、divide),标量超越函数是指那些不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数,对数函数,三角函数,反三角函数。
Cambricon逻辑指令用于神经网络的逻辑运算。Cambricon逻辑运算包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令。
Cambricon向量逻辑运算指令包括向量比较(vector compare)、向量逻辑运算(vector logical operations)和向量大于合并(vector greater than merge)。其中向量比较包括但不小于大于、小于,等于、大于等于、小于等于、不等于。向量逻辑运算包括与、或、非。
Cambricon标量逻辑运算包括标量比较(scalar compare),标量逻辑运算(scalarlogical operations)。其中标量比较包括但不限于大于、小于、等于、大于等于,小于等于和不等于。标量逻辑运算包括与、或、非。
查找表单元2接收所述查找控制信息、权值字典和密码本,并根据查找控制信息,对权值字典和密码本进行查表操作,得到量化权值;
运算单元3接收所述运算控制信息和输入神经元,并根据运算控制信息,对所述量化权值和输入神经元进行运算操作,得到并将输出神经元输出。其中,运算单元3可以包括四个运算部分:第一运算部分,用于将所述量化权值和输入神经元相乘;第二运算部分,用于对所述量化权值和输入神经元通过一个或多个加法器实现相加操作(更进一步地,加法器也可以组成加法树,从而实现不同级加法树的运算功能);第三运算部分,对所述量化权值和输入神经元进行非线性函数运算;第四运算部分,用于对所述量化权值和输入神经元进行池化操作。本公开通过采用针对局部量化的多层人工神经网络运算的专用SIMD指令和定制的运算单元3,解决了CPU和GPU运算性能不足,前端译码开销大的问题,有效提高了对多层人工神经网络运算算法的支持。
图5为本公开实施例的查表的过程示意图,如图5所示,根据密码本可知该量化权值被分为四个类别,编码为00的类别,其中心权值为-1.30;编码为01的类别,其中心权值为-0.13;编码为10的类别,其中心权值为0.23;以及编码为11的类别,其中心权值为1.50。同时,再参照权值字典可知,同一个类别的权值的分布情况,并用各类别的中心权值代替权值字典中的对应编码,即可得到量化权值。该操作充分挖掘了神经网络层间权值的相似性以及层内权值局部相似性,能够通过量化步骤中得到的权值字典和密码本进行查表,从而还原量化权值,具有良好的可操作性以及规范性。
为了优化本公开的处理装置,加入了存储单元4、预处理单元5和缓存单元7,以使得处理数据更有序,方便处理装置的处理操作,图6为本公开实施例的一具体实施例的处理装置的结构示意图,如图6所示,在如图1所示的原有结构上,该具体实施例提供的处理装置还包括:存储单元4、预处理单元5和缓存单元7。其中,存储单元4用于存储外部输入的输入神经元、权值字典、密码本和指令,以及接收运算单元3输出的输出神经元;此外,存储单元4还可以存储未量化权值,且该未量化权值通过旁路直接输出至运算单元3,可见本公开的处理装置不仅可以处理量化权值,也可以处理未量化权值,可以根据不同的实际需求进行选择。预处理单元5用于对外部输入的输入信息进行预处理,得到所述输入神经元、权值字典、密码本和指令,前述预处理包括切分、高斯滤波、二值化、正则化和归一化等。缓存单元7包括指令缓存单元71,用于缓存所述指令;权值字典缓存单元72,用于缓存所述权值字典;密码本缓存单元73,用于缓存所述密码本;输入神经元缓存单元74,用于缓存所述输入神经元;以及输出神经元缓存单元75,用于缓存输出神经元。
外部输入的输入数据经过预处理单元5预处理后,得到输入神经元、权值字典、密码本和指令并输出至存储单元4存储。DMA(直接内存读取)单元6从存储单元4中直接读取输入神经元、权值字典、密码本和指令,并将指令输出至指令缓存单元71中缓存,将权值字典输出至权值字典缓存单元72中缓存,将密码本输出至密码本缓存单元73中缓存,将输入神经元输出至输入神经元缓存单元74中缓存。控制单元1对其接收的指令译码,得到并输出查表控制信息和运算控制信息。查找表单元2根据接收的查表控制信息,对权值字典和密码本进行查表操作,得到量化权值,并输出至运算单元3。运算单元3根据其接收到的运算控制信息,选择运算部分及各运算部分的运算顺序,对量化权值和输入神经元进行运算处理,得到输出神经元并将其输出至输出神经元缓存单元75,最终再由该输出神经元缓存单元75输将输出神经元输出至存储单元4进行存储。
其中,第一运算部分的运算操作具体为:将输入数据1(in1)和输入数据2(in2)相乘,得到相乘之后的输出(out),表示为:out=in1*in2
第二运算部分可以由一个或多个加法器组成,以实现相加运算。此外,多个加法器也可以组成加法树,以实现不同级加法树的运算功能。其运算的操作具体为:将输入数据1(in1)通过加法树逐级相加得到输出数据(out1),其中输入数据1可以是一个长度为N的向量,N大于1,过程为:out1=in1[1]+in1[2]+...+in1[N];或者将输入数据1(in1)通过加法树累加之后,in1为一个长度为N的向量,N大于1,和输入数据2(in2)相加得到输出数据(out2),过程为:out2=in1[1]+in1[2]+...+in1[N]+in2;再或者将输入数据1(in1),和输入数据2(in2)相加得到输出数据(out3),其中该in1和in2均为一个数值,过程为:out3=in1+in2。
第三运算部分将输入数据(in)可以通过非线性函数(f)实现不同函数运算,从而得到输出数据(out),过程为:out=f(in),其中,非线性函数包括激活函数,其过程为:out=active(in),激活函数active包括但不限于sigmoid、tanh、relu和/或softmax。
第四运算部分将输入数据(in)进行池化操作,得到输出数据(out),过程为out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
以上几个部分的运算可以自由选择一个或者多个部分进行不同顺序的组合,从而实现各种不同功能的运算。本公开的运算单元3包括但不限于上述四个运算部分,还可以包含异或、同或以及或等逻辑运算,且运算控制信息可以控制各运算部分中的一个或者多个运算部分进行不同顺序的组合,从而实现各种不同功能的运算。
本公开实施例的另一方面,还提供了一种处理方法,图7为本公开实施例的处理方法的步骤示意图,如图7所示,包括步骤:
S701、接收输入神经元、权值字典、密码本和指令;
其中,输入神经元、权值字典、密码本和指令,可以为对外部输入的输入信息经过预处理操作后得到的信息,预处理包括但不限于切分、高斯滤波、二值化、正则化、归一化等方式;
S702、对所述指令译码,得到查找控制信息和运算控制信息;
其中,该指令为神经网络专用指令,包括所有专用于完成人工神经网络运算的指令。神经网络专用指令包括但不仅限于控制指令,数据传输指令,运算指令和逻辑指令。其中控制指令控制神经网络执行过程。数据传输指令完成不同存储介质之间的数据传输,数据格式包括但不仅限于矩阵,向量和标量。运算指令完成神经网络的算术运算,包括但不仅限于矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令和MAXOUT神经网络运算指令。逻辑指令完成神经网络的逻辑运算,包括但不仅限于向量逻辑运算指令和标量逻辑运算指令。
其中,RBM神经网络运算指令用于实现Restricted Boltzmann Machine (RBM)神经网络运算。
LRN神经网络运算指令用于实现Local Response Normalization(LRN)神经网络运算。
LSTM神经网络运算指令用于实现Long Short-Term Memory(LSTM)神经网络运算。
RNN神经网络运算指令用于实现Recurrent Neural Networks(RNN)神经网络运算。
RELU神经网络运算指令用于实现Rectified linear unit(RELU)神经网络运算。
PRELU神经网络运算指令用于实现Parametric Rectified Linear Unit (PRELU)神经网络运算。
SIGMOID神经网络运算指令用于实现S型生长曲线(SIGMOID)神经网络运算
TANH神经网络运算指令用于实现双曲正切函数(TANH)神经网络运算。
MAXOUT神经网络运算指令用于实现(MAXOUT)神经网络运算。
更进一步地,该神经网络专用指令包括Cambricon指令集。
所述Cambricon指令集包括至少一种Cambricon指令,且Cambricon指令的长度为64bit,该Cambricon指令包括操作码和操作数。Cambricon指令包含四种类型的指令,分别是Cambricon控制指令(control instructions)、Cambricon数据传输指令(data transferinstructions)、Cambricon运算指令(computational instructions)和Cambricon逻辑指令(10gical instructions)。
其中,Cambricon控制指令用于控制执行过程。Cambricon控制指令包括跳转(jump)指令和条件分支(conditional branch)指令。
Cambricon数据传输指令用于完成不同存储介质之间的数据传输。Cambricon数据传输指令包括加载(load)指令、存储(store)指令和搬运(move)指令。load指令用于将数据从主存加载到缓存,store指令用于将数据从缓存存储到主存,move指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据。数据传输指令支持三种不同的数据组织方式,包括矩阵,向量和标量。
Cambricon运算指令用于完成神经网络算术运算。Cambricon运算指令包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令。
Cambricon矩阵运算指令完成神经网络中的矩阵运算,包括矩阵乘向量(matrixmultiply vector)、向量乘矩阵(vector multiply matrix)、矩阵乘标量(matrixmultiply scalar)、外积(outer product)、矩阵加矩阵(matrix add matrix)和矩阵减矩阵(matrix subtract matrix)。
Cambricon向量运算指令完成神经网络中的向量运算,包括向量基本运算(vectorelementary arithmetics)、向量超越函数运算(vector transcendental functions)、内积(dot product)、向量随机生成(random vector generator)和向量中最大/最小值(maximum/minimum of a vector)。其中向量基本运算包括向量加、减、乘、除(add、subtract、multiply、divide),向量超越函数是指那些不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数、对数函数、三角函数和反三角函数。
Cambricon标量运算指令完成神经网络中的标量运算,包括标量基本运算(scalarelementary arithmetics)和标量超越函数运算(scalar transcendental functions)。其中标量基本运算包括标量、减、乘、除(add、subtract、multiply、divide),标量超越函数是指那些不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数,对数函数,三角函数,反三角函数。
Cambricon逻辑指令用于神经网络的逻辑运算。Cambricon逻辑运算包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令。
Cambricon向量逻辑运算指令包括向量比较(vector compare)、向量逻辑运算(vector logical operations)和向量大于合并(vector greater than merge)。其中向量比较包括但不小于大于、小于,等于、大于等于、小于等于、不等于。向量逻辑运算包括与、或、非。
Cambricon标量逻辑运算包括标量比较(scalar compare),标量逻辑运算(scalarlogical operations)。其中标量比较包括但不限于大于、小于、等于、大于等于,小于等于和不等于。标量逻辑运算包括与、或、非。
S703、根据所述查找控制信息,查找权值字典和密码本得到量化权值,根据所述运算控制信息,对该量化权值以及输入神经元进行运算操作,得到并将输出神经元输出。
此外,为了优化本公开的处理方法,使得处理更方便、有序,在本公开的一些实施例中还增加了步骤,图8为本公开实施例的一具体实施例的处理方法的步骤示意图,如图8所示,该具体实施例的处理方法中:
在步骤S701之前,还包括步骤S700:对外部输入的输入信息进行预处理,得到所述输入神经元、权值字典、密码本和指令,预处理包括切分、高斯滤波、二值化、正则化和归一化等;
在步骤S702之后还包括:
步骤S7021:存储输入神经元、权值字典、密码本和指令,以及存储输出神经元;以及
步骤S7022:缓存所述指令、输入神经元、输出神经元、权值字典和密码本。之后的步骤同图7所示的处理方法,此处不再赘述。
其中,所述运算操作包括:将权值和输入神经元相加,该相加功能由一个或多个加法器实现,此外,所述多个加法器还可以构成加法树,实现权值和输入神经元的逐级相加;和/或将权值和输入神经元相乘;和/或对所述权值和输入神经元进行非线性函数运算,其中,非线性函数包括激活函数,所述激活函数包括sigmoid、tanh、relu和/或softmax;和/或对所述权值和输入神经元进行池化操作,所述权值包括量化权值和/或非量化权值,其中,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。前述几种运算可以自由选择一种或者多种进行不同顺序的组合,从而实现各种不同功能的运算。且本公开的运算步骤包括但不限于上述四种运算,还可以包含或、异或以及同或等逻辑运算。
此外,该处理方法也能用于处理未量化权值,可以根据运算控制信息,对该位量化权值和输入神经元进行运算,得到并将输出神经元输出。
在一个实施例里,本公开还提供了一种芯片,其包括了前述处理装置,该芯片能够同时对量化权值以及未量化权值进行多种运算,实现了运算的多元化。另外,通过采用针对多层人工神经网络运算算法的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络运算及其训练算法性能瓶颈的问题。
在一个实施例里,本公开提供了一个芯片封装结构,其包括了上述芯片。
在一个实施例里,本公开提供了一个板卡,其包括了上述芯片封装结构。
在一个实施例里,本公开提供了一个电子装置,其包括了上述板卡。
上述电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本公开实施例所有的模块都可以是硬件结构,硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管、忆阻器、DNA计算机。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (24)
1.一种处理装置,包括:
控制单元,用于接收指令并进行译码,生成查找控制信息和运算控制信息;
查找表单元,用于接收所述查找控制信息、权值字典和密码本,并根据查找控制信息,对权值字典和密码本进行查表操作,得到量化权值;以及
运算单元,用于接收所述运算控制信息和输入神经元,并根据运算控制信息,对量化权值和输入神经元进行运算操作,得到并将输出神经元输出。
2.根据权利要求1所述的处理装置,其中,还包括:
预处理单元,用于对外部输入的输入信息进行预处理,得到所述输入神经元、权值字典、密码本和指令;
存储单元,用于存储输入神经元、权值字典、密码本和指令,以及接收输出神经元;
缓存单元,用于缓存所述指令、输入神经元、输出神经元、权值字典和密码本;以及
直接内存存取单元,用于在所述存储单元和缓存单元之间进行数据或者指令读写。
3.根据权利要求2所述的处理装置,其中,所述预处理单元中,对外部输入的输入信息进行的预处理包括:切分、高斯滤波、二值化、正则化和/或归一化。
4.根据权利要求2或3所述的处理装置,其中,所述缓存单元包括:
指令缓存,用于缓存所述指令;
输入神经元缓存,用于缓存所述输入神经元;以及
输出神经元缓存,用于缓存所述输出神经元。
5.根据权利要求2至4中任一所述的处理装置,其中,所述缓存单元还包括:
权值字典缓存,用于缓存所述权值字典;以及
密码本缓存,用于缓存所述密码本。
6.根据权利要求1至5中任一所述的处理装置,其中,所述指令为神经网络专用指令。
7.根据权利要求6所述的处理装置,其中,所述神经网络专用指令包括:
控制指令,用于控制神经网络执行过程;
数据传输指令,用于完成不同存储介质之间的数据传输,数据格式包括矩阵、向量和标量;
运算指令,用于完成神经网络的算术运算,包括矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令、MAXOUT神经网络运算指令;以及
逻辑指令,用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。
8.根据权利要求6或7所述的处理装置,其中,所述神经网络专用指令包括至少一种Cambricon指令,该Cambricon指令包括操作码和操作数,所述Cambricon指令包括:
Cambricon控制指令用于控制执行过程,且该Cambricon控制指令包括跳转指令和条件分支指令;
Cambricon数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令、存储指令、搬运指令;其中,所述加载指令用于将数据从主存加载到缓存;存储指令用于将数据从缓存存储到主存;搬运指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据;
Cambricon运算指令用于完成神经网络算术运算,包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令;其中,所述Cambricon矩阵运算指令用于完成神经网络中的矩阵运算,包括矩阵乘向量、向量乘矩阵、矩阵乘标量、外积、矩阵加矩阵和矩阵减矩阵;所述Cambricon向量运算指令用于完成神经网络中的向量运算,包括向量基本运算、向量超越函数运算、内积、向量随机生成和向量中最大/最小值;Cambricon标量运算指令用于完成神经网络中的标量运算,包括标量基本运算和标量超越函数运算;以及
Cambricon逻辑指令用于神经网络的逻辑运算,逻辑运算包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令;其中,所述Cambricon向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并;向量逻辑运算包括与、或、非;所述Cambricon标量逻辑运算包括标量比较和标量逻辑运算。
9.根据权利要求8所述的处理装置,其中,所述Cambricon数据传输指令支持以下的一种或者多种数据组织方式:矩阵、向量和标量;所述向量基本运算包括向量加、减、乘、除;向量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述标量基本运算包括标量加、减、乘、除;标量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述向量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述向量逻辑运算包括与、或、非;所述标量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述标量逻辑运算包括与、或、非。
10.根据权利要求2至9任一所述的处理装置,其中,所述存储单元还用于存储未量化权值,且该未量化权值直接输出至运算单元。
11.根据权利要求1至10任一所述的处理装置,其中,所述运算单元包括:
第一运算部分,用于将所述权值和输入神经元相乘;和/或
第二运算部分,包括一个或者多个加法器,用于对所述权值和输入神经元通过一个或多个加法器相加;和/或
第三运算部分,对所述权值和输入神经元进行非线性函数运算,所述非线性函数包括激活函数,所述激活函数包括sigmoid、tanh、relu和/或softmax;和/或
第四运算部分,用于对所述权值和输入神经元进行池化操作,所述池化操作包括平均值池化、最大值池化和/或中值池化;
其中,所述权值为未量化权值和/或量化权值。
12.根据权利要求11所述的处理装置,其中,所述第二运算部分包括多个加法器,所述多个加法器组成加法树,实现权值和输入神经元的逐级相加。
13.一种处理方法,包括步骤:
接收输入神经元、权值字典、密码本和指令;
对所述指令译码,得到查找控制信息和运算控制信息;以及
根据所述查找控制信息,查找权值字典和密码本得到量化权值,根据所述运算控制信息,对该量化权值以及输入神经元进行运算操作,得到并将输出神经元输出。
14.根据权利要求13所述的处理方法,其中,
在接收输入神经元、权值字典、密码本和指令之前,还包括步骤:对外部输入的输入信息进行预处理,得到所述输入神经元、权值字典、密码本和指令;以及
在接收输入神经元、权值字典、密码本和指令之后,还包括步骤:存储输入神经元、权值字典、密码本和指令,以及存储输出神经元;以及缓存所述指令、输入神经元、输出神经元。
15.根据权利要求14所述的处理方法,其中,在接收输入神经元、权值字典、密码本和指令之后,还包括步骤:缓存权值字典和密码本。
16.根据权利要求14或15所述的处理方法,其中,所述预处理包括切分、高斯滤波、二值化、正则化和、或归一化。
17.根据权利要求13至16任一所述的处理方法,其中,所述指令为神经网络专用指令。
18.根据权利要求17所述的处理装置,其中,所述神经网络专用指令包括:
控制指令,用于控制神经网络执行过程;
数据传输指令,用于完成不同存储介质之间的数据传输,数据格式包括矩阵、向量和标量;
运算指令,用于完成神经网络的算术运算,包括矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令、MAXOUT神经网络运算指令;以及
逻辑指令,用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。
19.根据权利要求17或18所述的处理装置,其中,所述神经网络专用指令包括至少一种Cambricon指令,该Cambricon指令包括操作码和操作数,所述Cambricon指令包括:
Cambricon控制指令用于控制执行过程,且该Cambricon控制指令包括跳转指令和条件分支指令;
Cambricon数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令、存储指令、搬运指令;其中,所述加载指令用于将数据从主存加载到缓存;存储指令用于将数据从缓存存储到主存;搬运指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据;
Cambricon运算指令用于完成神经网络算术运算,包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令;其中,所述Cambricon矩阵运算指令用于完成神经网络中的矩阵运算,包括矩阵乘向量、向量乘矩阵、矩阵乘标量、外积、矩阵加矩阵和矩阵减矩阵;所述Cambricon向量运算指令用于完成神经网络中的向量运算,包括向量基本运算、向量超越函数运算、内积、向量随机生成和向量中最大/最小值;Cambricon标量运算指令用于完成神经网络中的标量运算,包括标量基本运算和标量超越函数运算;以及
Cambricon逻辑指令用于神经网络的逻辑运算,逻辑运算包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令;其中,所述Cambricon向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并;向量逻辑运算包括与、或、非;所述Cambricon标量逻辑运算包括标量比较和标量逻辑运算。
20.根据权利要求19所述的处理装置,其中,所述Cambricon数据传输指令支持以下的一种或者多种数据组织方式:矩阵、向量和标量;所述向量基本运算包括向量加、减、乘、除;向量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述标量基本运算包括标量加、减、乘、除;标量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述向量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述向量逻辑运算包括与、或、非;所述标量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述标量逻辑运算包括与、或、非。
21.根据权利要求13至20任一所述的处理方法,其中,还包括步骤:接收未量化权值,根据运算控制信息,对该位量化权值和输入神经元进行运算,得到并将输出神经元输出。
22.根据权利要求13至21任一所述的处理方法,其中,所述运算操作包括:
将权值和输入神经元相加;和/或
将权值和输入神经元相乘;和/或
对所述权值和输入神经元进行非线性函数运算,所述非线性函数包括激活函数,所述激活函数包括sigmoid、tanh、relu和/或softmax;和/或
对所述权值和输入神经元进行池化操作,所述池化操作包括平均值池化、最大值池化和/或中值池化,
其中,所述权值包括量化权值和/或非量化权值。
23.根据权利要求22所述的处理方法,其中,权值和输入神经元的相加由一个或多个加法器实现。
24.根据权利要求23所述的处理方法,其中,所述多个加法器构成加法树,实现权值和输入神经元的逐级相加。
Priority Applications (13)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710689595.XA CN109389209B (zh) | 2017-08-09 | 2017-08-09 | 处理装置及处理方法 |
EP18806558.5A EP3637325A4 (en) | 2017-05-23 | 2018-05-23 | TREATMENT METHOD AND ACCELERATION DEVICE |
EP19214010.1A EP3657398A1 (en) | 2017-05-23 | 2018-05-23 | Weight quantization method for a neural network and accelerating device therefor |
PCT/CN2018/088033 WO2018214913A1 (zh) | 2017-05-23 | 2018-05-23 | 处理方法及加速装置 |
EP19214007.7A EP3657340A1 (en) | 2017-05-23 | 2018-05-23 | Processing method and accelerating device |
EP19214015.0A EP3657399A1 (en) | 2017-05-23 | 2018-05-23 | Weight pruning and quantization method for a neural network and accelerating device therefor |
US16/699,055 US20200097828A1 (en) | 2017-05-23 | 2019-11-28 | Processing method and accelerating device |
US16/699,029 US11710041B2 (en) | 2017-05-23 | 2019-11-28 | Feature map and weight selection method and accelerating device |
US16/699,032 US11907844B2 (en) | 2017-05-23 | 2019-11-28 | Processing method and accelerating device |
US16/699,051 US20220335299A9 (en) | 2017-05-23 | 2019-11-28 | Processing method and accelerating device |
US16/699,049 US20200134460A1 (en) | 2017-05-23 | 2019-11-28 | Processing method and accelerating device |
US16/699,046 US11727276B2 (en) | 2017-05-23 | 2019-11-28 | Processing method and accelerating device |
US16/699,027 US20200097826A1 (en) | 2017-05-23 | 2019-11-28 | Processing method and accelerating device |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710678038.8A CN109389208B (zh) | 2017-08-09 | 2017-08-09 | 数据的量化装置及量化方法 |
CN201710689595.XA CN109389209B (zh) | 2017-08-09 | 2017-08-09 | 处理装置及处理方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710678038.8A Division CN109389208B (zh) | 2017-05-23 | 2017-08-09 | 数据的量化装置及量化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109389209A true CN109389209A (zh) | 2019-02-26 |
CN109389209B CN109389209B (zh) | 2022-03-15 |
Family
ID=80607109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710689595.XA Active CN109389209B (zh) | 2017-05-23 | 2017-08-09 | 处理装置及处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109389209B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110837890A (zh) * | 2019-10-22 | 2020-02-25 | 西安交通大学 | 一种面向轻量级卷积神经网络的权值数值定点量化方法 |
WO2020238775A1 (zh) * | 2019-05-28 | 2020-12-03 | 华为技术有限公司 | 一种场景识别方法、一种场景识别装置及一种电子设备 |
CN112259071A (zh) * | 2020-09-22 | 2021-01-22 | 北京百度网讯科技有限公司 | 语音处理系统、语音处理方法、电子设备和可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462524A (zh) * | 2014-12-24 | 2015-03-25 | 福建江夏学院 | 一种物联网数据压缩存储方法 |
CN106203622A (zh) * | 2016-07-14 | 2016-12-07 | 杭州华为数字技术有限公司 | 神经网络运算装置 |
CN106485316A (zh) * | 2016-10-31 | 2017-03-08 | 北京百度网讯科技有限公司 | 神经网络模型压缩方法以及装置 |
US20170103304A1 (en) * | 2015-10-08 | 2017-04-13 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with plurality of selectable output functions |
CN106919942A (zh) * | 2017-01-18 | 2017-07-04 | 华南理工大学 | 用于手写汉字识别的深度卷积神经网络的加速压缩方法 |
CN106991477A (zh) * | 2016-01-20 | 2017-07-28 | 南京艾溪信息科技有限公司 | 一种人工神经网络压缩编码装置和方法 |
-
2017
- 2017-08-09 CN CN201710689595.XA patent/CN109389209B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462524A (zh) * | 2014-12-24 | 2015-03-25 | 福建江夏学院 | 一种物联网数据压缩存储方法 |
US20170103304A1 (en) * | 2015-10-08 | 2017-04-13 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with plurality of selectable output functions |
CN106991477A (zh) * | 2016-01-20 | 2017-07-28 | 南京艾溪信息科技有限公司 | 一种人工神经网络压缩编码装置和方法 |
CN106203622A (zh) * | 2016-07-14 | 2016-12-07 | 杭州华为数字技术有限公司 | 神经网络运算装置 |
CN106485316A (zh) * | 2016-10-31 | 2017-03-08 | 北京百度网讯科技有限公司 | 神经网络模型压缩方法以及装置 |
CN106919942A (zh) * | 2017-01-18 | 2017-07-04 | 华南理工大学 | 用于手写汉字识别的深度卷积神经网络的加速压缩方法 |
Non-Patent Citations (1)
Title |
---|
SHAOLI LIU ET.AL: "Cambricon: An Instruction Set Architecture for Neural Networks", 《2016 ACM/IEEE 43RD ANNUAL INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020238775A1 (zh) * | 2019-05-28 | 2020-12-03 | 华为技术有限公司 | 一种场景识别方法、一种场景识别装置及一种电子设备 |
CN110837890A (zh) * | 2019-10-22 | 2020-02-25 | 西安交通大学 | 一种面向轻量级卷积神经网络的权值数值定点量化方法 |
CN112259071A (zh) * | 2020-09-22 | 2021-01-22 | 北京百度网讯科技有限公司 | 语音处理系统、语音处理方法、电子设备和可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109389209B (zh) | 2022-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11727276B2 (en) | Processing method and accelerating device | |
CN111221578B (zh) | 计算装置以及计算方法 | |
CN109389208A (zh) | 数据的量化装置及量化方法 | |
CN109726806A (zh) | 信息处理方法及终端设备 | |
US10657439B2 (en) | Processing method and device, operation method and device | |
CN108733348B (zh) | 融合向量乘法器和使用其进行运算的方法 | |
CN107506828A (zh) | 计算装置和方法 | |
CN109426553A (zh) | 任务切分装置及方法、任务处理装置及方法、多核处理器 | |
CN110163356A (zh) | 一种计算装置及方法 | |
CN110163334A (zh) | 集成电路芯片装置及相关产品 | |
CN108170640A (zh) | 神经网络运算装置及应用其进行运算的方法 | |
CN110276447A (zh) | 一种计算装置及方法 | |
CN112561028A (zh) | 训练神经网络模型的方法、数据处理的方法及装置 | |
CN109389209A (zh) | 处理装置及处理方法 | |
CN110163350A (zh) | 一种计算装置及方法 | |
CN109478251B (zh) | 处理方法及加速装置 | |
CN113238989A (zh) | 将数据进行量化的设备、方法及计算机可读存储介质 | |
CN109389210B (zh) | 处理方法和处理装置 | |
CN109697509B (zh) | 处理方法及装置、运算方法及装置 | |
CN113238987B (zh) | 量化数据的统计量化器、存储装置、处理装置及板卡 | |
CN108960420B (zh) | 处理方法及加速装置 | |
CN109389213A (zh) | 存储装置及方法、数据处理装置及方法、电子装置 | |
CN113238975A (zh) | 优化深度神经网络的参数的内存、集成电路及板卡 | |
Yang et al. | Value-driven synthesis for neural network ASICs | |
Alihodzic | Training feed-forward neural networks employing improved bat algorithm for digital image compression |
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 |