CN109961131B - 神经网络正向运算方法及相关产品 - Google Patents
神经网络正向运算方法及相关产品 Download PDFInfo
- Publication number
- CN109961131B CN109961131B CN201711347407.1A CN201711347407A CN109961131B CN 109961131 B CN109961131 B CN 109961131B CN 201711347407 A CN201711347407 A CN 201711347407A CN 109961131 B CN109961131 B CN 109961131B
- Authority
- CN
- China
- Prior art keywords
- data
- matrix
- processing circuit
- input data
- type
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- 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/084—Backpropagation, e.g. using gradient descent
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Computational Mathematics (AREA)
- Neurology (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Color Image Communication Systems (AREA)
- Image Analysis (AREA)
- Feedback Control In General (AREA)
- Advance Control (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Image Processing (AREA)
Abstract
本披露提供一种集成电路芯片装置上执行的神经网络正向运算方法,该神经网络包含多层,其特征在于,所述方法包括如下步骤:接收第一计算指令,解析第一计算指令得到所述第一计算指令在所述正向运算的第i层包含的第一运算以及第一计算指令对应的输入数据以及权值数据;依据该输入数据、权值数据以及第一运算确定第一运算的第一复杂度,依据所述第一复杂度确定该输入数据以及权值数据在执行第一运算时的第一数据类型,所述第一数据类型包括:浮点类型或定点类型;将输入数据以及权值数据以所述第一数据类型执行所述正向运算的第一层包含的第一运算。本披露提供的技术方案具有计算量小,功耗低的优点。
Description
技术领域
本披露涉及神经网络领域,尤其涉及一种神经网络正向运算方法及相关产品。
背景技术
人工神经网络(Artificial Neural Network,即ANN),是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。现有的神经网络的运算基于CPU(Central Processing Unit,中央处理器)或GPU(英文:Graphics Processing Unit,图形处理器)来实现神经网络的正向运算,此种正向运算的计算量大,功耗高。
发明内容
本披露实施例提供了一种神经网络正向运算方法及相关产品,可提升计算装置的处理速度,提高效率。
第一方面,提供一种集成电路芯片装置上执行的神经网络正向运算方法,该神经网络包含多层,所述方法包括如下步骤:
接收第一计算指令,解析第一计算指令得到所述第一计算指令在所述正向运算的第i层包含的第一运算以及第一计算指令对应的输入数据以及权值数据;,所述i的取值范围为大于等于1的整数,如所述i大于等于2,所述输入数据为第i-1层的输出数据;
依据该输入数据、权值数据以及第一运算确定第一运算的第一复杂度,依据所述第一复杂度确定该输入数据以及权值数据在执行第一运算时的第一数据类型,所述第一数据类型包括:浮点类型或定点类型;
将输入数据以及权值数据以所述第一数据类型执行所述正向运算的第一层包含的第一运算。
第二方面,提供一种集成电路芯片装置,所述集成电路芯片装置用于执行神经网络的正向运算,所述神经网络包含多层,所述装置包括:处理电路以及外部接口;
所述外部接口,用于接收第一计算指令;
所述处理电路,用于解析第一计算指令得到所述第一计算指令在所述正向运算的第i层包含的第一运算、第一计算指令对应的输入数据以及权值数据;,所述i的取值范围为大于等于1的整数,如所述i大于等于2,所述输入数据为第i-1层的输出数据;
所述处理电路,还用于依据该输入数据、权值数据以及第一运算确定第一运算的第一复杂度,依据所述第一复杂度确定该输入数据以及权值数据在执行第一运算时的第一数据类型,所述第一数据类型包括:浮点类型或定点类型;
所述处理电路,还用于将输入数据以及权值数据以第一数据类型执行所述正向运算的第i层包含的第一运算。
第三方面,提供一种神经网络运算装置,所述神经网络运算装置包括一个或多个第二方面提供的集成电路芯片装置。
第四方面,提供一种组合处理装置,所述组合处理装置包括:第三方面提供的神经网络运算装置、通用互联接口和通用处理装置;
所述神经网络运算装置通过所述通用互联接口与所述通用处理装置连接。
第五方面,提供一种芯片,所述芯片集成第二方面的装置、第三方面的装置或第四方面的装置。
第六方面,提供一种电子设备,所述电子设备包括第四方面的芯片。
可以看出,通过本披露实施例,提供数据转换运算电路将数据块的类型进行转换后运算,节省了传输资源以及计算资源,所以其具有功耗低,计算量小的优点。
附图说明
图1是一种神经网络的正向运算示意图。
图1a为一种定点数据类型的示意结构图。
图2a为卷积输入数据示意图。
图2b为卷积核示意图。
图2c为输入数据的一个三维数据块的运算窗口示意图。
图2d为输入数据的一个三维数据块的另一运算窗口示意图。
图2e为输入数据的一个三维数据块的又一运算窗口示意图.
图3a是一种神经网络芯片的结构示意图。
图3b是另一种神经网络芯片的结构示意图。
图4a为矩阵乘以矩阵示意图。
图4b为矩阵乘以矩阵的方法流程图。
图4c为矩阵乘以向量示意图。
图4d为矩阵乘以向量的方法流程图。
图5a为本披露还揭露了一个组合处理装置结构示意图。
图5b为本披露还揭露了一个组合处理装置另一种结构示意图。
图5c为本披露实施例提供的一种神经网络处理器板卡的结构示意图;
图5d为本披露实施例流提供的一种神经网络芯片封装结构的结构示意图;
图5e为本披露实施例流提供的一种神经网络芯片的结构示意图;
图6为本披露实施例流提供的一种神经网络芯片封装结构的示意图;
图6a为本披露实施例流提供的另一种神经网络芯片封装结构的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本披露方案,下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
在第一方面提供的方法中,依据所述第一复杂度确定该输入数据以及权值数据在执行第一运算时的第一数据类型,包括:
将所述第一复杂度与预设阈值比较,如所述第一复杂度高于所述预设阈值,确定所述第一数据类型为定点类型,如所述第一复杂度低于或等于所述预设阈值,确定所述第一数据类型为浮点类型。
在第一方面提供的方法中,所述方法在所述依据所述第一复杂度确定该输入数据以及权值数据在执行第一运算时的第一数据类型之后还包括:
确定所述输入数据以及权值数据属于第二数据类型,如所述第二数据类型与所述第一数据类型不同,将属于第二数据类型的所述输入数据以及属于第二数据类型的所述权值数据转换成属于第一数据类型的所述输入数据以及属于第一数据类型的所述权值数据。
在第一方面提供的方法中,如所述第一运算为卷积运算,所述输入数据为卷积输入数据,所述权值数据为卷积核,
第一复杂度=α*C*KW*KH*M*N*W*C*H;
其中,α为卷积系数,取值范围为大于1;C、KW、KH、M为卷积核四个维度的值,N、W、C、H为卷积输入数据四个维度的值;
如所述第一复杂度大于设定阈值,确定该卷积输入数据以及卷积核是否为浮点数据,如该卷积输入数据以及卷积核不为浮点数据,将该卷积输入数据转换成浮点数据,将卷积核转换成浮点数据,然后将卷积输入数据、卷积核以浮点数据类型执行卷积运算。
在第一方面提供的方法中,如所述第一运算为:矩阵乘矩阵运算,所述输入数据为所述矩阵乘矩阵运算的第一矩阵,所述权值为所述矩阵乘矩阵运算的第二矩阵;
第一复杂度=β*F1*G*E*F2;其中,β为矩阵系数,取值范围为大于等于1,F1、G为第一矩阵的行、列值,E、F2为第二矩阵的行、列值;
如所述第一复杂度大于设定阈值,确定该第一矩阵以及第二矩阵是否为浮点数据,如该第一矩阵以及第二矩阵不为浮点数据,将该第一矩阵转换成浮点数据,将第二矩阵转换成浮点数据,然后将第一矩阵、第二矩阵以浮点数据类型执行矩阵乘矩阵运算。
在第一方面提供的方法中,如所述第一运算为:矩阵乘向量运算,所述输入数据为所述矩阵乘向量运算的第一矩阵,所述权值为所述矩阵乘向量运算的向量;
第一复杂度=β*F1*G*F2;其中,β为矩阵系数,取值范围为大于等于1,F1、G为第一矩阵的行、列值,F2为向量的列值;
如所述第一复杂度大于设定阈值,确定该第一矩阵以及向量是否为浮点数据,如该第一矩阵以及向量不为浮点数据,将该第一矩阵转换成浮点数据,将向量转换成浮点数据,然后将第一矩阵、向量以浮点数据类型执行矩阵乘向量运算。
在第一方面提供的方法中,第i层还可以包括如下运算:偏置运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合。
在第二方面提供的装置中,所述处理电路,具体用于将所述第一复杂度与预设阈值比较,如所述第一复杂度高于所述预设阈值,计算装置确定所述第一数据类型为定点类型,如所述第一复杂度低于或等于所述预设阈值,计算装置确定所述第一数据类型为浮点类型。
在第二方面提供的装置中,所述集成电路芯片装置还包括:数据类型转换电路;
所述处理电路,还用于确定所述输入数据以及权值数据属于的第二数据类型,如所述第二数据类型与所述第一数据类型不同,向所述数据类型转换电路发送转换命令,
所述数据类型转换电路,用于依据所述转换命令将属于第二数据类型的所述输入数据以及属于第二数据类型的所述权值数据转换成属于第一数据类型的所述输入数据以及属于第一数据类型的所述权值数据。
在第二方面提供的装置中,如所述第一运算为卷积运算,所述输入数据为卷积输入数据,所述权值数据为卷积核,
所述处理电路,用于计算第一复杂度,第一复杂度=α*C*KW*KH*M*N*W*C*H;
其中,α为卷积系数,取值范围为大于1;C、KW、KH、M为卷积核四个维度的值,N、W、C、H为卷积输入数据四个维度的值;
所述处理电路,还用于如所述第一复杂度大于设定阈值,确定该卷积输入数据以及卷积核是否为浮点数据,如该卷积输入数据以及卷积核不为浮点数据,将该卷积输入数据转换成浮点数据,将卷积核转换成浮点数据,然后将卷积输入数据、卷积核以浮点数据类型执行卷积运算。
在第二方面提供的装置中,如所述第一运算为:矩阵乘矩阵运算,所述输入数据为所述矩阵乘矩阵运算的第一矩阵,所述权值为所述矩阵乘矩阵运算的第二矩阵;
所述处理电路,用于计算第一复杂度;
第一复杂度=β*F1*G*E*F2;其中,β为矩阵系数,取值范围为大于等于1,F1、G为第一矩阵的行、列值,E、F2为第二矩阵的行、列值;
所述处理电路,还用于如所述第一复杂度大于设定阈值,确定该第一矩阵以及第二矩阵是否为浮点数据,如该第一矩阵以及第二矩阵不为浮点数据,将该第一矩阵转换成浮点数据,将第二矩阵转换成浮点数据,然后将第一矩阵、第二矩阵以浮点数据类型执行矩阵乘矩阵运算。
在第二方面提供的装置中,如所述第一运算为:矩阵乘向量运算,所述输入数据为所述矩阵乘向量运算的第一矩阵,所述权值为所述矩阵乘向量运算的向量;
所述处理电路,用于计算第一复杂度;
第一复杂度=β*F1*G*F2;其中,β为矩阵系数,取值范围为大于等于1,F1、G为第一矩阵的行、列值,F2为向量的列值;
所述处理电路,还用于如所述第一复杂度大于设定阈值,确定该第一矩阵以及向量是否为浮点数据,如该第一矩阵以及向量不为浮点数据,将该第一矩阵转换成浮点数据,将向量转换成浮点数据,然后将第一矩阵、向量以浮点数据类型执行矩阵乘向量运算。
在第二方面提供的装置中,所述i层还可以包括如下运算:偏置运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合。
如图1所示,为本披露实施例提供的一种神经网络的正向运算,每一层使用自己的输入数据和权值按照层的类型所指定的运算规则计算得到相应的输出数据;
神经网络的正向运算过程(也叫推理,inference)是逐层处理各层的输入数据,经过一定的计算,得到输出数据的过程,具有如下特征:
某一层的输入:
某一层的输入可以是神经网络的输入数据;
某一层的输入可以是其他层的输出;
某一层的输入可以是本层上一时刻的输出(对应于循环神经网络的情况);
某一层可以同时从多个上述输入源获取输入;
某一层的输出:
某一层的输出可以作为神经网络的输出结果;
某一层的输出可以是其它层的输入;
某一层的输出可以是下一时刻本层的输入(循环神经网络的情况);
某一层的输出可以向上述多个输出方向输出结果;
具体地,所述神经网络中的层的运算的类型包括但不限于以下几种:
卷积层(即执行卷积运算);
全连接层(即执行全连接运算);
归一化(规则化)层:包括LRN(Local Response Normalization)层,BN(BatchNormalization)层等类型;
池化层;
激活层:包括但不限于以下类型Sigmoid层,ReLU层,PReLu层,LeakyReLu层,Tanh层;
层的反向运算,每一层的反向运算需要执行两部分运算:一部分是使用可能是稀疏表示的输出数据梯度和可能是稀疏表示的输入数据计算出权值的梯度(用于在“权值更新”步骤更新本层的权值),另一部分是使用可能是稀疏表示的输出数据梯度和可能是稀疏表示的权值,计算出输入数据梯度(用于作为反向运算中下一层的输出数据梯度以供其进行反向运算);
反向运算按照与正向运算相反的顺序,从最后一层开始反向传递梯度。
在一种可选方案中,某一层反向计算得到的输出数据梯度可以来自:
神经网络最后的损失函数(lost function或者cost function)回传的梯度;
其它层的输入数据梯度;
本层上一时刻的输入数据梯度(对应于循环神经网络的情况);
某一层可以同时从多个上述源获取输出数据梯度;
在执行完神经网络的反向运算之后,就计算出了各层的权值的梯度,在这个步骤中,所述装置的第一输入缓存和第二输入缓存分别用于存储本层的权值和权值的梯度,然后在运算单元中使用权值梯度对权值进行更新;
上文中提到的运算都是神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单元中计算出的输出数据作为下一层的输入数据进行运算(或者是对该输出数据进行某些操作再作为下一层的输入数据),同时,将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入数据梯度作为下一层的输出数据梯度进行运算(或者是对该输入数据梯度进行某些操作再作为下一层的输出数据梯度),同时将权值替换为下一层的权值;(用以下的图表示,以下图中虚线的箭头表示反向运算,实线的箭头表示正向运算,各图下面的标注表示图的含义)
定点化数据的表示方法
定点化的方法是指将网络中的某个数据块的数据表示转换成特定的某种固定小数点位置的数据表示方式(映射到电路装置上数据的0/1比特位摆放方式);
在一种可选方案中,将多个数据组成个数据块作为一个整体使用同样的定点表示方法进行定点化表示;
图1a示出了根据本发明实施例的用于存储数据的短位数定点数据结构的具体表示方法。其中,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表示卷积的位置向上滑动一格。
当第一运算为卷积运算,所述输入数据为卷积输入数据,所述权值数据为卷积核,
第一复杂度=α*C*KW*KH*M*N*W*C*H;
其中,α为卷积系数,取值范围为大于1;C、KW、KH、M为卷积核四个维度的值,N、W、C、H为卷积输入数据四个维度的值;
如所述第一复杂度大于设定阈值,确定该卷积输入数据以及卷积核是否为浮点数据,如该卷积输入数据以及卷积核不为浮点数据,将该卷积输入数据转换成浮点数据,将卷积核转换成浮点数据,然后将卷积输入数据、卷积核以浮点数据类型执行卷积运算。
具体的,该卷积处理的方式可以采用如图3a或图3b所示的芯片结构处理,主处理电路(也可以称为主单元)的数据转换运算电路可以在第一复杂度大于设定阈值时,将权值的部分或全部卷积核中的数据转换成定点类型的数据,主处理电路的控制电路将权值的部分或全部卷积核中的数据发送到通过横向数据输入接口直接与主处理电路相连的那些基础处理电路(也可以称为基础单元,图3b中以主单元和基础单元为例说明,将基础单元分别确定为基础单元0、基础单元1...基础单元15)(例如,图3b中最上方的灰色填充的竖向数据通路)。
在一种可选方案中,主处理电路的控制电路将权值中某个卷积核的数据每次发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第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个数……;)
主处理电路的控制电路把输入数据按照卷积的位置进行划分,主处理电路的控制电路将输入数据中的部分或全部卷积位置中的数据发送到通过竖向数据输入接口直接与主处理电路相连的那些基础处理电路(例如,图3b中基础处理电路阵列左侧的灰色填充的横向数据通路);
在一种可选方案中,主处理电路的控制电路将输入数据中某个卷积位置的数据每次发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第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个数……;)
基础处理电路接收到权值的数据之后,将该数据通过其横向的数据输出接口传输给其相连接下一个基础处理电路(例如,图3b中基础处理电路阵列中间的白色填充的横向的数据通路);基础处理电路接收到输入数据的数据后,将该数据通过其竖向的数据输出接口传输给与其相连接的下一个基础处理电路(例如,图3b中基础处理电路阵列中间的白色填充的竖向的数据通路);
每一个基础处理电路对接收到的数据进行运算;
在一种可选方案中,基础处理电路每次计算一组或多组两个数据的乘法,然后将结果累加到寄存器和/或片上缓存上;
在一种可选方案中,基础处理电路每次计算一组或多组两个向量的内积,然后将结果累加到寄存器和/或片上缓存上;
基础处理电路计算出结果后,可以将结果从数据输出接口传输出去;
在一种可选方案中,该计算结果可以是内积运算的最终结果或中间结果;
具体地,如果该基础处理电路有直接与主处理电路相连接的输出接口则从该接口传输结果,如果没有,则向着能够直接向主处理电路输出的基础处理电路的方向输出结果(例如,图3b中,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果)。
基础处理电路接收到来自其他基础处理电路的计算结果之后,将该数据传输给与其相连接的其他基础处理电路或者主处理电路;
向着能够直接向主处理电路输出的方向输出结果(例如,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果);
主处理电路接收到各个基础处理电路内积运算的结果,即可得到输出结果。
参阅图4a,图4a为一种矩阵乘以矩阵的运算,如所述第一运算为:矩阵乘矩阵运算,所述输入数据为所述矩阵乘矩阵运算的第一矩阵,所述权值为所述矩阵乘矩阵运算的第二矩阵;
第一复杂度=β*F1*G*E*F2;其中,β为矩阵系数,取值范围为大于等于1,F1、G为第一矩阵的行、列值,E、F2为第二矩阵的行、列值;
如所述第一复杂度大于设定阈值,确定该第一矩阵以及第二矩阵是否为浮点数据,如该第一矩阵以及第二矩阵不为浮点数据,将该第一矩阵转换成浮点数据,将第二矩阵转换成浮点数据,然后将第一矩阵、第二矩阵以浮点数据类型执行矩阵乘矩阵运算。
参阅图4b,使用如图3b所示的装置完成矩阵乘矩阵的运算;
下面描述计算尺寸是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,为一种矩阵乘以向量的运算示意图。如所述第一运算为:矩阵乘向量运算,所述输入数据为所述矩阵乘向量运算的第一矩阵,所述权值为所述矩阵乘向量运算的向量;
第一复杂度=β*F1*G*F2;其中,β为矩阵系数,取值范围为大于等于1,F1、G为第一矩阵的行、列值,F2为向量的列值;
如所述第一复杂度大于设定阈值,确定该第一矩阵以及向量是否为浮点数据,如该第一矩阵以及向量不为浮点数据,将该第一矩阵转换成浮点数据,将向量转换成浮点数据,然后将第一矩阵、向量以浮点数据类型执行矩阵乘向量运算。
参阅图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的值)传输回主处理电路进行累加;优点是,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。
在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和保存在基础处理电路的寄存器和/或片上缓存中,累加结束之后传输回主处理电路;优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗。
在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和在部分情况下保存在基础处理电路的寄存器和/或片上缓存中进行累加,部分情况下传输到主处理电路进行累加,累加结束之后传输回主处理电路;优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。
本披露还提供一种集成电路芯片装置,所述集成电路芯片装置用于执行神经网络的正向运算,所述神经网络包含多层,所述装置包括:处理电路以及外部接口;
所述外部接口,用于接收第一计算指令;
所述处理电路,用于解析第一计算指令得到所述第一计算指令在所述正向运算的第i层包含的第一运算、第一计算指令对应的输入数据以及权值数据;上述i的取值可以为1,如为1时,其输入数据可以为原始输入数据,当i大于等于2时,该输入数据可以为上一层的输出数据,例如i-1层的输出数据。
所述处理电路,还用于依据该输入数据、权值数据以及第一运算确定第一运算的第一复杂度,依据所述第一复杂度确定该输入数据以及权值数据在执行第一运算时的第一数据类型,所述第一数据类型包括:浮点类型或定点类型;
所述处理电路,还用于将输入数据以及权值数据以第一数据类型执行所述正向运算的第i层包含的第一运算。
本披露还揭露了一个神经网络运算装置,其包括一个或多个在如图3a或如图3b所示的芯片,用于从其他处理装置中获取待运算数据和控制信息,执行指定的神经网络运算,执行结果通过I/O接口传递给***设备。***设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上神如图3a或如图3b所示的芯片时,如图3a或如图3b所示的芯片间可以通过特定的结构进行链接并传输数据,譬如,通过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的具体结构不作限定,可选的,请参照图3a或图3b所示的装置。
本披露对于第一基板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 (18)
1.一种集成电路芯片装置上执行的神经网络正向运算方法,该神经网络包含多层,其特征在于,所述方法应用于集成电路芯片装置,所述装置包括:处理电路,所述处理电路包括:主处理电路和基础处理电路,所述主处理电路与所述基础处理电路连接,所述连接用于传输输入数据、权值数据,所述方法包括如下步骤:
所述处理电路接收第一计算指令,解析第一计算指令得到所述第一计算指令在所述正向运算的第i层包含的第一运算以及第一计算指令对应的输入数据以及权值数据,所述i的取值范围为大于等于1的整数,如所述i大于等于2,所述输入数据为第i-1层的输出数据;
所述处理电路依据该输入数据、权值数据以及第一运算确定第一运算的第一复杂度,依据所述第一复杂度确定该输入数据以及权值数据在执行第一运算时的第一数据类型,所述第一数据类型包括:浮点类型或定点类型;
所述主处理电路在第一复杂度大于预设阈值时,将权值和输入数据的部分或全部的数据转换成定点类型的数据,主处理电路的控制电路将权值的部分或全部的数据发送与主处理电路相连的基础处理电路;主处理电路将输入数据的部分或全部的数据广播给基础处理电路;
将输入数据以及权值数据以所述第一数据类型执行所述正向运算的第i层包含的第一运算。
2.根据权利要求1所述的方法,其特征在于,依据所述第一复杂度确定该输入数据以及权值数据在执行第一运算时的第一数据类型,包括:
将所述第一复杂度与预设阈值比较,如所述第一复杂度高于所述预设阈值,确定所述第一数据类型为定点类型,如所述第一复杂度低于或等于所述预设阈值,确定所述第一数据类型为浮点类型。
3.根据权利要求2所述的方法,其特征在于,所述方法在所述依据所述第一复杂度确定该输入数据以及权值数据在执行第一运算时的第一数据类型之后还包括:
确定所述输入数据以及权值数据属于第二数据类型,如所述第二数据类型与所述第一数据类型不同,将属于第二数据类型的所述输入数据以及属于第二数据类型的所述权值数据转换成属于第一数据类型的所述输入数据以及属于第一数据类型的所述权值数据。
4.根据权利要求1所述的方法,其特征在于,如所述第一运算为卷积运算,所述输入数据为卷积输入数据,所述权值数据为卷积核,
第一复杂度=α*C*KW*KH*M*N*W*C*H;
其中,α为卷积系数,取值范围为大于1;C、KW、KH、M为卷积核四个维度的值,N、W、C、H为卷积输入数据四个维度的值;
如所述第一复杂度大于设定阈值,确定该卷积输入数据以及卷积核是否为浮点数据,如该卷积输入数据以及卷积核不为浮点数据,将该卷积输入数据转换成浮点数据,将卷积核转换成浮点数据,然后将卷积输入数据、卷积核以浮点数据类型执行卷积运算。
5.根据权利要求1所述的方法,其特征在于,如所述第一运算为:矩阵乘矩阵运算,所述输入数据为所述矩阵乘矩阵运算的第一矩阵,所述权值为所述矩阵乘矩阵运算的第二矩阵;
第一复杂度=β*F1*G*E*F2;其中,β为矩阵系数,取值范围为大于等于1,F1、G为第一矩阵的行、列值,E、F2为第二矩阵的行、列值;
如所述第一复杂度大于设定阈值,确定该第一矩阵以及第二矩阵是否为浮点数据,如该第一矩阵以及第二矩阵不为浮点数据,将该第一矩阵转换成浮点数据,将第二矩阵转换成浮点数据,然后将第一矩阵、第二矩阵以浮点数据类型执行矩阵乘矩阵运算。
6.根据权利要求1所述的方法,其特征在于,如所述第一运算为:矩阵乘向量运算,所述输入数据为所述矩阵乘向量运算的第一矩阵,所述权值为所述矩阵乘向量运算的向量;
第一复杂度=β*F1*G*F2;其中,β为矩阵系数,取值范围为大于等于1,F1、G为第一矩阵的行、列值,F2为向量的列值;
如所述第一复杂度大于设定阈值,确定该第一矩阵以及向量是否为浮点数据,如该第一矩阵以及向量不为浮点数据,将该第一矩阵转换成浮点数据,将向量转换成浮点数据,然后将第一矩阵、向量以浮点数据类型执行矩阵乘向量运算。
7.根据权利要求1-6任意一项所述的方法,其特征在于,
所述第i层还包括:偏置运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合。
8.一种集成电路芯片装置,其特征在于,所述集成电路芯片装置用于执行神经网络的正向运算,所述神经网络包含多层,所述装置包括:处理电路以及外部接口;所述处理电路包括:主处理电路和基础处理电路,所述主处理电路与所述基础处理电路连接,所述连接用于传输输入数据、权值数据,
所述外部接口,用于接收第一计算指令;
所述处理电路,用于解析第一计算指令得到所述第一计算指令在所述正向运算的第i层包含的第一运算、第一计算指令对应的输入数据以及权值数据,所述i的取值范围为大于等于1的整数,如所述i大于等于2,所述输入数据为第i-1层的输出数据;
所述处理电路,还用于依据该输入数据、权值数据以及第一运算确定第一运算的第一复杂度,依据所述第一复杂度确定该输入数据以及权值数据在执行第一运算时的第一数据类型,所述第一数据类型包括:浮点类型或定点类型;
所述主处理电路,用于在第一复杂度大于预设阈值时,将权值和输入数据的部分或全部的数据转换成定点类型的数据,
主处理电路的控制电路,用于将权值的部分或全部的数据发送与主处理电路相连的基础处理电路;
主处理电路,还用于用于将输入数据的部分或全部的数据广播给基础处理电路;
所述处理电路,还用于将输入数据以及权值数据以第一数据类型执行所述正向运算的第一层包含的第一运算。
9.根据权利要求8所述的集成电路芯片装置,其特征在于,
所述处理电路,具体用于将所述第一复杂度与预设阈值比较,如所述第一复杂度高于所述预设阈值,计算装置确定所述第一数据类型为定点类型,如所述第一复杂度低于或等于所述预设阈值,计算装置确定所述第一数据类型为浮点类型。
10.根据权利要求9所述的集成电路芯片装置,其特征在于,所述集成电路芯片装置还包括:数据类型转换电路;
所述处理电路,还用于确定所述输入数据以及权值数据属于的第二数据类型,如所述第二数据类型与所述第一数据类型不同,向所述数据类型转换电路发送转换命令,
所述数据类型转换电路,用于依据所述转换命令将属于第二数据类型的所述输入数据以及属于第二数据类型的所述权值数据转换成属于第一数据类型的所述输入数据以及属于第一数据类型的所述权值数据。
11.根据权利要求8所述的集成电路芯片装置,其特征在于,如所述第一运算为卷积运算,所述输入数据为卷积输入数据,所述权值数据为卷积核,
所述处理电路,用于计算第一复杂度,第一复杂度=α*C*KW*KH*M*N*W*C*H;
其中,α为卷积系数,取值范围为大于1;C、KW、KH、M为卷积核四个维度的值,N、W、C、H为卷积输入数据四个维度的值;
所述处理电路,还用于如所述第一复杂度大于设定阈值,确定该卷积输入数据以及卷积核是否为浮点数据,如该卷积输入数据以及卷积核不为浮点数据,将该卷积输入数据转换成浮点数据,将卷积核转换成浮点数据,然后将卷积输入数据、卷积核以浮点数据类型执行卷积运算。
12.根据权利要求8所述的集成电路芯片装置,其特征在于,如所述第一运算为:矩阵乘矩阵运算,所述输入数据为所述矩阵乘矩阵运算的第一矩阵,所述权值为所述矩阵乘矩阵运算的第二矩阵;
所述处理电路,用于计算第一复杂度;
第一复杂度=β*F1*G*E*F2;其中,β为矩阵系数,取值范围为大于等于1,F1、G为第一矩阵的行、列值,E、F2为第二矩阵的行、列值;
所述处理电路,还用于如所述第一复杂度大于设定阈值,确定该第一矩阵以及第二矩阵是否为浮点数据,如该第一矩阵以及第二矩阵不为浮点数据,将该第一矩阵转换成浮点数据,将第二矩阵转换成浮点数据,然后将第一矩阵、第二矩阵以浮点数据类型执行矩阵乘矩阵运算。
13.根据权利要求8所述的集成电路芯片装置,其特征在于,如所述第一运算为:矩阵乘向量运算,所述输入数据为所述矩阵乘向量运算的第一矩阵,所述权值为所述矩阵乘向量运算的向量;
所述处理电路,用于计算第一复杂度;
第一复杂度=β*F1*G*F2;其中,β为矩阵系数,取值范围为大于等于1,F1、G为第一矩阵的行、列值,F2为向量的列值;
所述处理电路,还用于如所述第一复杂度大于设定阈值,确定该第一矩阵以及向量是否为浮点数据,如该第一矩阵以及向量不为浮点数据,将该第一矩阵转换成浮点数据,将向量转换成浮点数据,然后将第一矩阵、向量以浮点数据类型执行矩阵乘向量运算。
14.根据权利要求8-13任意一项所述的集成电路芯片装置,其特征在于,
所述第i层还包括:偏置运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合。
15.一种神经网络运算装置,其特征在于,所述神经网络运算装置包括一个或多个如权利要求8-14任意一项所述的集成电路芯片装置。
16.一种组合处理装置,其特征在于,所述组合处理装置包括:如权利要求15所述的神经网络运算装置、通用互联接口和通用处理装置;
所述神经网络运算装置通过所述通用互联接口与所述通用处理装置连接。
17.一种芯片,其特征在于,所述芯片集成如权利要求8-14任意一项所述的装置。
18.一种电子设备,其特征在于,所述电子设备包括如权利要求17所述的芯片。
Priority Applications (16)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711347407.1A CN109961131B (zh) | 2017-12-14 | 2017-12-14 | 神经网络正向运算方法及相关产品 |
TW107144040A TWI767098B (zh) | 2017-12-14 | 2018-12-07 | 神經網絡正向運算方法及相關產品 |
PCT/CN2019/073453 WO2019114842A1 (zh) | 2017-12-14 | 2019-01-28 | 一种集成电路芯片装置 |
US16/721,885 US11308389B2 (en) | 2017-12-14 | 2019-12-19 | Integrated circuit chip apparatus |
US16/721,875 US11562216B2 (en) | 2017-12-14 | 2019-12-19 | Integrated circuit chip apparatus |
US16/721,883 US20200192632A1 (en) | 2017-12-14 | 2019-12-19 | Integrated circuit chip apparatus |
US16/721,879 US11507809B2 (en) | 2017-12-14 | 2019-12-19 | Integrated circuit chip apparatus |
US16/721,892 US11507810B2 (en) | 2017-12-14 | 2019-12-19 | Integrated circuit chip apparatus |
US16/721,882 US11586891B2 (en) | 2017-12-14 | 2019-12-19 | Integrated circuit chip apparatus |
US16/721,888 US11704545B2 (en) | 2017-12-14 | 2019-12-19 | Integrated circuit chip apparatus |
US17/010,761 US11562219B2 (en) | 2017-12-14 | 2020-09-02 | Integrated circuit chip apparatus |
US17/688,844 US11900241B2 (en) | 2017-12-14 | 2022-03-07 | Integrated circuit chip apparatus |
US17/688,853 US11900242B2 (en) | 2017-12-14 | 2022-03-07 | Integrated circuit chip apparatus |
US18/085,273 US20230120704A1 (en) | 2017-12-14 | 2022-12-20 | Integrated circuit chip apparatus |
US18/085,332 US20230121164A1 (en) | 2017-12-14 | 2022-12-20 | Integrated circuit chip apparatus |
US18/404,878 US20240152741A1 (en) | 2017-12-14 | 2024-01-04 | Integrated circuit chip apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711347407.1A CN109961131B (zh) | 2017-12-14 | 2017-12-14 | 神经网络正向运算方法及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109961131A CN109961131A (zh) | 2019-07-02 |
CN109961131B true CN109961131B (zh) | 2020-05-08 |
Family
ID=67018648
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711347407.1A Active CN109961131B (zh) | 2017-12-14 | 2017-12-14 | 神经网络正向运算方法及相关产品 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109961131B (zh) |
TW (1) | TWI767098B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110490315B (zh) * | 2019-08-14 | 2023-05-23 | 中科寒武纪科技股份有限公司 | 神经网络的反向运算稀疏方法及相关产品 |
TWI737228B (zh) * | 2020-03-20 | 2021-08-21 | 國立清華大學 | 基於記憶體內運算電路架構之量化方法及其系統 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126481A (zh) * | 2016-06-29 | 2016-11-16 | 华为技术有限公司 | 一种计算引擎和电子设备 |
CN107330515A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行人工神经网络正向运算的装置和方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170061279A1 (en) * | 2015-01-14 | 2017-03-02 | Intel Corporation | Updating an artificial neural network using flexible fixed point representation |
CN106991477B (zh) * | 2016-01-20 | 2020-08-14 | 中科寒武纪科技股份有限公司 | 一种人工神经网络压缩编码装置和方法 |
-
2017
- 2017-12-14 CN CN201711347407.1A patent/CN109961131B/zh active Active
-
2018
- 2018-12-07 TW TW107144040A patent/TWI767098B/zh active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107330515A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行人工神经网络正向运算的装置和方法 |
CN106126481A (zh) * | 2016-06-29 | 2016-11-16 | 华为技术有限公司 | 一种计算引擎和电子设备 |
Non-Patent Citations (1)
Title |
---|
"深度卷积神经网络的数据表示方法分析与实践";王佩琪 等;《计算机研究与发展》;20170630;第1348-1356页 * |
Also Published As
Publication number | Publication date |
---|---|
TWI767098B (zh) | 2022-06-11 |
TW201928793A (zh) | 2019-07-16 |
CN109961131A (zh) | 2019-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109961138B (zh) | 神经网络训练方法及相关产品 | |
US11748604B2 (en) | Integrated circuit chip device | |
CN109978131B (zh) | 集成电路芯片装置、方法及相关产品 | |
US20220222515A1 (en) | Integrated circuit chip apparatus | |
CN109961136B (zh) | 集成电路芯片装置及相关产品 | |
CN109961131B (zh) | 神经网络正向运算方法及相关产品 | |
CN109961134B (zh) | 集成电路芯片装置及相关产品 | |
CN109977446B (zh) | 集成电路芯片装置及相关产品 | |
CN109961135B (zh) | 集成电路芯片装置及相关产品 | |
CN109978157B (zh) | 集成电路芯片装置及相关产品 | |
CN109978148B (zh) | 集成电路芯片装置及相关产品 | |
CN109978156B (zh) | 集成电路芯片装置及相关产品 | |
CN109960673B (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 |
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. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |