CN109977446B - 集成电路芯片装置及相关产品 - Google Patents
集成电路芯片装置及相关产品 Download PDFInfo
- Publication number
- CN109977446B CN109977446B CN201711468629.9A CN201711468629A CN109977446B CN 109977446 B CN109977446 B CN 109977446B CN 201711468629 A CN201711468629 A CN 201711468629A CN 109977446 B CN109977446 B CN 109977446B
- Authority
- CN
- China
- Prior art keywords
- data
- nth
- layer
- input data
- processing circuit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Geometry (AREA)
- Multi Processors (AREA)
- Complex Calculations (AREA)
Abstract
本披露提供一种集成电路芯片装置及相关产品,所述装置用于执行的神经网络的训练,该神经网络包含n层,所述n取值范围为大于等于2的整数,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;所述主处理电路包括:数据类型运算电路,所述数据类型运算电路,用于执行浮点类型数据以及定点类型数据之间的转换。本披露提供的技术方案具有计算量小,功耗低的优点。
Description
技术领域
本披露涉及神经网络领域,尤其涉及一种集成电路芯片装置及相关产品。
背景技术
人工神经网络(Artificial Neural Network,即ANN),是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。现有的神经网络的运算基于CPU(Central Processing Unit,中央处理器)或GPU(英文:Graphics Processing Unit,图形处理器)来实现神经网络的正向运算,此种正向运算的计算量大,功耗高。
发明内容
本披露实施例提供了一种集成电路芯片装置及相关产品,可提升计算装置的处理速度,提高效率。
第一方面,提供一种执行的神经网络的训练集成电路芯片装置,所述装置用于执行的神经网络的训练,该神经网络包含n层,所述n取值范围为大于等于2的整数,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;所述主处理电路包括:数据类型运算电路,所述数据类型运算电路,用于执行浮点类型数据以及定点类型数据之间的转换;
所述集成电路芯片装置,用于接收训练指令,依据该训练指令确定第一层输入数据和第一层权值组数据,对第一层输入数据和第一层权值组数据执行神经网络的n层正向运算得到正向运算的第n输出结果;
所述主处理电路,还用于依据所述第n输出结果得到第n输出结果梯度,依据所述训练指令获取第n层反向运算的第n反向运算,依据第n输出结果梯度、第n层输入数据、第n层权值组数据以及第n反向运算得到第n反向运算复杂度,依据所述第n反向运算复杂度确定第n输出结果梯度、第n层输入数据、第n层权值组数据对应的第n反向数据类型;
所述主处理电路,用于依据第n反向运算的类型将第n输出结果梯度、第n层输入数据、第n层权值组数据划分成广播数据块以及分发数据块,对第n反向数据类型的所述分发数据块进行拆分处理得到多个基本数据块,将所述多个基本数据块分发至多个基础处理电路中的至少一个基础处理电路,将第n反向数据类型的所述广播数据块广播至所述多个基础处理电路;
所述多个基础处理电路,用于将所述广播数据块以及接收到基本数据块以第n反向数据类型执行运算得到运算结果,并将运算结果传输给所述主处理电路;
所述主处理电路,用于对该运算结果进行处理得到第n层权值组梯度和第n层输入数据梯度,应用所述第n层权值组梯度对第n层权值组数据进行更新;所述第n反向数据类型包括:定点类型或浮点类型;
所述集成电路芯片装置,还用于将第n层输入数据梯度作为第n-1层的第n-1输出结果梯度执行n-1层方向运算得到n-1层权值组梯度,应用n-1层权值组梯度更新对应层的权值组数据,所述权值组数据包括;至少二个权值。
第二方面,提供一种神经网络运算装置,所述神经网络运算装置包括一个或多个第一方面提供的集成电路芯片装置。
第三方面,提供一种组合处理装置,所述组合处理装置包括:第二方面提供的神经网络运算装置、通用互联接口和通用处理装置;
所述神经网络运算装置通过所述通用互联接口与所述通用处理装置连接。
第四方面,提供一种芯片,所述芯片集成第一方面的装置、第二方面的装置或第三方面的装置。
第五方面,提供一种电子设备,所述电子设备包括第四方面的芯片。
可以看出,通过本披露实施例,提供数据转换运算电路将数据块的类型进行转换后运算,节省了传输资源以及计算资源,所以其具有功耗低,计算量小的优点。
附图说明
图1是一种神经网络的训练方法示意图。
图1a是一种神经网络的正向运算示意图。
图1b为一种定点数据类型的示意结构图。
图2a为卷积输入数据示意图。
图2b为卷积核示意图。
图2c为输入数据的一个三维数据块的运算窗口示意图。
图2d为输入数据的一个三维数据块的另一运算窗口示意图。
图2e为输入数据的一个三维数据块的又一运算窗口示意图.
图3是一种神经网络芯片的结构示意图。
图4a为矩阵乘以矩阵示意图。
图4b为矩阵乘以矩阵的方法流程图。
图4c为矩阵乘以向量示意图。
图4d为矩阵乘以向量的方法流程图。
图4e为一种神经网络训练示意图。
图4f为另一种神经网络训练示意图。
图4g为神经网络正向与反向运算示意图。
图4h为神经网络训练多层结构示意图。
图5a为本披露还揭露了一个组合处理装置结构示意图。
图5b为本披露还揭露了一个组合处理装置另一种结构示意图。
图5c为本披露实施例提供的一种神经网络处理器板卡的结构示意图;
图5d为本披露实施例流提供的一种神经网络芯片封装结构的结构示意图;
图5e为本披露实施例流提供的一种神经网络芯片的结构示意图;
图6为本披露实施例流提供的一种神经网络芯片封装结构的示意图;
图6a为本披露实施例流提供的另一种神经网络芯片封装结构的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本披露方案,下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
在第一方面提供的装置中,所述主处理单元,具体用于将第n反向运算复杂度与预设阈值比较,如所述第n反向运算复杂度高于所述预设阈值,确定所述第n反向数据类型为定点类型,如所述第n反向运算复杂度低于或等于所述预设阈值,计算装置确定所述第n反向数据类型为浮点类型。
在第一方面提供的装置中,所述主处理单元,具体用于确定所述第n输出结果梯度、第n层输入数据、第n层权值组数据属于的第n+1反向数据类型,如所述第n+1反向数据类型与所述第n反向数据类型不同,通过所述数据类型运算电路将属于第n+1反向数据类型的所述第n输出结果梯度、第n层输入数据、第n层权值组数据转换成属于第n反向数据类型的所述第n输出结果梯度、第n层输入数据、第n层权值组数据。
在第一方面提供的装置中,所述主处理单元,用于如所述n层反向运算为卷积运算,卷积输入数据为所述第n层输入数据,卷积核为所述第n输出结果梯度,
第n反向运算复杂度=α*C1*kW*kH*M*N*W*C2*H;
其中,α为卷积系数,取值范围为大于1;C1、kW、kH、M为卷积核四个维度的值,N、W、C2、H为卷积输入数据四个维度的值;
如所述复杂度大于设定阈值,确定该第n反向数据类型为浮点数据类型,确定该卷积输入数据以及卷积核是否为浮点数据,如该卷积输入数据以及卷积核不为浮点数据,将该卷积输入数据转换成浮点数据,将卷积核转换成浮点数据,然后将卷积输入数据、卷积核以浮点数据类型执行卷积运算。
在第一方面提供的装置中,所述主处理单元,还用于如所述第n反向运算为:矩阵乘矩阵运算,所述输入数据为第n层输入数据,所述权值为所述第n输出结果梯度;
复杂度=β*F*G*E*F;其中,β为矩阵系数,取值范围为大于等于1,F、G为第n层输入数据的行、列值,E、F为权值的行、列值;
如所述复杂度大于设定阈值,确定该第n反向数据类型为浮点数据类型,确定该第n层输入数据以及权值是否为浮点数据,如该第n层输入数据以及权值不为浮点数据,将该第n层输入数据转换成浮点数据,将权值转换成浮点数据,然后将第n层输入数据、权值以浮点数据类型执行矩阵乘矩阵运算。
在第一方面提供的装置中,集成电路芯片装置,还用于如所述第n反向运算为:矩阵乘向量运算,所述输入数据为第n层输入数据,所述权值为所述第n输出结果梯度;
复杂度=β*F*G*F1;其中,β为矩阵系数,取值范围为大于等于1,F、G为第n层输入数据的行、列值,F1为第n输出结果梯度的列值;
如所述复杂度大于设定阈值,确定该第n反向数据类型为浮点数据类型,确定该第n层输入数据以及权值是否为浮点数据,如该第n层输入数据以及权值不为浮点数据,将该第n层输入数据转换成浮点数据,将权值转换成浮点数据,然后将第n层输入数据、权值以浮点数据类型执行矩阵乘向量运算。
在第一方面提供的装置中,所述主处理电路,具体用于如所述第n反向运算的类型为乘法运算,确定所述第n层输入数据以及所述第n层权值组数据均为分发数据块,所述第n输出结果梯度为广播数据块;如第n反向运算的类型为卷积运算,确定所述第n层输入数据以及所述第n层权值组数据均为广播数据块,所述第n输出结果梯度为分发数据块。
在第一方面提供的装置中,所述n层反运算还包括:偏执运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合。
在第一方面提供的装置中,所述主处理电路包括:主寄存器或主片上缓存电路;
所述基础处理电路包括:基本寄存器或基本片上缓存电路。
在第一方面提供的装置中,所述主处理电路包括:向量运算器电路、算数逻辑单元电路、累加器电路、矩阵转置电路、直接内存存取电路或数据重排电路中的一种或任意组合。
在第一方面提供的装置中,所述第n输出结果梯度为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合;
所述第n层输入数据为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合;
所述n层权值组数据为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合。
如图1所示,神经网络训练的步骤包括:
一个(多层)神经网络中的各层依次执行正向运算;
按照相反的层的顺序依次执行反向运算得到权值梯度;
用计算得到的权值的梯度去更新正向运算的权值;
这就是神经网络的训练的依次迭代,整个训练过程需要重复执行(即多次迭代计算)这个过程多次。
参阅图3,图3为一种集成电路芯片装置,所述装置用于执行的神经网络的训练,该神经网络包含n层,所述n取值范围为大于等于2的整数,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;所述主处理电路包括:数据类型运算电路,所述数据类型运算电路,用于执行浮点类型数据以及定点类型数据之间的转换;
所述集成电路芯片装置,用于接收训练指令,依据该训练指令确定第一层输入数据和第一层权值组数据,对第一层输入数据和第一层权值组数据执行神经网络的n层正向运算得到正向运算的第n输出结果;
所述主处理电路,还用于依据所述第n输出结果得到第n输出结果梯度,依据所述训练指令获取第n层反向运算的第n反向运算,依据第n输出结果梯度、第n层输入数据、第n层权值组数据以及第n反向运算得到第n反向运算复杂度,依据所述第n反向运算复杂度确定第n输出结果梯度、第n层输入数据、第n层权值组数据对应的第n反向数据类型;
所述主处理电路,用于依据第n反向运算的类型将第n输出结果梯度、第n层输入数据、第n层权值组数据划分成广播数据块以及分发数据块,对第n反向数据类型的所述分发数据块进行拆分处理得到多个基本数据块,将所述多个基本数据块分发至多个基础处理电路中的至少一个基础处理电路,将第n反向数据类型的所述广播数据块广播至所述多个基础处理电路;
所述多个基础处理电路,用于将所述广播数据块以及接收到基本数据块以第n反向数据类型执行运算得到运算结果,并将运算结果传输给所述主处理电路;
所述主处理电路,用于对该运算结果进行处理得到第n层权值组梯度和第n层输入数据梯度,应用所述第n层权值组梯度对第n层权值组数据进行更新;所述第n反向数据类型包括:定点类型或浮点类型;
所述集成电路芯片装置,还用于将第n层输入数据梯度作为第n-1层的第n-1输出结果梯度执行n-1层方向运算得到n-1层权值组梯度,应用n-1层权值组梯度更新对应层的权值组数据,所述权值组数据包括;至少二个权值。
如图1a所示,为本披露实施例提供的一种神经网络的正向运算,每一层使用自己的输入数据和权值按照层的类型所指定的运算规则计算得到相应的输出数据;
神经网络的正向运算过程(也叫推理,inference)是逐层处理各层的输入数据,经过一定的计算,得到输出数据的过程,具有如下特征:
某一层的输入:
某一层的输入可以是神经网络的输入数据;
某一层的输入可以是其他层的输出;
某一层的输入可以是本层上一时刻的输出(对应于循环神经网络的情况);
某一层可以同时从多个上述输入源获取输入;
某一层的输出:
某一层的输出可以作为神经网络的输出结果;
某一层的输出可以是其它层的输入;
某一层的输出可以是下一时刻本层的输入(循环神经网络的情况);
某一层的输出可以向上述多个输出方向输出结果;
具体地,所述神经网络中的层的运算的类型包括但不限于以下几种:
卷积层(即执行卷积运算);
全连接层(即执行全连接运算);
归一化(规则化)层:包括LRN(Local Response Normalization)层,BN(BatchNormalization)层等类型;
池化层;
激活层:包括但不限于以下类型Sigmoid层,ReLU层,PReLu层,LeakyReLu层,Tanh层;
层的反向运算,每一层的反向运算需要执行两部分运算:一部分是使用可能是稀疏表示的输出数据梯度和可能是稀疏表示的输入数据计算出权值的梯度(用于在“权值更新”步骤更新本层的权值),另一部分是使用可能是稀疏表示的输出数据梯度和可能是稀疏表示的权值,计算出输入数据梯度(用于作为反向运算中下一层的输出数据梯度以供其进行反向运算);
反向运算按照与正向运算相反的顺序,从最后一层开始反向传递梯度。
在一种可选方案中,某一层反向计算得到的输出数据梯度可以来自:
神经网络最后的损失函数(lost function或者cost function)回传的梯度;
其它层的输入数据梯度;
本层上一时刻的输入数据梯度(对应于循环神经网络的情况);
某一层可以同时从多个上述源获取输出数据梯度;
在执行完神经网络的反向运算之后,就计算出了各层的权值的梯度,在这个步骤中,所述装置的第一输入缓存和第二输入缓存分别用于存储本层的权值和权值的梯度,然后在运算单元中使用权值梯度对权值进行更新;
上文中提到的运算都是神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单元中计算出的输出数据作为下一层的输入数据进行运算(或者是对该输出数据进行某些操作再作为下一层的输入数据),同时,将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入数据梯度作为下一层的输出数据梯度进行运算(或者是对该输入数据梯度进行某些操作再作为下一层的输出数据梯度),同时将权值替换为下一层的权值;(用以下的图表示,以下图中虚线的箭头表示反向运算,实线的箭头表示正向运算,各图下面的标注表示图的含义)
定点化数据的表示方法
定点化的方法是指将网络中的某个数据块的数据表示转换成特定的某种固定小数点位置的数据表示方式(映射到电路装置上数据的0/1比特位摆放方式);
在一种可选方案中,将多个数据组成个数据块作为一个整体使用同样的定点表示方法进行定点化表示;
图1b示出了根据本发明实施例的用于存储数据的短位数定点数据结构的具体表示方法。其中,1Bit位用于表示符号,M位用于表示整数部分,N位用于表示小数部分;相比于32位浮点数据表示形式,本发明采用的短位定点数据表示形式除了占用比特位数更少外,对于神经网络中同一层、同一类型的数据,如第一个卷积层的所有权值数据,还另外设置了一个标志位Point location记录小数点的位置,这样可以根据实际数据的分布调整数据表示的精度与可表示数据范围。
对于浮点数的表示即32bit来表示,但是对于此技术方案,其采用定点数可以减少一个数值的比特位的位数,从而降低传输的数据量以及运算的数据量。
输入数据用图2a表示(N个样本,每个样本有C个通道,每个通道的特征图的高为H,宽为W),权值也即卷积核用图2b表示(有M个卷积核,每个卷积核有C个通道,高和宽分别为KH和KW)。对于输入数据的N个样本,卷积运算的规则都是一样的,下面解释在一个样本上进行卷积运算的过程,在一个样本上,M个卷积核中的每一个都要进行同样的运算,每个卷积核运算得到一张平面特征图,M个卷积核最终计算得到M个平面特征图,(对一个样本,卷积的输出是M个特征图),对于一个卷积核,要在一个样本的每一个平面位置进行内积运算,然后沿着H和W方向进行滑动,例如,图2c表示一个卷积核在输入数据的一个样本中右下角的位置进行内积运算的对应图;图2d表示卷积的位置向左滑动一格和图2e表示卷积的位置向上滑动一格。
当第一运算为卷积运算,所述输入数据为卷积输入数据,所述权值数据为卷积核,
第一复杂度=α*C1*kW*kH*M*N*W*C2*H;
其中,α为卷积系数,取值范围为大于1;C1、kW、kH、M为卷积核四个维度的值,N、W、C2、H为卷积输入数据四个维度的值;
如所述第一复杂度大于设定阈值,确定该卷积输入数据以及卷积核是否为浮点数据,如该卷积输入数据以及卷积核不为浮点数据,将该卷积输入数据转换成浮点数据,将卷积核转换成浮点数据,然后将卷积输入数据、卷积核以浮点数据类型执行卷积运算。
具体的,该卷积处理的方式可以采用如图3所示的芯片结构处理,主处理电路(也可以称为主单元)的数据转换运算电路可以在第一复杂度大于设定阈值时,将权值的部分或全部卷积核中的数据转换成定点类型的数据,主处理电路的控制电路将权值的部分或全部卷积核中的数据发送到通过横向数据输入接口直接与主处理电路相连的那些基础处理电路(也可以称为基础单元);
在一种可选方案中,主处理电路的控制电路将权值中某个卷积核的数据每次发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3行第1个数,第2次发送第3行数据中的第2个数,第3次发送第3行的第3个数……,或者第1次发送第3行前两个数,第二次发送第3行第3和第4个数,第三次发送第3行第5和第6个数……;)
在一种可选方案中另一种情况是,主处理电路的控制电路将权值中某几个卷积核的数据每次各发送一个数者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3,4,5行每行的第1个数,第2次发送第3,4,5行每行的第2个数,第3次发送第3,4,5行每行的第3个数……,或者第1次发送第3,4,5行每行前两个数,第二次发送第3,4,5行每行第3和第4个数,第三次发送第3,4,5行每行第5和第6个数……;)
主处理电路的控制电路把输入数据按照卷积的位置进行划分,主处理电路的控制电路将输入数据中的部分或全部卷积位置中的数据发送到通过竖向数据输入接口直接与主处理电路相连的那些基础处理电路;
在一种可选方案中,主处理电路的控制电路将输入数据中某个卷积位置的数据每次发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3列第1个数,第2次发送第3列数据中的第2个数,第3次发送第3列的第3个数……,或者第1次发送第3列前两个数,第二次发送第3列第3和第4个数,第三次发送第3列第5和第6个数……;)
在一种可选方案中另一种情况是,主处理电路的控制电路将输入数据中某几个卷积位置的数据每次各发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3,4,5列每列的第1个数,第2次发送第3,4,5列每列的第2个数,第3次发送第3,4,5列每列的第3个数……,或者第1次发送第3,4,5列每列前两个数,第二次发送第3,4,5列每列第3和第4个数,第三次发送第3,4,5列每列第5和第6个数……;)
基础处理电路接收到权值的数据之后,将该数据通过其横向的数据输出接口传输给其相连接下一个基础处理电路;基础处理电路接收到输入数据的数据后,将该数据通过其竖向的数据输出接口传输给与其相连接的下一个基础处理电路;
每一个基础处理电路对接收到的数据进行运算;
在一种可选方案中,基础处理电路每次计算一组或多组两个数据的乘法,然后将结果累加到寄存器和/或片上缓存上;
在一种可选方案中,基础处理电路每次计算一组或多组两个向量的内积,然后将结果累加到寄存器和/或片上缓存上;
基础处理电路计算出结果后,可以将结果从数据输出接口传输出去;
在一种可选方案中,该计算结果可以是内积运算的最终结果或中间结果;
具体地,如果该基础处理电路有直接与主处理电路相连接的输出接口则从该接口传输结果,如果没有,则向着能够直接向主处理电路输出的基础处理电路的方向输出结果。
基础处理电路接收到来自其他基础处理电路的计算结果之后,将该数据传输给与其相连接的其他基础处理电路或者主处理电路;
向着能够直接向主处理电路输出的方向输出结果(例如,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果);
主处理电路接收到各个基础处理电路内积运算的结果,即可得到输出结果。
参阅图4a,图4a为一种矩阵乘以矩阵的运算,如所述第一运算为:矩阵乘矩阵运算,所述输入数据为所述矩阵乘矩阵运算的第一矩阵,所述权值为所述矩阵乘矩阵运算的第二矩阵;
第一复杂度=β*F*G*E*F1;其中,β为矩阵系数,取值范围为大于等于1,F、G为第一矩阵的行、列值,E、F1为第二矩阵的行、列值;
如所述第一复杂度大于设定阈值,确定该第一矩阵以及第二矩阵是否为浮点数据,如该第一矩阵以及第二矩阵不为浮点数据,将该第一矩阵转换成浮点数据,将第二矩阵转换成浮点数据,然后将第一矩阵、第二矩阵以浮点数据类型执行矩阵乘矩阵运算。
参阅图4b,使用如图3所示的装置完成矩阵乘矩阵的运算;
下面描述计算尺寸是M行L列的矩阵S和尺寸是L行N列的矩阵P的乘法的运算,(矩阵S中的每一行与矩阵P的每一列长度相同,如图2d所示)所述神经网络计算装置拥有K个基础处理电路:
步骤S401b、主处理电路在如第一复杂度大于设定阈值时,将矩阵S和矩阵P转换成定点类型数据,主处理电路的控制电路将矩阵S中的每一行数据分发到K个基础处理电路中的某一个上,基础处理电路将接收到的数据保存在片上缓存和/或寄存器中;具体的,可以发送至K个基础处理电路中与主处理电路连接的基础处理电路。
在一种可选方案中,如果S的行数M<=K则,主处理电路的控制电路给M个基础处理电路分别分发S矩阵的一行;
在一种可选方案中,如果S的行数M>K,主处理电路的控制电路给每个基础处理电路分别分发S矩阵中一行或多行的数据。
S中有Mi行分发到第i个基础处理电路,这Mi行的集合称为Ai,如图2e表示第i个基础处理电路上将要执行的计算。
在一种可选方案中,在每个基础处理电路中,例如第i个基础处理电路中:
接收的由主处理电路分发的矩阵Ai,将矩阵Ai保存在第i个基础处理电路寄存器和/或片上缓存中;优点是减少了之后的数据传输量,提高了计算效率,降低了功耗。
步骤S402b、主处理电路的控制电路将矩阵P中各部分以广播的方式传输给各个基础处理电路;
在一种可选方案中,可以将矩阵P中各部分只广播一次到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对这一次得到的矩阵P的数据进行充分地复用,完成对应与矩阵Ai中每一行的内积运算;本实施例中的复用具体可以为基础处理电路在计算中重复使用,例如矩阵P的数据的复用,可以是对矩阵P的数据在多次使用。
在一种可选方案中,主处理电路的控制电路可以将矩阵P中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的矩阵P的数据不进行复用,分次完成对应于矩阵Ai中的每一行的内积运算;
在一种可选方案中,主处理电路的控制电路可以将矩阵P中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的矩阵P的数据进行部分复用,完成对应于矩阵Ai中的每一行的内积运算;
在一种可选方案中,每个基础处理电路,例如第i个基础处理电路,计算矩阵Ai的数据和矩阵P的数据的内积;
步骤S403b、每个基础处理电路的累加器电路将内积运算的结果进行累加并传输回主处理电路。
在一种可选方案中,基础处理电路可以将每次执行内积运算得到的部分和传输回主处理电路进行累加;
在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和保存在基础处理电路的寄存器和/或片上缓存中,累加结束之后传输回主处理电路;
在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和在部分情况下保存在基础处理电路的寄存器和/或片上缓存中进行累加,部分情况下传输到主处理电路进行累加,累加结束之后传输回主处理电路。
参阅图4c,为一种矩阵乘以向量的运算示意图。如所述第一运算为:矩阵乘向量运算,所述输入数据为所述矩阵乘向量运算的第一矩阵,所述权值为所述矩阵乘向量运算的向量;
第一复杂度=β*F*G*F1;其中,β为矩阵系数,取值范围为大于等于1,F、G为第一矩阵的行、列值,F1为向量的列值;
如所述第一复杂度大于设定阈值,确定该第一矩阵以及向量是否为浮点数据,如该第一矩阵以及向量不为浮点数据,将该第一矩阵转换成浮点数据,将向量转换成浮点数据,然后将第一矩阵、向量以浮点数据类型执行矩阵乘向量运算。
参阅图4d,图4d提供了了一种矩阵乘向量的实现方法,具体可以包括:
步骤S401、主处理电路的数据转换运算电路将矩阵S中的每一行数据转换成定点类型的数据,主处理电路的控制电路分发到K个基础处理电路中的某一个上,基础处理电路将接收到的分发数据保存在基础处理电路的片上缓存和/或寄存器中;
在一种可选方案中,如果矩阵S的行数M<=K则,主处理电路的控制电路给K个基础处理电路分别分发S矩阵的一行;
在一种可选方案中,如果矩阵S的行数M>K,则主处理电路的控制电路给每个基础处理电路分别分发S矩阵中一行或多行的数据。
分发到第i个基础处理电路的S中的行的集合为Ai,共有Mi个行,如图2c表示第i个基础处理电路上将要执行的计算。
在一种可选方案中,在每个基础处理电路中,例如第i个基础处理电路中,可以将接收到的分发数据例如矩阵Ai保存在第i个基础处理电路的寄存器和/或片上缓存中;优点是减少了之后的分发数据的数据传输量,提高了计算效率,降低了功耗。
步骤S402、主处理电路的数据类型运算电路将向量P转换成定点类型的数据,主处理电路的控制电路将定点类型的向量P中各部分以广播的方式传输给K个基础处理电路;
在一种可选方案中,主处理电路的控制电路可以将向量P中各部分只广播一次到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对这一次得到的向量P的数据进行充分地复用,完成对应与矩阵Ai中每一行的内积运算。优点是,减少从主处理电路到基础处理电路的向量P的重复传输的数据传输量,提高执行效率,降低传输功耗。
在一种可选方案中,主处理电路的控制电路可以将向量P中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的向量P的数据不进行复用,分次完成对应于矩阵Ai中的每一行的内积运算;优点是,减少基础处理电路内部的单次传输的向量P的数据传输量,并可以降低基础处理电路缓存和/或寄存器的容量,提高执行效率,降低传输功耗,降低成本。
在一种可选方案中,主处理电路的控制电路可以将向量P中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的向量P的数据进行部分复用,完成对应于矩阵Ai中的每一行的内积运算;优点是,减少从主处理电路到基础处理电路的数据传输量,也减少基础处理电路内部的数据传输量,提高执行效率,降低传输功耗。
步骤S403、K个基础处理电路的内积运算器电路计算矩阵S和向量P的数据的内积,例如第i个基础处理电路,计算矩阵Ai的数据和向量P的数据的内积;
步骤S404、K个基础处理电路的累加器电路将内积运算的结果进行累加得到累加结果,将累加结果以定点类型形式传输回主处理电路。
在一种可选方案中,可以将每次基础处理电路执行内积运算得到的部分和(部分和即累加结果的一部分,例如累加结果为:F1*G1+F2*G2+F3*G3+F4*G4+F5*G5,那么部分和可以为:F1*G1+F2*G2+F3*G3的值)传输回主处理电路进行累加;优点是,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。
在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和保存在基础处理电路的寄存器和/或片上缓存中,累加结束之后传输回主处理电路;优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗。
在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和在部分情况下保存在基础处理电路的寄存器和/或片上缓存中进行累加,部分情况下传输到主处理电路进行累加,累加结束之后传输回主处理电路;优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。
神经网络训练方法
在神经网络训练过程中所涉及到所有的数据可以采用不同的数据表示方法;
具体地,所述数据表示方法包括但不限于以下情况:
不同位宽的浮点数;
不同位宽的定点数,不同定点位置的定点数;
训练过程的不同时刻(具体来说就是不同的迭代次数或者初始化的时刻)、训练过程中的不同阶段(即正向或者反向运算)、不同的层、同一层中的不同数据块(即多个输入数据块,输出数据块),或者同一个数据块中划分的不同部分的子数据块,都可以:
可以分别使用定点或者浮点;
对于定点:
使用不同的定点位宽;
使用不同定点偏移值(也即定点位置);
下面以一个实际的例子来说明神经网络训练的具体实现方法,如图1a所示为单层运算的神经网络训练的具体的计算示意图,如图1a所示,输入数据与权值或参数执行本层运算,本申请实施例提供的技术方案依据输入数据、权值以及本层的正向运算量确定是否将该输入数据和权值的类型进行转换,具体的方式可以为:如该输入数据以及权值存储所占用的寄存器或存储器空间大于设定阈值且本层的正向运算量大于设定运算量,确定该输入数据和权值数据为浮点数据时,将该输入数据和权值数据转换成定点数据。如该输入数据以及权值存储所占用的寄存器或存储器空间小于设定阈值,如该输入数据和权值数据为定点数据,将输入数据和权值数据转换成浮点数据后,执行本层运算。
对于上述数据类型转换的原理本申请详细说明一下,如图1b所示,为一种定点类型数据的表达方法,对于计算***,1个浮点数据的存储位数为32bit,而对于定点数据,尤其是采用如图1b所示的浮点类型的数据进行数据的表示,其1个定点数据的存储位数可以做到16Bit以下,所以对于此转换来说,可以极大的减少计算器之间的传输开销,另外,对于计算器来说,较少比特位的数据存储的空间也较小,即存储开销会较小,计算量也会减少,即计算开销会减少,所以能够减少计算开销以及存储的开销,但是对于数据类型的转换也是需要有部分的开销的,下面简称转换开销,对于计算量大,数据存储量大的数据,转换开销相对于后续的计算开销、存储开销以及传输开销来说几乎可以忽略不计,所以对于计算量大,数据存储量大的数据,本申请采用了将数据类型转换成定点类型的数据的技术方案,反之,对于计算量小,数据存储量小的数据,此时由于本身计算开销、存储开销以及传输开销就比较小,此时如果使用定点数据,由于定点数据的精度会略低于浮点数据,在计算量较小的前提下,需要保证计算的精度,所以这里将定点类型的数据转换成浮点数据,即通过增加较小的开销来提高计算的精度的目的。
下面以一个实际的例子来说明,如图4e所示,本层运算方式为矩阵乘法,输入数据以及权值均为矩阵,为了方便说明这里的输入数据以矩阵I为例,权值以矩阵W为例,如图4e所示,输出数据=矩阵I*矩阵W;这里如果矩阵I以及矩阵W的列数量以及行数量之和较大,即可以认为上述矩阵I以及矩阵W在存储器和/或寄存器所占空间较大以及计算量也较大,这样如果矩阵I以及矩阵W为浮点数据,则将矩阵I以及矩阵W转换成定点数据,然后在执行矩阵乘法的运算。
例如,矩阵I为1000*1000的矩阵,矩阵W也为1000*1000的矩阵,那么对于列数量以及行数量之和为2000,其数量很大,对应的计算量就更大,矩阵乘以矩阵的内积运算的乘法运算即109次,对于此技术方案,由于矩阵I以及矩阵W的数量很大,不可能一次将所有的数据全部传输,这样同一数据可能会多次传输,假设为定点数据传输,就可以极大的减少传输的数据量,进而减少传输开销,相对于,较少比特位的计算以及存储也可以减少计算开销以及存储开销。
对于将定点数据转换成浮点数据的技术方案为,以反向运算为例,如图4g所示的计算结构的上向箭头方向为一种反向运算。以反向运算为例,对于方向运算,其方向运算的为输出数据梯度,该输出数据梯度具体可以为,如该输出数据梯度为本次迭代计算的最后一层,该输出数据梯度本次迭代计算的最后一层的输出数据经过预设运算(该预设运算可以由厂家根据自身需要自行设定,这里并不限定该预设运算的具体运算步骤)得到输出数据梯度,如该输出数据梯度为非本次迭代计算的最后一层,例如该输出数据梯度为本次迭代计算的第n层,那么该输出数据梯度为第n+1层反向运算计算得到的输入数据梯度。
下面以一个实际的例子来说明,如图4g所示,本层运算方式为矩阵乘法,输入数据为矩阵,权值为标量,为了方便说明这里的输入数据以矩阵I为例,权值以标量C为例,如图4g所示,输出数据=矩阵I*C;此时由于权值为标量的数据,数据计算量较小,这样如果矩阵I为定点数据,则将矩阵I转换成浮点数据,然后在执行矩阵乘标量的运算。
例如,矩阵I为10*10的矩阵,标量为C,那么对于列数量以及行数量之和为20,其数量较小,(假设这里大于100认为是较大,小于100认为是较小,对于该100的数字本领域技术人员可以任意设定。)对应的计算量就很小,矩阵乘以矩阵的内积运算的乘法运算即102次,由于计算量小,如果还是使用定点数据进行计算,会对其精度产生影响,为了使得计算精度更高,在较小计算量的前提下,通过浮点数据计算能够提高计算精度。
在一种可选方案中,网络中各层的各个数据块可以分别采用固定的定点位宽,但是其定点位置随着训练迭代周期变化;
具体来说,在训练过程中,某个数据块的数据表示方法可以如下设定;
具体地,在开始训练的时候,可以对某个数据块选择任意数据表示方法;
在一种可选方案中,可以选择特定位宽的浮点表示方法;
在一种可选方案中,可以选择特定形式的定点表示方法;
可以选择特定定点位宽;
可以选择特定定点位置;
在一种可选的方案中,可以根据该数据块中所有数据的绝对值的最大值来设置定点位置;
在一种可选方案中,可以根据该数据块中所有数据的绝对值的最小值来设置定点位置;
在一种可选方案中,可以根据其他数据块的定点位置来确定初始化时本数据块的定点位置;
在一种可选方案中,可以根据经验值设置本数据块的定点位置;
具体地,在训练过程中,可以在任意迭代周期次数时改变某个数据块的数据表示方法;
在一种可选方案中,对于某个数据块而言,可以不进行调整;
在一种可选方案中,可以每隔一定的迭代次数进行调整;
在一种可选方案中,可以每隔一定的训练epoch数进行调整;
在一种可选方案中,可以按照不固定的迭代次数间隔进行调整;
在一种可选方案中,可以间隔不固定的训练epoch数进行调整;
具体地,在训练过程中,调整某个数据块的表示方法的时候可以调整为任意数据表示方法;
在一种可选方案中,如果一个数据块是使用固定定点位宽定点数表示的,那么其数据表示的定点位置的调整方式可以是:
在一种可选方案中,每次按照初始化定点位置的设置方法来设置定点位置;
在一种可选方案中,如果某个数据块按照定点位置的初始化设置方法计算出来的定点位置在某个迭代周期比上个迭代周期增大的,那就将本周期的定点位置向着增大的方法改变;反之,则向着减小的方向改变。
本披露还提供一种集成电路芯片装置,所述集成电路芯片装置用于执行神经网络的训练,所述神经网络包含多层,所述集成电路芯片装置包括:处理电路以及外部接口;
所述外部接口,用于接收训练指令;
所述处理电路,用于依据该训练指令确定第一层输入数据和第一层权值数据,通过第一层输入数据和第一层权值数据执行神经网络的n层正向运算得到第n输出结果;
所述处理电路,还用于依据第n输出结果得到第n输出结果梯度,依据所述训练指令获取第n层反向运算的第n反向运算,依据第n输出结果梯度、第n层输入数据、第n层权值组数据以及第n反向运算得到第n反向运算复杂度,依据所述第n反向运算复杂度确定第n输出结果梯度、第n层输入数据、第n层权值组数据对应的第n反向数据类型,将第n输出结果梯度、第n层输入数据、第n层权值组数据以第n反向数据类型执行神经网络的n层反向运算得到n层运算的n个权值梯度;所述第n反向数据类型包括:定点类型或浮点类型;
所述处理电路,还用于将应用所述n个权值梯度对n层运算的n个权值进行更新。
本披露还揭露了一个神经网络运算装置,其包括一个或多个在如图3所示的芯片,用于从其他处理装置中获取待运算数据和控制信息,执行指定的神经网络运算,执行结果通过I/O接口传递给***设备。***设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上神如图3所示的芯片时,如图3所示的芯片间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制***,也可以有各自独立的控制***;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该神经网络运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
本披露还揭露了一个组合处理装置,其包括上述的神经网络运算装置,通用互联接口,和其他处理装置(即通用处理装置)。神经网络运算装置与其他处理装置进行交互,共同完成用户指定的操作。如5a为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为神经网络运算装置与外部数据和控制的接口,包括数据搬运,完成对本神经网络运算装置的开启、停止等基本控制;其他处理装置也可以和神经网络运算装置协作共同完成运算任务。
通用互联接口,用于在所述神经网络运算装置与其他处理装置间传输数据和控制指令。该神经网络运算装置从其他处理装置中获取所需的输入数据,写入神经网络运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入神经网络运算装置片上的控制缓存;也可以读取神经网络运算装置的存储模块中的数据并传输给其他处理装置。
如图5b所示,可选的,该结构还包括存储装置,用于保存在本运算单元/运算装置或其他运算单元所需要的数据,尤其适用于所需要运算的数据在本神经网络运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上***,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
请参照图5c,图5c为本披露实施例提供的一种神经网络处理器板卡的结构示意图。如图5c所示,上述神经网络处理器板卡10包括神经网络芯片封装结构11、第一电气及非电气连接装置12和第一基板(substrate)13。
本披露对于神经网络芯片封装结构11的具体结构不作限定,可选的,如图5d所示,上述神经网络芯片封装结构11包括:神经网络芯片111、第二电气及非电气连接装置112、第二基板113。
本披露所涉及的神经网络芯片111的具体形式不作限定,上述的神经网络芯片111包含但不限于将神经网络处理器集成的神经网络晶片,上述晶片可以由硅材料、锗材料、量子材料或分子材料等制成。根据实际情况(例如:较严苛的环境)和不同的应用需求可将上述神经网络晶片进行封装,以使神经网络晶片的大部分被包裹住,而将神经网络晶片上的引脚通过金线等导体连到封装结构的外边,用于和更外层进行电路连接。
本披露对于神经网络芯片111的具体结构不作限定,可选的,请参照图1a或图1b所示的装置。
本披露对于第一基板13和第二基板113的类型不做限定,可以是印制电路板(printed circuit board,PCB)或(printed wiring board,PWB),还可能为其它电路板。对PCB的制作材料也不做限定。
本披露所涉及的第二基板113用于承载上述神经网络芯片111,通过第二电气及非电气连接装置112将上述的神经网络芯片111和第二基板113进行连接得到的神经网络芯片封装结构11,用于保护神经网络芯片111,便于将神经网络芯片封装结构11与第一基板13进行进一步封装。
对于上述具体的第二电气及非电气连接装置112的封装方式和封装方式对应的结构不作限定,可根据实际情况和不同的应用需求选择合适的封装方式并进行简单地改进,例如:倒装芯片球栅阵列封装(Flip Chip Ball Grid Array Package,FCBGAP),薄型四方扁平式封装(Low-profile Quad Flat Package,LQFP)、带散热器的四方扁平封装(QuadFlat Package with Heat sink,HQFP)、无引脚四方扁平封装(Quad Flat Non-leadPackage,QFN)或小间距四方扁平式封装(Fine-pitch Ball Grid Package,FBGA)等封装方式。
倒装芯片(Flip Chip),适用于对封装后的面积要求高或对导线的电感、信号的传输时间敏感的情况下。除此之外可以用引线键合(Wire Bonding)的封装方式,减少成本,提高封装结构的灵活性。
球栅阵列(Ball Grid Array),能够提供更多引脚,且引脚的平均导线长度短,具备高速传递信号的作用,其中,封装可以用引脚网格阵列封装(Pin Grid Array,PGA)、零插拔力(Zero Insertion Force,ZIF)、单边接触连接(Single Edge Contact Connection,SECC)、触点阵列(Land Grid Array,LGA)等来代替。
可选的,采用倒装芯片球栅阵列(Flip Chip Ball Grid Array)的封装方式对神经网络芯片111和第二基板113进行封装,具体的神经网络芯片封装结构的示意图可参照图6。如图6所示,上述神经网络芯片封装结构包括:神经网络芯片21、焊盘22、焊球23、第二基板24、第二基板24上的连接点25、引脚26。
其中,焊盘22与神经网络芯片21相连,通过在焊盘22和第二基板24上的连接点25之间焊接形成焊球23,将神经网络芯片21和第二基板24连接,即实现了神经网络芯片21的封装。
引脚26用于与封装结构的外部电路(例如,神经网络处理器板卡10上的第一基板13)相连,可实现外部数据和内部数据的传输,便于神经网络芯片21或神经网络芯片21对应的神经网络处理器对数据进行处理。对于引脚的类型和数量本披露也不作限定,根据不同的封装技术可选用不同的引脚形式,并遵从一定规则进行排列。
可选的,上述神经网络芯片封装结构还包括绝缘填充物,置于焊盘22、焊球23和连接点25之间的空隙中,用于防止焊球与焊球之间产生干扰。
其中,绝缘填充物的材料可以是氮化硅、氧化硅或氧氮化硅;干扰包含电磁干扰、电感干扰等。
可选的,上述神经网络芯片封装结构还包括散热装置,用于散发神经网络芯片21运行时的热量。其中,散热装置可以是一块导热性良好的金属片、散热片或散热器,例如,风扇。
举例来说,如图6a所示,神经网络芯片封装结构11包括:神经网络芯片21、焊盘22、焊球23、第二基板24、第二基板24上的连接点25、引脚26、绝缘填充物27、散热膏28和金属外壳散热片29。其中,散热膏28和金属外壳散热片29用于散发神经网络芯片21运行时的热量。
可选的,上述神经网络芯片封装结构11还包括补强结构,与焊盘22连接,且内埋于焊球23中,以增强焊球23与焊盘22之间的连接强度。
其中,补强结构可以是金属线结构或柱状结构,在此不做限定。
本披露对于第一电气及非电气装置12的具体形式也不作限定,可参照第二电气及非电气装置112的描述,即通过焊接的方式将神经网络芯片封装结构11进行封装,也可以采用连接线连接或插拔方式连接第二基板113和第一基板13的方式,便于后续更换第一基板13或神经网络芯片封装结构11。
可选的,第一基板13包括用于扩展存储容量的内存单元的接口等,例如:同步动态随机存储器(Synchronous Dynamic Random Access Memory,SDRAM)、双倍速率同步动态随机存储器(Double Date Rate SDRAM,DDR)等,通过扩展内存提高了神经网络处理器的处理能力。
第一基板13上还可包括快速外部设备互连总线(Peripheral ComponentInterconnect-Express,PCI-E或PCIe)接口、小封装可热插拔(Small Form-factorPluggable,SFP)接口、以太网接口、控制器局域网总线(Controller Area Network,CAN)接口等等,用于封装结构和外部电路之间的数据传输,可提高运算速度和操作的便利性。
将神经网络处理器封装为神经网络芯片111,将神经网络芯片111封装为神经网络芯片封装结构11,将神经网络芯片封装结构11封装为神经网络处理器板卡10,通过板卡上的接口(插槽或插芯)与外部电路(例如:计算机主板)进行数据交互,即直接通过使用神经网络处理器板卡10实现神经网络处理器的功能,并保护神经网络芯片111。且神经网络处理器板卡10上还可添加其他模块,提高了神经网络处理器的应用范围和运算效率。
在一个实施例里,本公开公开了一个电子装置,其包括了上述神经网络处理器板卡10或神经网络芯片封装结构11。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
以上所述的具体实施例,对本披露的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本披露的具体实施例而已,并不用于限制本披露,凡在本披露的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本披露的保护范围之内。
Claims (15)
1.一种集成电路芯片装置,所述装置用于执行的神经网络的训练,该神经网络包含n层,所述n取值范围为大于等于2的整数,其特征在于,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;所述主处理电路包括:数据类型运算电路,所述数据类型运算电路,用于执行浮点类型数据以及定点类型数据之间的转换;
所述集成电路芯片装置,用于接收训练指令,依据该训练指令确定第一层输入数据和第一层权值组数据,对第一层输入数据和第一层权值组数据执行神经网络的n层正向运算得到正向运算的第n输出结果;
所述主处理电路,还用于依据所述第n输出结果得到第n输出结果梯度,依据所述训练指令获取第n层反向运算的第n反向运算,依据第n输出结果梯度、第n层输入数据、第n层权值组数据以及第n反向运算得到第n反向运算复杂度,依据所述第n反向运算复杂度确定第n输出结果梯度、第n层输入数据、第n层权值组数据对应的第n反向数据类型;
所述主处理电路,用于依据第n反向运算的类型将第n输出结果梯度、第n层输入数据、第n层权值组数据划分成广播数据块以及分发数据块,对第n反向数据类型的所述分发数据块进行拆分处理得到多个基本数据块,将所述多个基本数据块分发至多个基础处理电路中的至少一个基础处理电路,将第n反向数据类型的所述广播数据块广播至所述多个基础处理电路;
所述多个基础处理电路,用于将所述广播数据块以及接收到基本数据块以第n反向数据类型执行运算得到运算结果,并将运算结果传输给所述主处理电路;
所述主处理电路,用于对该运算结果进行处理得到第n层权值组梯度和第n层输入数据梯度,应用所述第n层权值组梯度对第n层权值组数据进行更新;所述第n反向数据类型包括:定点类型或浮点类型;
所述集成电路芯片装置,还用于将第n层输入数据梯度作为第n-1层的第n-1输出结果梯度执行n-1层方向运算得到n-1层权值组梯度,应用n-1层权值组梯度更新对应层的权值组数据,所述权值组数据包括;至少二个权值;
所述主处理电路,具体用于如所述第n反向运算的类型为乘法运算,确定所述第n层输入数据以及所述第n层权值组数据均为分发数据块,所述第n输出结果梯度为广播数据块;如第n反向运算的类型为卷积运算,确定所述第n层输入数据以及所述第n层权值组数据均为广播数据块,所述第n输出结果梯度为分发数据块。
2.根据权利要求1所述的集成电路芯片装置,其特征在于,
所述主处理电路,具体用于将第n反向运算复杂度与预设阈值比较,如所述第n反向运算复杂度高于所述预设阈值,确定所述第n反向数据类型为定点类型,如所述第n反向运算复杂度低于或等于所述预设阈值,计算装置确定所述第n反向数据类型为浮点类型。
3.根据权利要求2所述的集成电路芯片装置,其特征在于,
所述主处理电路,具体用于确定所述第n输出结果梯度、第n层输入数据、第n层权值组数据属于的第n+1反向数据类型,如所述第n+1反向数据类型与所述第n反向数据类型不同,通过所述数据类型运算电路将属于第n+1反向数据类型的所述第n输出结果梯度、第n层输入数据、第n层权值组数据转换成属于第n反向数据类型的所述第n输出结果梯度、第n层输入数据、第n层权值组数据。
4.根据权利要求1所述的集成电路芯片装置,其特征在于,
所述主处理电路,用于如所述n层反向运算为卷积运算,卷积输入数据为所述第n层输入数据,卷积核为所述第n输出结果梯度,
第n反向运算复杂度=α*C1*kW*kH*M*N*W*C2*H;
其中,α为卷积系数,取值范围为大于1;C1、kW、kH、M为卷积核四个维度的值,N、W、C2、H为卷积输入数据四个维度的值;
如所述复杂度大于设定阈值,确定该第n反向数据类型为浮点数据类型,确定该卷积输入数据以及卷积核是否为浮点数据,如该卷积输入数据以及卷积核不为浮点数据,将该卷积输入数据转换成浮点数据,将卷积核转换成浮点数据,然后将卷积输入数据、卷积核以浮点数据类型执行卷积运算。
5.根据权利要求1所述的集成电路芯片装置,其特征在于,
所述主处理电路,还用于如所述第n反向运算为:矩阵乘矩阵运算,所述输入数据为第n层输入数据,所述权值为所述第n输出结果梯度;
复杂度=β*F*G*E*F1;其中,β为矩阵系数,取值范围为大于等于1,F、G为第n层输入数据的行、列值,E、F1为权值的行、列值;
如所述复杂度大于设定阈值,确定该第n反向数据类型为浮点数据类型,确定该第n层输入数据以及权值是否为浮点数据,如该第n层输入数据以及权值不为浮点数据,将该第n层输入数据转换成浮点数据,将权值转换成浮点数据,然后将第n层输入数据、权值以浮点数据类型执行矩阵乘矩阵运算。
6.根据权利要求1所述的集成电路芯片装置,其特征在于,
集成电路芯片装置,还用于如所述第n反向运算为:矩阵乘向量运算,所述输入数据为第n层输入数据,所述权值为所述第n输出结果梯度;
复杂度=β*F*G*F1;其中,β为矩阵系数,取值范围为大于等于1,F、G为第n层输入数据的行、列值,F1为第n输出结果梯度的列值;
如所述复杂度大于设定阈值,确定该第n反向数据类型为浮点数据类型,确定该第n层输入数据以及权值是否为浮点数据,如该第n层输入数据以及权值不为浮点数据,将该第n层输入数据转换成浮点数据,将权值转换成浮点数据,然后将第n层输入数据、权值以浮点数据类型执行矩阵乘向量运算。
7.根据权利要求1-6任意一项所述的集成电路芯片装置,其特征在于,
所述n层反运算还包括:偏执运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合。
8.根据权利要求1所述的集成电路芯片装置,其特征在于,
所述主处理电路包括:主寄存器或主片上缓存电路;
所述基础处理电路包括:基本寄存器或基本片上缓存电路。
9.根据权利要求8所述的集成电路芯片装置,其特征在于,
所述主处理电路包括:向量运算器电路、算数逻辑单元电路、累加器电路、矩阵转置电路、直接内存存取电路或数据重排电路中的一种或任意组合。
10.根据权利要求8所述的集成电路芯片装置,其特征在于,
所述第n输出结果梯度为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合;
所述第n层输入数据为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合;
所述n层权值组数据为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合。
11.一种神经网络运算装置,其特征在于,所述神经网络运算装置包括一个或多个如权利要求1-10任意一项所述的集成电路芯片装置。
12.一种组合处理装置,其特征在于,所述组合处理装置包括:如权利要求11所述的神经网络运算装置、通用互联接口和通用处理装置;
所述神经网络运算装置通过所述通用互联接口与所述通用处理装置连接。
13.一种芯片,其特征在于,所述芯片集成如权利要求1-12任意一项所述装置。
14.一种智能设备,其特征在于,所述智能设备包括如权利要求13所述的芯片。
15.一种神经网络的运算方法,其特征在于,所述方法应用在集成电路芯片装置内,所述集成电路芯片装置包括:如权利要求1-10任意一项所述的集成电路芯片装置,所述集成电路芯片装置用于执行神经网络的训练运算。
Priority Applications (13)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711468629.9A CN109977446B (zh) | 2017-12-28 | 2017-12-28 | 集成电路芯片装置及相关产品 |
EP18896519.8A EP3719712B1 (en) | 2017-12-27 | 2018-12-26 | Integrated circuit chip device |
EP20203232.2A EP3789871B1 (en) | 2017-12-27 | 2018-12-26 | Integrated circuit chip device |
PCT/CN2018/123929 WO2019129070A1 (zh) | 2017-12-27 | 2018-12-26 | 一种集成电路芯片装置 |
EP20201907.1A EP3783477B1 (en) | 2017-12-27 | 2018-12-26 | Integrated circuit chip device |
US16/903,304 US11544546B2 (en) | 2017-12-27 | 2020-06-16 | Integrated circuit chip device |
US17/134,487 US11748605B2 (en) | 2017-12-27 | 2020-12-27 | Integrated circuit chip device |
US17/134,445 US11748602B2 (en) | 2017-12-27 | 2020-12-27 | Integrated circuit chip device |
US17/134,444 US11748601B2 (en) | 2017-12-27 | 2020-12-27 | Integrated circuit chip device |
US17/134,435 US11741351B2 (en) | 2017-12-27 | 2020-12-27 | Integrated circuit chip device |
US17/134,486 US11748604B2 (en) | 2017-12-27 | 2020-12-27 | Integrated circuit chip device |
US17/134,446 US11748603B2 (en) | 2017-12-27 | 2020-12-27 | Integrated circuit chip device |
US18/073,924 US11983621B2 (en) | 2017-12-27 | 2022-12-02 | Integrated circuit chip device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711468629.9A CN109977446B (zh) | 2017-12-28 | 2017-12-28 | 集成电路芯片装置及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109977446A CN109977446A (zh) | 2019-07-05 |
CN109977446B true CN109977446B (zh) | 2020-07-07 |
Family
ID=67075471
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711468629.9A Active CN109977446B (zh) | 2017-12-27 | 2017-12-28 | 集成电路芯片装置及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109977446B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112686379B (zh) * | 2020-12-30 | 2024-03-19 | 上海寒武纪信息科技有限公司 | 集成电路装置、电子设备、板卡和计算方法 |
CN113792867B (zh) * | 2021-09-10 | 2024-05-10 | 中科寒武纪科技股份有限公司 | 运算电路、芯片和板卡 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106991477B (zh) * | 2016-01-20 | 2020-08-14 | 中科寒武纪科技股份有限公司 | 一种人工神经网络压缩编码装置和方法 |
CN107301454B (zh) * | 2016-04-15 | 2021-01-22 | 中科寒武纪科技股份有限公司 | 支持离散数据表示的人工神经网络反向训练装置和方法 |
CN109934331B (zh) * | 2016-04-29 | 2020-06-19 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络正向运算的装置和方法 |
CN109961138B (zh) * | 2017-12-14 | 2020-04-14 | 中科寒武纪科技股份有限公司 | 神经网络训练方法及相关产品 |
-
2017
- 2017-12-28 CN CN201711468629.9A patent/CN109977446B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109977446A (zh) | 2019-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109961138B (zh) | 神经网络训练方法及相关产品 | |
US11748605B2 (en) | Integrated circuit chip device | |
CN109978131B (zh) | 集成电路芯片装置、方法及相关产品 | |
CN109961136B (zh) | 集成电路芯片装置及相关产品 | |
US11507810B2 (en) | Integrated circuit chip apparatus | |
CN109961134B (zh) | 集成电路芯片装置及相关产品 | |
CN109977446B (zh) | 集成电路芯片装置及相关产品 | |
CN109961131B (zh) | 神经网络正向运算方法及相关产品 | |
CN109961135B (zh) | 集成电路芯片装置及相关产品 | |
CN109978156B (zh) | 集成电路芯片装置及相关产品 | |
CN109978148B (zh) | 集成电路芯片装置及相关产品 | |
CN109978157B (zh) | 集成电路芯片装置及相关产品 | |
CN109960673B (zh) | 集成电路芯片装置及相关产品 | |
CN110197267B (zh) | 神经网络处理器板卡及相关产品 | |
CN109978152B (zh) | 集成电路芯片装置及相关产品 | |
CN109978158B (zh) | 集成电路芯片装置及相关产品 | |
CN109961133B (zh) | 集成电路芯片装置及相关产品 | |
CN109961137B (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100000 room 644, No. 6, No. 6, South Road, Beijing Academy of Sciences Applicant after: Zhongke Cambrian Technology Co., Ltd Address before: 100000 room 644, No. 6, No. 6, South Road, Beijing Academy of Sciences Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |