买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】处理方法及装置、运算方法及装置_上海寒武纪信息科技有限公司_201711061069.5 

申请/专利权人:上海寒武纪信息科技有限公司

申请日:2017-10-24

公开(公告)日:2020-10-20

公开(公告)号:CN109697509B

主分类号:G06N3/08(20060101)

分类号:G06N3/08(20060101);G06N3/06(20060101);G06K9/62(20060101)

优先权:

专利状态码:有效-授权

法律状态:2020.10.20#授权;2019.06.21#实质审查的生效;2019.04.30#公开

摘要:本公开提供了一种运算方法及装置,将量化后的数据,通过数据的查表,以实现运算操作,简化了结构,减少数据的计算能耗。同时,还实现了多元化的运算操作。

主权项:1.一种运算装置,包括:指令控制单元,用于对接收的指令进行译码,生成查找控制信息;以及查找表单元,用于根据所述查找控制信息,以及接收的权值字典、神经元字典、运算密码本、权值和输入神经元,从运算密码本中查找输出神经元;其中,所述指令为神经网络专用指令,所述神经网络专用指令包括:控制指令,用于控制神经网络执行过程;数据传输指令,用于完成不同存储介质之间的数据传输,数据格式包括矩阵、向量和标量;运算指令,用于完成神经网络的算术运算,包括矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、受限玻尔兹曼机RBM神经网络运算指令、局部响应归一化LRN神经网络运算指令、局部对比度归一化LCN神经网络运算指令、长短期记忆网络LSTM神经网络运算指令、循环神经网络RNN运算指令、线性整流函数RELU神经网络运算指令、参数化修正线性整流函数PRELU神经网络运算指令、SIGMOID神经网络运算指令、双曲正切函数TANH神经网络运算指令、MAXOUT神经网络运算指令;以及逻辑指令,用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。

全文数据:处理方法及装置、运算方法及装置技术领域本公开涉及数据处理领域,尤其涉及一种处理方法及装置、运算方法及装置。背景技术神经网络neuralnetwork已经获得了非常成功的应用。但是神经网络的大规模参数和大规模计算成为神经网络应用的一个巨大挑战。一方面,大规模的参数对存储容量提出了很高的要求,同时导致大量的访存能耗。另一方面,大规模计算对运算单元的设计提出了很高的要求,同时导致大量的计算能耗。因此,如何减少神经网络的参数和计算量成为一个亟待解决的问题。发明内容一要解决的技术问题本公开的目的在于提供一种处理方法及装置、运算方法及装置,以解决上述的至少一项技术问题。二技术方案本公开的一方面,提供了一种处理方法,包括:分别对权值和输入神经元进行量化,确定权值字典、权值密码本、神经元字典和神经元密码本;以及根据所述权值密码本和神经元密码本,确定运算密码本。在本公开的一些实施例中,对权值进行量化包括步骤:对权值分组,对每一组权值用聚类算法进行聚类操作,将一组权值分成m类,m为正整数,每一类权值对应一个权值索引,确定权值字典,其中,权值字典包括权值位置和权值索引,权值位置指权值在神经网络结构中的位置;以及将每一类的所有权值用一中心权值替换,确定权值密码本,其中,权值密码本包括权值索引和中心权值。在本公开的一些实施例中,对输入神经元进行量化包括步骤:将输入神经元分为n段,每一段输入神经元对应一个神经元范围及一个神经元索引,确定神经元字典,其中,n为正整数;以及对所述输入神经元进行编码,将每一段的所有输入神经元用一中心神经元替换,确定神经元密码本。在本公开的一些实施例中,所述确定运算密码本,具体包括步骤:根据所述权值确定权值密码本中的对应的权值索引,再通过权值索引确定该权值对应的中心权值;根据所述输入神经元确定神经元密码本中对应的神经元索引,再通过神经元索引确定该输入神经元对应的中心神经元;以及将该中心权值和中心神经元进行运算操作,得到运算结果,并将该运算结果组成矩阵,从而确定所述运算密码本。在本公开的一些实施例中,所述运算操作包括以下的至少一种:加法、乘法和池化,其中,池化包括:平均值池化,最大值池化和中值池化。在本公开的一些实施例中,还包括步骤:对权值和输入神经元进行重训练,重训练时只训练权值密码本和神经元密码本,权值字典和神经元字典的内容保持不变,所述重训练采用反向传播算法。在本公开的一些实施例中,所述分组包括:分为一组,将神经网络的所有权值归为一组;层类型分组,将神经网络中所有卷积层的权值、所有全连接层的权值和所有长短时记忆网络层的权值各划分成一组;层间分组,将神经网络中一个或者多个卷积层的权值、一个或者多个全连接层的权值和一个或者多个长短时记忆网络层的权值各划分成一组;以及层内分组,将神经网络的一层内的权值进行切分,切分后的每一个部分划分为一组。在本公开的一些实施例中,所述聚类算法包括K-means、K-medoids、Clara和或Clarans。在本公开的一些实施例中,每一类的中心权值的选择方法为使得代价函数Jw,w0最小,代价函数为平方距离:其中,J是代价函数,w是类中所有权值,w0是中心权值,n是每一类中权值数量,wi是类中第i个权值,i是大于等于1小于等于n的正整数。本公开的另一方面,还提供了一种处理装置,包括:存储器,用于存储操作指令;以及处理器,用于执行存储器中的操作指令,在执行该操作指令时依照前述处理方法进行操作。在本公开的一些实施例中,所述操作指令为二进制数,包括操作码和地址码,操作码指示处理器即将进行的操作,地址码指示处理器到存储器中的地址中读取参与操作的数据。本公开的再一方面,还提供了一种运算装置,包括:指令控制单元,用于对接收的指令进行译码,生成查找控制信息;以及查找表单元,用于根据所述查找控制信息,以及接收的权值字典、神经元字典、运算密码本、权值和输入神经元,从运算密码本中查找输出神经元。在本公开的一些实施例中,所述权值字典包括权值位置和权值索引;所述神经元字典包括输入神经元和神经元索引;所述运算密码本包括权值索引、神经元索引以及输入神经元和权值的运算结果。在本公开的一些实施例中,还包括:预处理单元,用于对外部输入的输入信息进行预处理,得到所述权值、输入神经元、指令、权值字典、神经元字典、运算密码本;存储单元,用于存储输入神经元、权值、权值字典、神经元字典、运算密码本和指令,以及接收输出神经元;缓存单元,用于缓存所述指令、输入神经元、权值、权值索引、神经元索引和输出神经元;以及直接内存存取单元,用于在所述存储单元和缓存单元之间进行数据或者指令读写。在本公开的一些实施例中,所述缓存单元包括:指令缓存,用于缓存所述指令,并将缓存的指令输出至指令控制单元;权值缓存,用于缓存所述权值;输入神经元缓存,用于缓存所述输入神经元;以及输出神经元缓存,用于缓存查找表单元输出的输出神经元。在本公开的一些实施例中,所述缓存单元还包括:权值索引缓存,用于缓存权值索引;以及神经元索引缓存,用于缓存神经元索引。在本公开的一些实施例中,所述预处理单元中,对外部输入的输入信息进行的预处理包括:切分、高斯滤波、二值化、正则化和或归一化。在本公开的一些实施例中,查找表单元包括:乘法查找表:用于输入权值索引in1和神经元索引in2,通过乘法查找表经过查表操作mult_lookup,完成权值索引对应的中心权值data1和神经元索引对应的中心神经元data2的乘法操作,即用查表操作out=mult_lookupin1,in2完成乘法功能out=data1*data2;和或加法查找表:用于根据输入索引in通过逐级加法查找表经过查表操作add_lookup完成索引对应的中心数据data的加法操作,其中,in和data是长度为N的向量,N是正整数,即用查表操作out=add_lookupin完成加法功能out=data[1]+data[2]+...+data[N],和或输入权值索引in1和神经元索引in2通过加法查找表经过查表操作完成权值索引对应的中心权值data1和神经元索引对应的中心神经元data2的加法操作,即用查表操作out=add_lookupin1,in2完成加法功能,out=data1+data2;和或池化查找表:用于输入索引对应的中心数据data的池化操作,即用查表out=pool_lookupin完成池化操作out=pooldata,池化操作包括平均值池化、最大值池化和中值池化。在本公开的一些实施例中,所述指令为神经网络专用指令,所述神经网络专用指令包括:控制指令,用于控制神经网络执行过程;数据传输指令,用于完成不同存储介质之间的数据传输,数据格式包括矩阵、向量和标量;运算指令,用于完成神经网络的算术运算,包括矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、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数据传输指令支持以下的一种或者多种数据组织方式:矩阵、向量和标量;所述向量基本运算包括向量加、减、乘、除;向量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述标量基本运算包括标量加、减、乘、除;标量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述向量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述向量逻辑运算包括与、或、非;所述标量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述标量逻辑运算包括与、或、非。本公开的又一方面,还提供了一种运算方法,包括:接收权值、输入神经元、指令、权值字典、神经元字典和运算密码本;对所述指令进行译码,确定查找控制信息;以及根据所述查找控制信息、权值、权值字典、神经元字典和输入神经元,在运算密码本中查找输出神经元。在本公开的一些实施例中,所述权值字典包括权值位置和权值索引;所述神经元字典包括输入神经元和神经元索引;所述运算密码本包括权值索引,神经元索引以及权值和输入神经元的运算结果。在本公开的一些实施例中,根据所述查找控制信息、权值和输入神经元,在运算密码本中查找输出神经元,包括步骤:根据所述权值、输入神经元、权值字典和神经元字典,在神经元字典中通过确定神经元范围以确定神经元索引、以及在权值字典中通过确定权值位置以确定权值索引;根据所述权值索引和神经元索引,在运算密码本中查找该运算结果,以确定输出神经元。在本公开的一些实施例中,所述运算结果包括以下的至少一种运算操作的结果:加法、乘法和池化,其中,池化包括:平均值池化,最大值池化和中值池化。在本公开的一些实施例中,在接收权值、输入神经元、指令、权值字典、神经元字典、运算密码本之前,还包括步骤:对外部输入的输入信息进行预处理,得到所述权值、输入神经元、指令、权值字典、神经元字典、运算密码本;以及在接收权值、输入神经元、指令、权值字典、神经元字典、运算密码本之后,还包括步骤:存储权值、输入神经元、指令、权值字典、神经元字典、运算密码本、以及接收输出神经元;以及缓存所述指令、输入神经元、权值和输出神经元。在本公开的一些实施例中,在接收权值、输入神经元、指令、权值字典、神经元字典、运算密码本之后,还包括步骤:缓存所述权值索引和神经元索引。在本公开的一些实施例中,所述预处理包括切分、高斯滤波、二值化、正则化和或归一化。在本公开的一些实施例中,所述指令为神经网络专用指令,所述神经网络专用指令包括:控制指令,用于控制神经网络执行过程;数据传输指令,用于完成不同存储介质之间的数据传输,数据格式包括矩阵、向量和标量;运算指令,用于完成神经网络的算术运算,包括矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、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数据传输指令支持以下的一种或者多种数据组织方式:矩阵、向量和标量;所述向量基本运算包括向量加、减、乘、除;向量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述标量基本运算包括标量加、减、乘、除;标量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述向量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述向量逻辑运算包括与、或、非;所述标量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述标量逻辑运算包括与、或、非。三有益效果本公开提供的处理方法及装置、运算方法及装置,相较于现有技术,至少具有以下优点:1、采用量化的方法将神经网络的神经元和权值进行量化,用权值字典和权值密码本表示量化后权值,用神经元字典和神经元密码本表示量化后的神经元,然后将神经网络中的运算转化成为查表操作,从而减少神经网络参数存储量,减少访存能耗和计算能耗。神经网络处理器中集成基于查找表的计算方法,优化了查表操作,简化了结构,减少神经网络访存能耗和计算能耗,同时还能实现运算的多元化。2、可以对神经网络进行重训练,且重训练时只需训练密码本,不需要训练权值字典,简化了重训练操作。3、采用针对局部量化的多层人工神经网络运算的神经网络专用指令和灵活的运算单元,解决了CPU中央处理器和GPU图形处理器运算性能不足,前端译码开销大的问题,有效提高了对多层人工神经网络运算算法的支持。4、通过采用针对多层人工神经网络运算算法的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络运算及其训练算法性能瓶颈的问题。附图说明图1为本公开实施例的处理方法的步骤示意图。图2为本公开实施例对权值进行量化的过程示意图。图3为本公开实施例的对输入神经元进行量化的过程示意图。图4为本公开实施例的确定运算密码本的过程示意图。图5为本公开实施例的处理装置的结构示意图。图6为本公开实施例的运算装置的结构示意图。图7为本公开一具体实施例提供的运算装置的结构示意图。图8为本公开实施例的运算方法的步骤示意图。图9为本公开实施例的具体实施例的运算方法的步骤示意图。具体实施方式基于现有技术中,神经网络的数据处理时超大的计算量使得神经网络的应用受到阻碍的技术缺陷,本公开提供了一种处理方法及装置、运算方法及装置。其中,处理方法及装置通过量化输入神经元和权值这两种数据,分别挖掘层间、段间数据之间的相似性以及层内、段内数据局部相似性,以挖掘两种数据分布特性从而进行低比特量化,减小了表示每一个数据的比特数,从而降低了数据存储开销和访存开销。运算方法及装置将量化后的神经元和权值,通过查表操作实现了二者的运算操作,减少了神经网络访存能耗和计算能耗。为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。本公开实施例的一方面,提供了一种处理方法,图1为本公开实施例的处理方法的步骤示意图,如图1所示,处理方法包括:步骤S1、分别对权值和输入神经元进行量化,确定权值字典、权值密码本、神经元字典和神经元密码本;其中,对权值进行量化的过程具体包括步骤:对权值进行分组,对每一组权值用聚类算法进行聚类操作,将一组权值分成m类,m为正整数,每一类权值对应一个权值索引,确定权值字典,其中,权值字典包括权值位置和权值索引,权值位置指权值在神经网络结构中的位置;将每一类的所有权值用一中心权值替换,确定权值密码本,该权值密码本包括权值索引和中心权值。图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分别表示对应类别中的权值,从而得到权值字典。需要注意的是,权值字典还包括权值位置,即权值在神经网络结构中的位置,在权值字典中,权值位置指其中第p行第q列的坐标即p,q,在本实施例中,1≤p≤4,1≤q≤4。可见,该量化过程充分挖掘了神经网络层间权值的相似性以及层内权值局部相似性,得到神经网络的权值分布特性从而进行低比特量化,减小了表示每一个权值的比特数,从而降低了权值存储开销和访存开销。一般来说,分组包括但不限于以下几种:分为一组,将神经网络的所有权值归为一组;层类型分组,将神经网络中所有卷积层的权值、所有全连接层的权值和所有长短时记忆网络层的权值各划分成一组;层间分组,将神经网络中一个或者多个卷积层的权值、一个或者多个全连接层的权值和一个或者多个长短时记忆网络层的权值各划分成一组;以及层内分组,将神经网络的一层内的权值进行切分,切分后的每一个部分划分为一组。聚类算法包括K-means、K-medoids、Clara和或Clarans。每一类的中心权值的选择方法为使得代价函数Jw,w0最小,代价函数可以为平方距离:其中,J是代价函数,w是类中所有权值,w0是中心权值,n是每一类中权值数量,wi是类中第i个权值,i是大于等于1小于等于n的正整数。接下来,对输入神经元进行量化进行说明,其包括步骤:将输入神经元分为n段,每一段输入神经元对应一个神经元范围及一个神经元索引,确定神经元字典,其中,n为正整数;以及对所述输入神经元进行编码,将每一段的所有输入神经元用一中心神经元替换,确定神经元密码本。图3为本公开实施例的对输入神经元进行量化的过程示意图,如图3所示,本实施例以对ReLU激活层神经元进行量化。首先将ReLU函数进行分段,共分为四段,分别用0.0、0.2、0.5和0.7分别表示表示四段的中心神经元,以00、01、10和11来表示神经元索引。最后生成包含有神经元索引和中心神经元的神经元密码本;以及包含有神经元范围和神经元索引的神经元字典。其中,x表示未量化神经元时神经元的值。该输入神经元的量化过程能够按照实际需求将输入神经元分成多段,以及得到每一段的索引,组成神经元字典。再根据神经元索引,将每一段中的输入神经元替换为神经元密码本中的中心神经元,能够充分挖掘输入神经元之间的相似性,得到输入神经元的分布特性从而进行低比特量化,减小了表示每一个输入神经元的比特数,从而降低了输入神经元的存储开销和访存开销。步骤S2、根据所述权值密码本和神经元密码本,确定运算密码本,具体包括步骤:S21、根据所述权值确定权值密码本中的对应的权值索引,再通过权值索引确定该权值对应的中心权值;S22、根据所述输入神经元确定神经元密码本中对应的神经元索引,再通过神经元索引确定该输入神经元对应的中心神经元;以及S23、将该中心权值和中心神经元进行运算操作,得到运算结果,并将该运算结果组成矩阵,从而确定所述运算密码本。图4为本公开实施例的确定运算密码本的过程示意图,如图4所示,本实施例以乘法密码本为例,在其他实施例中,该运算密码本还可以为加法密码本、池化密码本等。先在权值字典中,根据权值确定对应的权值索引、以及该权值索引对应的中心权值;再在神经元密码本中,根据输入神经元确定对应的神经元索引、以及该神经元索引对应的中心神经元。最后将该神经元索引和权值索引作为运算密码本的行索引和列索引,中心神经元和中心权值进行乘法运算,组成矩阵,即可得到乘法密码本。在步骤S2之后还可以包括步骤S3、对权值和输入神经元进行重训练,重训练时只训练权值密码本和神经元密码本,权值字典和神经元字典的内容保持不变,简化了重训练操作,减小了工作量。优选地,所述重训练采用反向传播算法。本公开实施例的另一方面,还提供了一种处理装置,图5为本公开实施例的处理装置的结构示意图,如图5所示,该处理装置包括:存储器51,用于存储操作指令;以及处理器52,用于执行存储器51中的操作指令,在执行该操作指令时依照前述的处理方法进行操作。其中,操作指令可以为二进制数,包括操作码和地址码,操作码指示处理器即将进行的操作,地址码指示处理器到存储器中的地址中读取参与操作的数据。本公开的数据的处理装置,处理器52通过执行存储器51中的操作指令,依照前述数据的处理方法进行操作,能够对杂乱无章的权值和输入神经元进行量化,得到低比特化且规范化的中心权值和中心神经元,充分挖掘了权值之间和输入神经元之间的局部相似性,得到二者分布特性从而进行低比特量化,减小了表示每一个权值和输入神经元的比特数,从而降低了二者的存储开销和访存开销。本公开实施例的再一方面,还提供了一种运算装置,图6为本公开实施例的运算装置的结构示意图,如图6所示,该运算装置包括指令控制单元1和查找表单元2。指令控制单元1,用于对接收的指令进行译码,生成查找控制信息;查找表单元2,用于根据指令控制单元1生成的查找控制信息,以及接收的权值字典、神经元字典和运算密码本,根据权值、权值字典、神经元字典和输入神经元,从运算密码本中查找输出神经元。其中,所述权值字典包括权值位置权值在神经网络结构中的位置,在权值字典中为第p行第q列的位置,用p,q表示和权值索引;所述神经元字典包括输入神经元和神经元索引;所述运算密码本包括权值索引、神经元索引以及输入神经元和权值的运算结果。其中,该查找表单元的具体工作过程为:根据权值确定权值在权值字典中对应的权值位置以确定权值索引,以及根据输入神经元在神经元字典中对应的神经元范围以确定神经元索引,再依据权值索引和神经元索引作为运算密码本的列索引和行索引,从运算密码本中查找出该列和该行的数值运算结果,即为输出神经元。请再参照图2至图4,在进行查找时,假定某神经元的神经元索引为01,某权值的权值索引为10时,则将该神经元和权值进行运算时,查找乘法密码本中第2行第3列对应的数值0.046,即为输出神经元。类似地,加法和池化操作与乘法操作类似,此处不再赘述。可以理解的是,池化包括但不限于平均值池化,最大值池化和中值池化。更具体地,根据不同的运算操作,该查找表可以包括以下的至少一种:乘法查找表:用于输入权值索引in1和神经元索引in2,通过乘法查找表经过查表操作mult_lookup,完成权值索引对应的中心权值data1和神经元索引对应的中心神经元data2的乘法操作,即用查表操作out=mult_lookupin1,in2完成乘法功能out=data1*data2;和或加法查找表:用于根据输入索引in通过逐级加法查找表经过查表操作add_lookup完成索引对应的中心数据data的加法操作,其中,in和data是长度为N的向量,N是正整数,即用查表操作out=add_lookupin完成加法功能out=data[1]+data[2]+...+data[N],和或输入权值索引in1和神经元索引in2通过加法查找表经过查表操作完成权值索引对应的中心权值data1和神经元索引对应的中心神经元data2的加法操作,即用查表操作out=add_lookupin1,in2完成加法功能,out=data1+data2;和或池化查找表:用于输入索引对应的中心数据data的池化操作,即用查表out=pool_lookupin完成池化操作out=pooldata,池化操作包括平均值池化、最大值池化和中值池化。图7为本公开一具体实施例提供的运算装置的结构示意图,如图7所示,该具体实施例的运算装置相较于图6中的运算装置还包括:预处理单元4、存储单元3、缓存单元6和直接内存存取单元5,能够优化本公开的处理过程,使得数据的处理更有序。预处理单元4,用于对外部输入的输入信息进行预处理,得到所述权值、输入神经元、指令、权值字典、神经元字典和运算密码本,预处理包括但不限于切分、高斯滤波、二值化、正则化和或归一化。存储单元3,用于存储输入神经元、权值、权值字典、神经元字典、运算密码本和指令,以及接收输出神经元;缓存单元6,用于缓存所述指令、权值索引、神经元索引和输出神经元,可以包括:指令缓存61,用于缓存所述指令,并将缓存的指令输出至指令控制单元1;权值缓存62,用于缓存所述权值,并将缓存的权值输出至查找表单元;输入神经元缓存63,用于缓存所述输入神经元,并将缓存的输入神经元输出至查找表单元;输出神经元缓存64,用于缓存查找表单元输出的输出神经元,并将缓存的输出神经元输出至查找表单元;神经元索引缓存65,用于根据输入神经元确定对应的神经元索引,缓存该神经元索引,并将缓存的神经元索引输出至查找表单元;以及权值索引缓存66,用于根据权值确定对应的权值索引,缓存该权值索引,并将缓存的权值索引输出至查找表单元。直接内存存取单元5,用于在所述存储单元3和缓存单元6之间进行数据或者指令读写,加速了数据和指令的读取过程。关于指令部分,该指令可以为神经网络专用指令,包括所有专用于完成人工神经网络运算的指令。神经网络专用指令包括但不仅限于控制指令,数据传输指令,运算指令和逻辑指令。其中,控制指令控制神经网络执行过程。数据传输指令完成不同存储介质之间的数据传输,数据格式包括但不仅限于矩阵,向量和标量。运算指令完成神经网络的算术运算,包括但不仅限于矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令和MAXOUT神经网络运算指令。逻辑指令完成神经网络的逻辑运算,包括但不仅限于向量逻辑运算指令和标量逻辑运算指令。其中,RBM神经网络运算指令用于实现RestrictedBoltzmannMachineRBM神经网络运算。LRN神经网络运算指令用于实现LocalResponseNormalizationLRN神经网络运算。LSTM神经网络运算指令用于实现LongShort-TermMemoryLSTM神经网络运算。RNN神经网络运算指令用于实现RecurrentNeuralNetworksRNN神经网络运算。RELU神经网络运算指令用于实现RectifiedlinearunitRELU神经网络运算。PRELU神经网络运算指令用于实现ParametricRectifiedLinearUnitPRELU神经网络运算。SIGMOID神经网络运算指令用于实现S型生长曲线SIGMOID神经网络运算TANH神经网络运算指令用于实现双曲正切函数TANH神经网络运算。MAXOUT神经网络运算指令用于实现MAXOUT神经网络运算。更进一步地,该神经网络专用指令包括Cambricon指令集。所述Cambricon指令集包括至少一种Cambricon指令,且Cambricon指令的长度为64bit,该Cambricon指令包括操作码和操作数。Cambricon指令包含四种类型的指令,分别是Cambricon控制指令controlinstructions、Cambricon数据传输指令datatransferinstructions、Cambricon运算指令computationalinstructions和Cambricon逻辑指令logicalinstructions。其中,Cambricon控制指令用于控制执行过程。Cambricon控制指令包括跳转jump指令和条件分支conditionalbranch指令。Cambricon数据传输指令用于完成不同存储介质之间的数据传输。Cambricon数据传输指令包括加载load指令、存储store指令和搬运move指令。load指令用于将数据从主存加载到缓存,store指令用于将数据从缓存存储到主存,move指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据。数据传输指令支持三种不同的数据组织方式,包括矩阵,向量和标量。Cambricon运算指令用于完成神经网络算术运算。Cambricon运算指令包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令。Cambricon矩阵运算指令完成神经网络中的矩阵运算,包括矩阵乘向量matrixmultiplyvector、向量乘矩阵vectormultiplymatrix、矩阵乘标量matrixmultiplyscalar、外积outerproduct、矩阵加矩阵matrixaddmatrix和矩阵减矩阵matrixsubtractmatrix。Cambricon向量运算指令完成神经网络中的向量运算,包括向量基本运算vectorelementaryarithmetics、向量超越函数运算vectortranscendentalfunctions、内积dotproduct、向量随机生成randomvectorgenerator和向量中最大最小值maximumminimumofavector。其中,向量基本运算包括向量加、减、乘、除add、subtract、multiply、divide,向量超越函数是指那些不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数、对数函数、三角函数和反三角函数。Cambricon标量运算指令完成神经网络中的标量运算,包括标量基本运算scalarelementaryarithmetics和标量超越函数运算scalartranscendentalfunctions。其中,标量基本运算包括标量、减、乘、除add、subtract、multiply、divide,标量超越函数是指那些不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数,对数函数,三角函数,反三角函数。Cambricon逻辑指令用于神经网络的逻辑运算。Cambricon逻辑运算包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令。Cambricon向量逻辑运算指令包括向量比较vectorcompare、向量逻辑运算vectorlogicaloperations和向量大于合并vectorgreaterthanmerge。其中,向量比较包括但不小于大于、小于,等于、大于等于、小于等于、不等于。向量逻辑运算包括与、或、非。Cambricon标量逻辑运算包括标量比较scalarcompare,标量逻辑运算scalarlogicaloperations。其中,标量比较包括但不限于大于、小于、等于、大于等于,小于等于和不等于。标量逻辑运算包括与、或、非。本公开实施例的又一方面,还提供了一种运算方法,图8为本公开实施例的运算方法的步骤示意图,如图8所示,该运算方法包括以下步骤:S81、接收权值、输入神经元、指令、权值字典、神经元字典和运算密码本;其中,所述权值字典包括权值位置和权值索引;所述神经元字典包括输入神经元和神经元索引;所述运算密码本包括权值索引、神经元索引以及输入神经元和权值的运算结果。S82、对所述指令进行译码,确定查找控制信息;S83、根据所述查找控制信息、权值、权值字典、神经元字典和输入神经元,在运算密码本中查找输出神经元。步骤S83与查找表单元的具体工作过程类似,具体包括以下子步骤:S831、根据所述权值、输入神经元、权值字典和神经元字典,在神经元字典中通过确定神经元范围以确定神经元索引、以及在权值字典中通过确定权值位置以确定权值索引;以及S382、根据所述权值索引和神经元索引,在运算密码本中查找该运算结果,以确定输出神经元。为了优化本公开的运算方法,使得处理更方便、有序,在本公开的一些实施例中还可以增加一些步骤,图9为本公开实施例的具体实施例的运算方法的步骤示意图,如图9所示,该具体实施例的运算方法中:在接收权值、输入神经元、指令、权值字典、神经元字典和运算密码本之前,还包括步骤S80、对外部输入的输入信息进行预处理,得到所述权值、输入神经元、指令、权值字典、神经元字典和运算密码本;所述预处理包括切分、高斯滤波、二值化、正则化和或归一化。在接收权值、输入神经元、指令、权值字典、神经元字典和运算密码本之后,还包括步骤S811、存储权值、输入神经元、指令、权值字典、神经元字典、运算密码本、以及接收输出神经元;以及步骤S812、缓存所述指令、输入神经元、权值、输出神经元、权值索引和神经元索引。在一个实施例里,本公开还提供了一种芯片,其包括了前述运算装置,该芯片能够同时对权值和输入神经元进行多种运算,实现了运算的多元化。另外,通过采用针对多层人工神经网络运算算法的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络运算及其训练算法性能瓶颈的问题。在一个实施例里,本公开提供了一个芯片封装结构,其包括了上述芯片。在一个实施例里,本公开提供了一个板卡,其包括了上述芯片封装结构。在一个实施例里,本公开提供了一个电子装置,其包括了上述板卡。上述电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和或医疗设备。所述交通工具包括飞机、轮船和或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和或心电图仪。各功能单元模块都可以是硬件,比如该硬件可以是电路,包括数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。所述计算装置中的计算模块可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如RRAM,DRAM,SRAM,EDRAM,HBM,HMC等等。以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

权利要求:1.一种运算装置,包括:指令控制单元,用于对接收的指令进行译码,生成查找控制信息;以及查找表单元,用于根据所述查找控制信息,以及接收的权值字典、神经元字典、运算密码本、权值和输入神经元,从运算密码本中查找输出神经元。2.根据权利要求1所述的运算装置,其中,所述权值字典包括权值位置和权值索引;所述神经元字典包括输入神经元和神经元索引;所述运算密码本包括权值索引、神经元索引以及输入神经元和权值的运算结果。3.根据权利要求2所述的运算装置,还包括:预处理单元,用于对外部输入的输入信息进行预处理,得到所述权值、输入神经元、指令、权值字典、神经元字典、运算密码本;存储单元,用于存储输入神经元、权值、权值字典、神经元字典、运算密码本和指令,以及接收输出神经元;缓存单元,用于缓存所述指令、输入神经元、权值、权值索引、神经元索引和输出神经元;以及直接内存存取单元,用于在所述存储单元和缓存单元之间进行数据或者指令读写。4.根据权利要求2或3所述的运算装置,其中,所述缓存单元包括:指令缓存,用于缓存所述指令,并将缓存的指令输出至指令控制单元;权值缓存,用于缓存所述权值;输入神经元缓存,用于缓存所述输入神经元;以及输出神经元缓存,用于缓存查找表单元输出的输出神经元。5.根据权利要求4所述的运算装置,其中,所述缓存单元还包括:权值索引缓存,用于缓存权值索引;以及神经元索引缓存,用于缓存神经元索引。6.根据权利要求3至5任一所述的运算装置,其中,所述预处理单元中,对外部输入的输入信息进行的预处理包括:切分、高斯滤波、二值化、正则化和或归一化。7.根据权利要求2至6任一所述的运算装置,其中,查找表单元包括:乘法查找表:用于输入权值索引in1和神经元索引in2,通过乘法查找表经过查表操作mult_lookup,完成权值索引对应的中心权值data1和神经元索引对应的中心神经元data2的乘法操作,即用查表操作out=mult_lookupin1,in2完成乘法功能out=data1*data2;和或加法查找表:用于根据输入索引in通过逐级加法查找表经过查表操作add_lookup完成索引对应的中心数据data的加法操作,其中,in和data是长度为N的向量,N是正整数,即用查表操作out=add_lookupin完成加法功能out=data[1]+data[2]+...+data[N],和或输入权值索引in1和神经元索引in2通过加法查找表经过查表操作完成权值索引对应的中心权值data1和神经元索引对应的中心神经元data2的加法操作,即用查表操作out=add_lookupin1,in2完成加法功能,out=data1+data2;和或池化查找表:用于输入索引对应的中心数据data的池化操作,即用查表out=poo1_lookupin完成池化操作out=poo1data,池化操作包括平均值池化、最大值池化和中值池化。8.根据权利要求1至7任一所述运算装置,其中,所述指令为神经网络专用指令,所述神经网络专用指令包括:控制指令,用于控制神经网络执行过程;数据传输指令,用于完成不同存储介质之间的数据传输,数据格式包括矩阵、向量和标量;运算指令,用于完成神经网络的算术运算,包括矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令、MAXOUT神经网络运算指令;以及逻辑指令,用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。9.根据权利要求8所述的运算装置,其中,所述神经网络专用指令包括至少一种Cambricon指令,该Cambricon指令包括操作码和操作数,所述Cambricon指令包括:Cambricon控制指令用于控制执行过程,且该Cambricon控制指令包括跳转指令和条件分支指令;Cambricon数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令、存储指令、搬运指令;其中,所述加载指令用于将数据从主存加载到缓存;存储指令用于将数据从缓存存储到主存;搬运指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据;Cambricon运算指令用于完成神经网络算术运算,包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令;其中,所述Cambricon矩阵运算指令用于完成神经网络中的矩阵运算,包括矩阵乘向量、向量乘矩阵、矩阵乘标量、外积、矩阵加矩阵和矩阵减矩阵;所述Cambricon向量运算指令用于完成神经网络中的向量运算,包括向量基本运算、向量超越函数运算、内积、向量随机生成和向量中最大最小值;Cambricon标量运算指令用于完成神经网络中的标量运算,包括标量基本运算和标量超越函数运算;以及Cambricon逻辑指令用于神经网络的逻辑运算,逻辑运算包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令;其中,所述Cambricon向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并;向量逻辑运算包括与、或、非;所述Cambricon标量逻辑运算包括标量比较和标量逻辑运算。10.根据权利要求9所述的运算装置,其中,所述Cambricon数据传输指令支持以下的一种或者多种数据组织方式:矩阵、向量和标量;所述向量基本运算包括向量加、减、乘、除;向量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述标量基本运算包括标量加、减、乘、除;标量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述向量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述向量逻辑运算包括与、或、非;所述标量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述标量逻辑运算包括与、或、非。11.一种运算方法,包括:接收权值、输入神经元、指令、权值字典、神经元字典和运算密码本;对所述指令进行译码,确定查找控制信息;以及根据所述查找控制信息、权值、权值字典、神经元字典和输入神经元,在运算密码本中查找输出神经元。12.根据权利要求11所述的运算方法,其中,所述权值字典包括权值位置和权值索引;所述神经元字典包括输入神经元和神经元索引;所述运算密码本包括权值索引,神经元索引以及权值和输入神经元的运算结果。13.根据权利要求12所述的运算方法,其中,根据所述查找控制信息、权值和输入神经元,在运算密码本中查找输出神经元,包括步骤:根据所述权值、输入神经元、权值字典和神经元字典,在神经元字典中通过确定神经元范围以确定神经元索引、以及在权值字典中通过确定权值位置以确定权值索引;根据所述权值索引和神经元索引,在运算密码本中查找该运算结果,以确定输出神经元。14.根据权利要求12或13所述的运算方法,其中,所述运算结果包括以下的至少一种运算操作的结果:加法、乘法和池化,其中,池化包括:平均值池化,最大值池化和中值池化。15.根据权利要求12至14任一所述的运算方法,其中,在接收权值、输入神经元、指令、权值字典、神经元字典、运算密码本之前,还包括步骤:对外部输入的输入信息进行预处理,得到所述权值、输入神经元、指令、权值字典、神经元字典、运算密码本;以及在接收权值、输入神经元、指令、权值字典、神经元字典、运算密码本之后,还包括步骤:存储权值、输入神经元、指令、权值字典、神经元字典、运算密码本、以及接收输出神经元;以及缓存所述指令、输入神经元、权值和输出神经元。16.根据权利要求15所述的运算方法,其中,在接收权值、输入神经元、指令、权值字典、神经元字典、运算密码本之后,还包括步骤:缓存所述权值索引和神经元索引。17.根据权利要求15或16所述的运算方法,其中,所述预处理包括切分、高斯滤波、二值化、正则化和或归一化。18.根据权利要求11至17任一所述的运算方法,其中,所述指令为神经网络专用指令,所述神经网络专用指令包括:控制指令,用于控制神经网络执行过程;数据传输指令,用于完成不同存储介质之间的数据传输,数据格式包括矩阵、向量和标量;运算指令,用于完成神经网络的算术运算,包括矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令、MAXOUT神经网络运算指令;以及逻辑指令,用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。19.根据权利要求18所述的运算方法,其中,所述神经网络专用指令包括至少一种Cambricon指令,该Cambricon指令包括操作码和操作数,所述Cambricon指令包括:Cambricon控制指令用于控制执行过程,且该Cambricon控制指令包括跳转指令和条件分支指令;Cambricon数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令、存储指令、搬运指令;其中,所述加载指令用于将数据从主存加载到缓存;存储指令用于将数据从缓存存储到主存;搬运指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据;Cambricon运算指令用于完成神经网络算术运算,包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令;其中,所述Cambricon矩阵运算指令用于完成神经网络中的矩阵运算,包括矩阵乘向量、向量乘矩阵、矩阵乘标量、外积、矩阵加矩阵和矩阵减矩阵;所述Cambricon向量运算指令用于完成神经网络中的向量运算,包括向量基本运算、向量超越函数运算、内积、向量随机生成和向量中最大最小值;Cambricon标量运算指令用于完成神经网络中的标量运算,包括标量基本运算和标量超越函数运算;以及Cambricon逻辑指令用于神经网络的逻辑运算,逻辑运算包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令;其中,所述Cambricon向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并;向量逻辑运算包括与、或、非;所述Cambricon标量逻辑运算包括标量比较和标量逻辑运算。20.根据权利要求19所述的运算方法,其中,所述Cambricon数据传输指令支持以下的一种或者多种数据组织方式:矩阵、向量和标量;所述向量基本运算包括向量加、减、乘、除;向量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述标量基本运算包括标量加、减、乘、除;标量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述向量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述向量逻辑运算包括与、或、非;所述标量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述标量逻辑运算包括与、或、非。

百度查询: 上海寒武纪信息科技有限公司 处理方法及装置、运算方法及装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。

相关技术
相关技术
相关技术
相关技术