CN109993291A - 集成电路芯片装置及相关产品 - Google Patents
集成电路芯片装置及相关产品 Download PDFInfo
- Publication number
- CN109993291A CN109993291A CN201711499267.XA CN201711499267A CN109993291A CN 109993291 A CN109993291 A CN 109993291A CN 201711499267 A CN201711499267 A CN 201711499267A CN 109993291 A CN109993291 A CN 109993291A
- Authority
- CN
- China
- Prior art keywords
- data
- connection relationship
- circuit
- input
- neuron
- 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Stabilization Of Oscillater, Synchronisation, Frequency Synthesizers (AREA)
Abstract
本披露提供一种集成电路芯片装置及相关产品,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;所述基础处理电路包括:压缩映射电路;所述压缩映射电路,用于执行神经网络运算中的各个数据的压缩处理;所述主处理电路,用于执行神经网络运算中的各个连续的运算以及向所述多个基础处理电路传输数据;所述多个基础处理电路,用于依据所述传输数据的运算控制是否启动所述压缩映射电路对所述传输数据进行压缩处理;依据所述传输数据或压缩处理后的传输数据以并行方式执行神经网络中的运算,并将运算结果传输给所述主处理电路。本披露提供的技术方案具有计算量小,功耗低的优点。
Description
技术领域
本披露涉及神经网络领域,尤其涉及一种集成电路芯片装置及相关产品。
背景技术
人工神经网络(Artificial Neural Network,即ANN),是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。现有的神经网络的运算基于CPU(Central Processing Unit,中央处理器)或GPU(英文:Graphics Processing Unit,图形处理器)来实现神经网络的运算,此种运算的计算量大,功耗高。
发明内容
本披露实施例提供了一种集成电路芯片装置及相关产品,可提升计算装置的处理速度,提高效率。
第一方面,提供一种集成电路芯片装置,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;
所述基础处理电路包括:压缩映射电路包括;所述压缩映射电路,用于执行神经网络运算中的各个数据的压缩处理;
所述主处理电路,用于执行神经网络运算中的各个连续的运算以及向所述多个基础处理电路传输数据;
所述多个基础处理电路,用于依据所述传输数据的运算控制是否启动所述压缩映射电路对所述传输数据进行压缩处理;依据所述传输数据或压缩处理后的传输数据以并行方式执行神经网络中的运算,并将运算结果传输给所述主处理电路。
第二方面,提供一种神经网络运算装置,所述神经网络运算装置包括一个或多个第一方面提供的集成电路芯片装置。
第三方面,提供一种组合处理装置,所述组合处理装置包括:第二方面提供的神经网络运算装置、通用互联接口和通用处理装置;
所述神经网络运算装置通过所述通用互联接口与所述通用处理装置连接。
第四方面,提供一种芯片,所述芯片集成第一方面的装置、第二方面的装置或第三方面的装置。
第五方面,提供一种电子设备,所述电子设备包括第四方面的芯片。
第六方面,提供一种神经网络的运算方法,所述方法应用在集成电路芯片装置内,所述集成电路芯片装置包括:第一方面所述的集成电路芯片装置,所述集成电路芯片装置用于执行神经网络的运算。
可以看出,通过本披露实施例,提供压缩映射电路将数据块进行压缩处理后再运算,节省了传输资源以及计算资源,所以其具有功耗低,计算量小的优点。
附图说明
图1a是一种集成电路芯片装置结构示意图。
图1b是另一种集成电路芯片装置结构示意图。
图1c是一种基础处理电路的结构示意图。
图1d为本发明实施例提供的一种压缩映射电路的局部结构示意图。
图1e为本发明实施例提供的一种神经网络结构示意图。
图1f为本发明实施例提供的另一种压缩映射电路的局部结构示意图。
图1g为本发明实施例提供的另一种压缩映射电路的局部结构示意图。
图1h为本发明实施例提供的另一种压缩映射电路的局部结构示意图。
图1i为本发明实施例提供的另一种压缩映射电路的局部结构示意图。
图1j为本发明实施例提供的另一种压缩映射电路的局部结构示意图。
图1k为本发明实施例提供的另一种压缩映射电路的局部结构示意图。
图2为一种矩阵乘以向量流程示意图。
图2a是矩阵乘以向量的示意图。
图2b为一种矩阵乘以矩阵流程示意图。
图2c是矩阵Ai乘以向量B的示意图。
图2d是矩阵A乘以矩阵B的示意图。
图2e是矩阵Ai乘以矩阵B的示意图。
图3a为神经网络训练示意图。
图3b为卷积运算示意图。
图4为本披露实施例提供的一种神经网络芯片的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本披露方案,下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
在第一方面提供的装置中,所述装置还包括分支处理电路,所述分支处理电路设置在所述主处理电路与多个基础处理电路之间,用于在所述主处理电路与所述多个基础处理电路之间转发传输数据。
在第一方面提供的装置中,所述主处理电路,用于获取待计算的数据块以及运算指令,依据该运算指令对所述待计算的数据块划分成分发数据块以及广播数据块;对所述分发数据块进行拆分处理得到多个基本数据块,将所述多个基本数据块分发至与其连接的电路,将所述广播数据块广播至与其连接的电路;
所述基础处理电路,用于依据所述运算启动所述基础处理电路对所述基本数据块与所述广播数据块进行压缩处理后再执行内积运算得到运算结果,将所述运算结果发送至主处理电路;
所述主处理电路,用于对所述运算结果处理得到所述待计算的数据块以及运算指令的指令结果。
在第一方面提供的装置中,所述主处理电路,具体用于将所述广播数据块通过一次广播至所述多个基础处理电路。
在第一方面提供的装置中,所述主处理电路,具体用于将所述广播数据块分成多个部分广播数据块,将所述多个部分广播数据块通过多次广播至所述多个基础处理电路。
在第一方面提供的装置中,所述基础处理电路,具体用于将压缩处理后的所述部分广播数据块与压缩处理后的所述基本数据块执行一次内积处理后得到内积处理结果,将所述内积处理结果累加得到部分运算结果,将所述部分运算结果发送至所述主处理电路。
在第一方面提供的装置中,所述基础处理电路,具体用于复用n次该部分广播数据块执行该部分广播数据块与该n个基本数据块内积运算得到n个部分处理结果,将n个部分处理结果分别累加后得到n个部分运算结果,将所述n个部分运算结果发送至所述主处理电路,所述n为大于等于2的整数。
在第一方面提供的装置中,所述主处理电路包括:主寄存器或主片上缓存电路;
或所述基础处理电路包括:基本寄存器或基本片上缓存电路。
在第一方面提供的装置中,所述主处理电路包括:向量运算器电路、算数逻辑单元电路、累加器电路、矩阵转置电路、直接内存存取电路、压缩映射电路或数据重排电路中的一种或任意组合。
在第一方面提供的装置中,所述数据包括:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合。
在第一方面提供的装置中,如所述运算指令为乘法指令,所述主处理电路确定乘数数据块为广播数据块,被乘数数据块为分发数据块;
如所述运算指令为卷积指令,所述主处理电路确定输入数据块为广播数据块,卷积核为分发数据块。
在第六方面提供的方法中,所述神经网络的运算包括:卷积运算、矩阵乘矩阵运算、矩阵乘向量运算、偏执运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合。
参阅图1a,图1a为一种集成电路芯片装置的结构示意图,如图1a所示,该芯片装置包括:主处理电路、基本处理电路和分支处理电路(可选的)。其中,
主处理电路可以包括寄存器和/或片上缓存电路,该主处理电路还可以包括:控制电路、向量运算器电路、ALU(arithmetic and logic unit,算数逻辑单元)电路、累加器电路、DMA(Direct Memory Access,直接内存存取)电路等电路,当然在实际应用中,上述主处理电路还可以添加,转换电路(例如矩阵转置电路)、数据重排电路或激活电路等等其他的电路;
可选的,主处理电路可以包括:压缩映射电路,压缩映射电路可以用于对接收或发送的数据进行压缩处理,在实际应用中例如将为0或者小于预设阈值(如0.1)的数据进行剔除。所述预设阈值为用户侧或终端设备侧自定义设置的,例如0.1、0.05等等。本发明并不限制上述压缩映射电路的具体形式。关于所述压缩处理将在下文进行具体阐述。
主处理电路还包括数据发送电路、数据接收电路或接口,该数据发送电路可以集成数据分发电路以及数据广播电路,当然在实际应用中,数据分发电路以及数据广播电路也可以分别设置;在实际应用中上述数据发送电路以及数据接收电路也可以集成在一起形成数据收发电路。对于广播数据,即需要发送给每个基础处理电路的数据。对于分发数据,即需要有选择的发送给部分基础处理电路的数据,具体的选择方式可以由主处理电路依据负载以及计算方式进行具体的确定。对于广播发送方式,即将广播数据以广播形式发送至每个基础处理电路。(在实际应用中,通过一次广播的方式将广播数据发送至每个基础处理电路,也可以通过多次广播的方式将广播数据发送至每个基础处理电路,本申请具体实施方式并不限制上述广播的次数),对于分发发送方式,即将分发数据有选择的发送给部分基础处理电路。
在实现分发数据时,主处理电路的控制电路向部分或者全部基础处理电路传输数据(该数据可以相同,也可以不同,具体的,如果采用分发的方式发送数据,各个接收数据的基础处理电路收到的数据可以不同,当然也可以有部分基础处理电路收到的数据相同;
具体地,广播数据时,主处理电路的控制电路向部分或者全部基础处理电路传输数据,各个接收数据的基础处理电路可以收到相同的数据。
可选的,上述主处理电路的向量运算器电路可以执行向量运算,包括但不限于:两个向量加减乘除,向量与常数加、减、乘、除运算,或者对向量中的每个元素执行任意运算。其中,连续的运算具体可以为,向量与常数加、减、乘、除运算、激活运算、累加运算等等。
每个基础处理电路可以包括基础寄存器和/或基础片上缓存电路;每个基础处理电路还可以包括:内积运算器电路、向量运算器电路、累加器电路等中一个或任意组合。上述内积运算器电路、向量运算器电路、累加器电路都可以是集成电路,上述内积运算器电路、向量运算器电路、累加器电路也可以为单独设置的电路。
该芯片装置可选的还可以包括一个或多个分支处理电路,如具有分支处理电路时,其中主处理电路与分支处理电路连接,该分支处理电路与基本处理电路连接,该基本处理电路的内积运算器电路用于执行数据块之间的内积运算,该主处理电路的控制电路控制数据接收电路或数据发送电路收发外部数据,以及通过控制电路控制数据发送电路将外部数据分发至分支处理电路,该分支处理电路用于收发主处理电路或基本处理电路的数据。如图1a所示的结构适合复杂数据的计算,因为对于主处理电路来说,其连接的单元的数量有限,所以需要在主处理电路与基本处理电路之间添加分支处理电路以实现更多的基本处理电路的接入,从而实现对复杂数据块的计算。分支处理电路和基础处理电路的连接结构可以是任意的,不局限在图1a的H型结构。可选的,主处理电路到基础处理电路是广播或分发的结构,基础处理电路到主处理电路是收集(gather)的结构。广播,分发和收集的定义如下,对于分发或广播结构,此时的基础处理电路的数量大于主处理电路,即1个主处理电路对应多个基础处理电路,即从主处理电路到多个基础处理电路为广播或分发的结构,反之,从多个基础处理电路到主处理电路可以为收集结构。
基础处理电路,接收主处理电路分发或者广播的数据保存到基础处理电路的片上缓存中,可以进行运算产生结果,可以向主处理电路发送数据。
基础处理电路中所涉及到的数据可以是经过压缩处理后的数据,其中压缩处理涉及的具体实施方式将在后续进行阐述。
可选的,每个基础处理电路均可以包括压缩映射电路,也可以在部分基础处理电路配置压缩映射电路;压缩映射电路可以用于对接收或发送的数据进行压缩处理。本发明并不限制上述压缩映射电路的具体形式。
可选的,该基础处理电路的向量运算器电路可以对压缩处理后的两个向量执行的向量运算,当然在实际应用中,基础处理电路的内积运算器电路可以对压缩处理后的两个向量执行内积运算,累加器电路也可以对内积运算的结果进行累加。
在一种可选方案中,两个向量可以存放在片上缓存和/或寄存器中,基础处理电路可以根据实际计算的需要提取两个向量执行运算。该运算包括但不限于:内积运算、乘法运算、加法运算或其他的运算。
在一种可选方案中,内积运算的结果可以累加到片上缓存和/或寄存器上;其可选方案的优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗。
在一种可选方案中,内积运算的结果不进行累加,直接作为结果传输;此技术方案的优点是,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。
在一种可选方案中,每个基础处理电路可以执行多组两个向量的内积运算,也可以对多组内积运算的结果分别进行累加;
在一种可选方案中,多组的两个向量数据可以存放在片上缓存和/或寄存器中;
在一种可选方案中,多组内积运算的结果可以分别累加到片上缓存和/或寄存器中;
在一种可选方案中,各组内积运算的结果可以不进行累加,直接作为结果传输;
在一种可选方案中,每个基础处理电路可以执行同一个向量与多个向量分别进行内积运算的操作(“一对多”内积,即多组内积里每组的两个向量中有一个向量是共享的),并将每个向量对应的内积结果分别进行累加。此技术方案可以实现同一套权值对不同的输入数据进行多次计算,增加了数据复用,减少基础处理电路内部数据的数据传输量,提高计算效率,降低功耗。
具体地,计算内积使用的数据中,各组共享的向量和每组的另一个向量(即每组之间不同的那个向量)的数据来源可以不同:
在一种可选方案中,在计算内积时,各组共享的向量来自主处理电路或者分支处理电路的广播或者分发;
在一种可选方案中,在计算内积时,各组共享的向量来自片上缓存;
在一种可选方案中,在计算内积时,各组共享的向量来自寄存器;
在一种可选方案中,在计算内积时,每组的另一个非共享向量来自主处理电路或者分支处理电路的广播或者分发;
在一种可选方案中,在计算内积时,每组的另一个非共享向量来自从片上缓存;
在一种可选方案中,在计算内积时,每组的另一个非共享向量来自寄存器;
在一种可选方案中,在进行多组的内积运算时,每组共享的向量在基础处理电路的片上缓存和/寄存器中保留任意份数;
在一种可选方案中,共享向量可以对应每组内积各保留一份;
在一种可选方案中,共享向量可以只保留一份;
具体地,多组内积运算的结果可以分别累加到片上缓存和/或寄存器中;
具体地,各组内积运算的结果可以不进行累加,直接作为结果传输;
参阅图1a所示的结构,其包含一主处理电路(可以执行向量操作),多基础处理电路(可以执行内积操作)。这样组合的好处是:装置不仅能使用基础处理电路执行矩阵和向量乘法运算,也能使用主处理电路执行其他任意的向量运算,使装置在有限的硬件电路的配置下,能够更快的完成更多的运算,减少了与装置外部进行数据传输的次数,提高了计算效率,降低了功耗。另外,本芯片在基础处理电路和/或主处理电路均可以设置压缩映射电路,这样在进行神经网络计算时能够减少计算的数据量,并且本芯片可以依据各个电路(主要是主处理电路和基础处理电路)的运算量(即负载量)动态的分配由那个电路来进行数据的压缩处理,这样能够减少数据计算的复杂程序,降低功耗,并且动态的分配数据的压缩处理能够实现不影响芯片的计算效率。该分配的方式包括但不限于:负载均衡、负载最小值分配等等方式。
参阅图1b所示的装置,图1b所示的装置为无分支处理电路的计算装置,如图1b所示的装置,其包括:主处理电路以及N个基础处理电路,其中,主处理电路(具体的结构如图1c所示)与N个基础处理电路可以直接或间接连接,如为间接连接的方式时,一种可选的方案如图1a所示可以包括N/4个分支处理电路,每个分支处理电路分别连接4个基础处理电路,对于主处理电路以及N个基础处理电路分别包含的电路可以参见上述如图1a所示的描述,这里不再赘述,这里需要说明的是,上述基础处理电路还可以设置在分支处理电路内,另外,每个分支处理电路连接基础处理电路的数量也可以不局限于4个,厂家可以根据实际需要进行配置。该上述主处理电路和/或N个基础处理电路均可以包括压缩映射电路,具体的,可以是主处理电路包括压缩映射电路,也可以是N个基础处理电路或其中的一部分包括压缩映射电路,也可以是主处理电路和N个基础处理电路或其中的一部分均包括。上述主处理电路可以根据神经网络计算指令动态的分配数据压缩处理步骤的操作实体,具体的,主处理电路可以根据自身的负载确定是否对接收到的数据执行数据压缩处理步骤,具体的,可以将负载的值设置多个区间,每个区间对应分配数据压缩处理的执行主体,例如,以3个区间为例,区间1的负载值较低,可以由主处理电路单独执行数据压缩处理步骤,区间2负载值位于区间1以及区间3之间,可以由主处理电路或N个基础处理电路共同执行数据压缩处理步骤,区间3负载值较高,可以由N个基础处理电路执行数据压缩处理步骤。对此,可以以明示的方式来执行,例如主处理电路可以配置一个特殊指示或指令,当基础处理电路接收到该特殊指示或指令时,确定执行数据压缩处理步骤,如基础处理电路未接收到特殊指示或指令时,确定不执行数据压缩处理步骤。又如,可以以暗示的方式来执行,例如,基础处理电路接收到稀疏数据(即含0,或包括小于预设阈值的数据大于预设数量)且确定需要执行内积运算时,将该稀疏数据进行压缩处理。
下面阐述本申请涉及的数据压缩处理的相关实施例。需要说明的是,本申请中的数据可以是神经网络中的输入神经元或权值,其具体可为矩阵数据或向量数据等,本申请不做限定。也即是本申请下文阐述的数据或数据块可为神经网络中的输入神经元或权值,它们可以矩阵或向量等形式体现。
由于神经网络是一个高计算量和高访存的算法,权值越多,计算量和访存量都会增大。特别是,针对权值较小(如为0,或小于设定数值的权值)的情况下,为提高计算速率、减小开销需对这些权值较小的数据进行压缩处理。在实际应用中,数据压缩处理在稀疏神经网络中应用,效果最为明显,如减小数据计算的工作量、减小数据额外开销,提高数据计算速率等。
以输入数据为例,具体阐述所述压缩映射电路的数据压缩处理实施例。所述输入数据包括但不限于至少一个输入神经元和/或至少一个权值。
第一种实施例中:压缩映射电路对输入神经元和权值均进行压缩处理
压缩映射电路101接收到输入数据(具体可为主压缩处理电路发送的所述待计算的数据块)之后,可对所述输入数据进行压缩处理,以得到压缩处理后的输入数据,所述输入数据包括至少一个输入神经元和至少一个权值,所述压缩处理后的输入数据包括压缩处理后的输入神经元和压缩处理后的权值。
上述输入数据包括至少一个输入神经元和至少一个权值。上述压缩映射电路101确定所述至少一个输入神经元中每个输入神经元的绝对值是否大于第一阈值。当上述输入神经元的绝对值小于或者等于该第一阈值时,上述压缩映射电路101将该输入神经元删除;当上述输入神经元的绝对值大于上述第一阈值时,上述压缩映射电路101保留该输入神经元,该压缩映射电路101将删除后的输出神经元输出,作为压缩处理后的输入神经元。上述压缩映射电路101获取输入神经元的连接关系数据,该输入神经元的连接关系数据表示上述至少一个输入神经元中绝对值大于上述第一阈值的输入神经元的位置信息。上述压缩映射电路101确定上述至少一个权值中每个权值的绝对值是否大于第二阈值。当权值的绝对值小于或者等于上述第二阈值时,上述压缩映射电路101将该权值删除,并根据上述输入神经元的连接关系数据将从上述删除后的权值中选择相关的权值输出,作为压缩处理后的权值。
在一种可行的实施例中,上述输入数据包括至少一个输入神经元和至少一个权值。上述压缩映射电路101确定所述至少一个权值中每个权值的绝对值是否大于第二阈值。当上述权值的绝对值小于或者等于该第二阈值时,上述压缩映射电路101将该权值删除;当上述权值的绝对值大于上述第二阈值时,上述压缩映射电路101保留该权值,该压缩映射电路101将删除后的权值输出,作为压缩处理后的权值。上述压缩映射电路101获取权值的连接关系数据,该权值的连接关系数据表示上述至少一个输入神经元与输出神经元之间的连接关系的数据。上述压缩映射电路101确定上述至少一个输入神经元中每个输入神经元的绝对值是否大于第一阈值。当输入神经元的绝对值小于或者等于上述第一阈值时,上述压缩映射电路101将该输入神经元删除,并根据上述权值的连接关系数据将从上述删除后的输入神经元中选择相关的输入神经元输出,作为压缩处理后的输入神经元。
进一步地,上述压缩映射电路101将上述压缩处理后的输入神经元和压缩处理后的权值按照一一对应的格式存储到存储电路中。
具体地,上述压缩映射电路101对上述压缩处理后的输入神经元和上述压缩处理后的权值按照一一对应的格式进行存储的具体方式是将上述压缩处理后的输入神经元中的每个压缩处理后的输入神经元和与其对应的压缩处理后的权值作为一个数据集,并将该数据集存储到存储电路中。
具体地,如图1d所示,上述压缩映射电路101包括:
第一稀疏处理单元1011,用于对第二输入数据进行压缩处理,以得到第三输出数据和第二输出数据,并将所述第三输出数据传输至第一数据处理单元1012。
第一数据处理单元1012,用于接收第一输入数据和接收所述第三输出数据,并根据上述第三输出数据和第一输入数据输出第一输出数据。
其中,当所述第一输入数据包括至少一个输入神经元,所述第二输入数据包括至少一个权值时,所述第一输出数据为压缩处理后的输入神经元,所述第二输出数据为压缩处理后的权值,所述第三输出数据为权值的连接关系数据;当所述第一输入数据包括至少一个权值,所述第二输入数据包括至少一个输入神经元时,所述第一输出数据为压缩处理后的权值,所述第二输出数据为压缩处理后的输入神经元,所述第三输出数据为输入神经元的连接关系数据。
具体地,当上述第二输入数据为权值时,且权值的形式为wij,该wij表示第i个输入神经元与第j个输出神经元之间的权值;上述第一稀疏处理单元1011根据权值确定上述连接关系数据(即上述第三输出数据),并将上述权值中绝对值小于或者等于第二阈值的权值删除,得到压缩处理后的权值(即上述第二输出数据);当上述第二输入数据为输入神经元时,上述第一稀疏处理单元1011根据输入神经元得到连接关系数据,并将该输入神经元中的绝对值小于或等于上述第一阈值的输入神经元删除,以得到压缩处理后的输入神经元。
可选地,上述第一阈值可为0.1、0.08、0.05、0.02、0.01、0或者其他值。上述第二阈值可为0.1、0.08、0.06、0.05、0.02、0.01、0或者其他值。上述第一阈值和上述第二阈值可以一致,也可以不一致。
其中,上述连接关系数据可以步长索引或者直接索引的形式表示。
具体地,以直接索引形式表示的连接关系数据为由0和1组成的字符串,当上述第二输入数据为权值时,0表示该权值的绝对值小于或者等于上述第二阈值,即该权值对应的输入神经元与输出神经元之间没有连接,1表示该权值的绝对值大于上述第二阈值,即该权值对应的输入神经元与输出神经元之间有连接。以直接索引形式表示的连接关系数据有两种表示顺序:以每个输出神经元与所有输入神经元的连接状态组成一个0和1的字符串来表示权值的连接关系;或者每个输入神经元与所有输出神经元的连接状态组成一个0和1的字符串来表示权值的连接关系。当上述第二输入数据为输入神经元时,0表示该输入神经元的绝对值小于或者等于上述第一阈值,1表示该输入神经元的绝对值大于上述第一阈值。
应理解的,所述连接关系数据也可用向量/矩阵等形式体现,其中,0表示该位置对应的输入神经元/权值的数据为0或者小于第一阈值;相应地,1表示该位置对应的输入神经元/权值的数据不为0或者大于第一阈值等,本申请不做限定。可选的,所述数据的连接关系数据也可称为标记mask矩阵/mask向量。
当上述第二输入数据为权值时,以步长索引形式表示的连接关系数据为与输出神经元有连接的输入神经元与上一个与该输出神经元有连接的输入神经元之间的距离值组成的字符串;当上述第二输入数据为输入神经元时,以步长索引表示的数据以当前绝对值大于上述第一阈值的输入神经元与上一个绝对值大于上述第一阈值的输入神经元之间的距离值组成的字符串表示。
举例说明,假设上述第一阈值和上述第二阈值均为为0.01,参见图1e,图1e为本发明实施例提供的一种神经网络的示意图。如图1e中的a图所示,上述第一输入数据为输入神经元,包括输入神经元i1、i2、i3和i4,上述第二输入数据为权值。对于输出神经元o1,权值为w11,w21,w31和w41;对于输出神经元o2,权值w12,w22,w32和w42,其中权值w21,w12和w42的值为0,其绝对值均小于上述第一阈值0.01,上述第一稀疏处理单元1011确定上述输入神经元i2和输出神经元o1没有连接,上述输入神经元i1和i4与输出神经元o2没有连接,上述输入神经元i1、i3和i4与上述输出神经元o1有连接,上述输入神经元i2和i3与输出神经元o2有连接。以每个输出神经元与所有输入神经元的连接状态表示上述连接关系数据,则上述输出神经元o1的连接关系数据为“1011”,输出神经元o2的连接关系数据为“0110”(即上述连接关系数据为“10110110”);以每个输入神经元与所有输出神经元的连接关系,则输入神经元i1的连接关系数据为“10”,输入神经元i2的连接关系数据为“01”,输入神经元i3的连接关系数据为“11”,输入神经元i4的连接关系数据为“10”(即上述连接关系数据为“10011110”)。
对于上述输出神经元o1,上述压缩映射电路101将上述i1与w11,i3与w31和i4与w41分别作为一个数据集,并将该数据集存储到存储电路中;对于输出神经元o2,上述压缩映射电路101将上述i2与w22和i3与w32分别作为一个数据集,并将该数据集存储到存储电路中。
针对上述输出神经元o1,上述第二输出数据为w11,w31和w41;针对上述输出神经元o2,上述第二输出数据为w22和w32。
当上述第二输入数据为输入神经元i1、i2、i3和i4,且该输入神经元的值分别为1,0,3,5则上述连接关系数据(即上述第三输出数据)为“1011”,上述第二输出数据为1,3,5。
如图1e中的b图所示,上述第一输入数据包括输入神经元i1、i2、i3和i4,上述第二输入数据为权值。对于输出神经元o1,权值为w11,w21,w31和w41;对于输出神经元o2,权值w12,w22,w32和w42,其中权值w21,w12和w42的值为0,上述稀疏处理单元1011确定上述输入神经元i1、i3和i4与上述输出神经元o1有连接,上述输入神经元i2和i3与输出神经元o2有连接。上述输出神经元o1与输入神经元之间的连接关系数据为“021”。其中,该连接关系数据中第一个数字“0”表示第一个与输出神经元o1有连接的输入神经元与第一个输入神经元之间的距离为0,即第一个与输出神经元o1有连接的输入神经元为输入神经元i1;上述连接关系数据中第二个数字“2”表示第二个与输出神经元o1有连接的输入神经元与第一个与输出神经元o1有连接的输入神经元(即输入神经元i1)之间的距离为2,即第二个与输出神经元o1有连接的输入神经元为输入神经元i3;上述连接关系数据中第三个数字“1”表示第三个与输出神经元o1有连接的输入神经元与第二个与该输出神经元o1有连接的输入神经元之间的距离为1,即第三个与输出神经元o1有连接的输入神经元为输入神经元i4。
上述输出神经元o2与输入神经元之间的连接关系数据为“11”。其中,该连接关系数据中的第一数字“1”表示第一个与输出神经元o2有连接的输入神经元与第一个输入神经元(即输入神经元i1)之间的距离为,即该第一个与输出神经元o2有连接关系的输入神经元为输出神经元i2;上述连接关系数据中的第二数字“1”表示第二个与输出神经元o2有连接的输入神经元与第一个与输出神经元o2有连接的输入神经元的距离为1,即第二个与输出神经元o2有连接的输入神经元为输入神经元i3。
对于上述输出神经元o1,上述压缩映射电路101将上述i1与w11,i3与w31和i4与w41分别作为一个数据集,并将该数据集存储到存储电路中;对于输出神经元o2,上述压缩映射电路101将上述i2与w22和i3与w32分别作为一个数据集,并将该数据集存储到存储电路中。
针对上述输出神经元o1,上述第二输出数据为w11,w31和w41;针对上述输出神经元o2,上述第二输出数据为w22和w32。
当上述第二输入数据为输入神经元i1、i2、i3和i4,且该输入神经元的值分别为1,0,3,5则上述连接关系数据即上述第三输出数据为“021”,上述第二输出数据为1,3,5。
当上述第一输入数据为输入神经元时,则上述第二输入数据为权值,上述第三输出数据为输出神经元与上述输入神经元之间的连接关系数据。上述第一数据处理单元1012接收到上述输入神经元后,将该输入神经元中绝对值小于或等于上述第二阈值的输入神经元剔除,并根据上述连接关系数据,从剔除后的输入神经元中选择与上述权值相关的输入神经元,作为第一输出数据输出。
举例说明,假设上述第一阈值为0,上述输入神经元i1、i2、i3和i4,其值分别为1,0,3和5,对于输出神经元o1,上述第三输出数据(即连接关系数据)为“021”,上述第二输出数据为w11,w31和w41。上述第一数据处理单元1012将上述输入神经元i1、i2、i3和i4中值为0的输入神经元剔除,得到输入神经元i1、i3和i4。该第一数据处理单元1012根据上述第三输出数据“021”确定上述输入神经元i1、i3和i4均与上述输出神经元均有连接,故上述数据处理单元1012将上述输入神经元i1、i3和i4作为第一输出数据输出,即输出1,3,5。
当上述第一输入数据为权值,上述第二输入数据为输入神经元时,上述第三输出数据为上述输入神经元的连接关系数据。上述第一数据处理单元1012接收到上述权值w11,w21,w31和w41后,将该权值中绝对值小于上述第一阈值的权值剔除,并根据上述连接关系数据,从上述剔除后的权值中选择与该上述输入神经元相关的权值,作为第一输出数据并输出。
举例说明,假设上述第二阈值为0,上述权值w11,w21,w31和w41,其值分别为1,0,3和4,对于输出神经元o1,上述第三输出数据(即连接关系数据)为“1011”,上述第二输出数据为i1,i3和i5。上述第一数据处理单元1012将上述权值w11,w21,w31和w41中值为0的输入神经元剔除,得到权值w11,w21,w31和w41。该第一数据处理单元1012根据上述第三输出数据“1011”确定上述输入神经元i1、i2,i3和i4中的输入神经元i2的值为0,故上述第一数据处理单元1012将上述输入神经元1,3和4作为第一输出数据输出。
在一种可行的实施例中,第三输入数据和第四输入数据分别为至少一个权值和至少一个输入神经元,上述压缩映射电路101确定上述至少一个输入神经元中绝对值大于上述第一阈值的输入神经元的位置,并获取输入神经元的连接关系数据;上述压缩映射电路101确定上述至少一个权值中绝对值大于上述第二阈值的权值的位置,并获取权值的连接关系数据。上述压缩映射电路101根据上述权值的连接关系数据和输入神经元的连接关系数据得到一个新的连接关系数据,该连接关系数据表示上述至少一个输入神经元中绝对值大于上述第一阈值的输入神经元与输出神经元之间的关系和对应的权值的值。压缩映射电路101根据该新的连接关系数据、上述至少一个输入神经元和上述至少一个权值获取压缩处理后的输入神经元和压缩处理后的权值。
进一步地,上述压缩映射电路101将上述压缩处理后的输入神经元和压缩处理后的权值按照一一对应的格式存储到存储电路中。
具体地,上述压缩映射电路101对上述压缩处理后的输入神经元和上述压缩处理后的权值按照一一对应的格式进行存储的具体方式是将上述压缩处理后的输入神经元中的每个压缩处理后的输入神经元和与其对应的压缩处理后的权值作为一个数据集,并将该数据集存储到存储电路中。
对于压缩映射电路101包括第一稀疏处理单元1011和第一数据处理单元1012的情况,压缩映射电路101中的稀疏处理单元1011对输入神经元或者权值进行稀疏化压缩处理,减小了权值或者输入神经元的数量,进而减小了运算单元进行运算的次数,提高了运算效率。
具体地,如图1f所示,上述压缩映射电路101包括:
第二稀疏处理单元1013,用于接收到第三输入数据后,根据所述第三输入数据得到第一连接关系数据,并将该第一连接关系数据传输至连接关系处理单元1015;
第三稀疏处理单元1014,用于接收到第四输入数据后,根据所述第四输入数据得到第二连接关系数据,并将该第二连接关系数据传输至所述连接关系处理单元1015;
所述连接关系处理单元1015,用于根据所述第一连接关系数据和所述第二连接关系数据,以得到第三连接关系数据,并将该第三连接关系数据传输至第二数据处理单元1016;
所述第二数据处理单元1016,用于在接收到所述第三输入数据,所述第四输入数据和所述第三连接关系数据后,根据所述第三连接关系数据对所述第三输入数据和所述第四输入数据进行压缩处理,以得到第四输出数据和第五输出数据;
其中,当所述第三输入数据包括至少一个输入神经元,第四输入数据包括至少一个权值时,所述第一连接关系数据为输入神经元的连接关系数据,所述第二连接关系数据为权值的连接关系数据,所述第四输出数据为压缩处理后的输入神经元,所述第五输出数据为压缩处理后的权值;当所述第三输入数据包括至少一个权值,所述第四输入数据包括至少一个输入神经元时,所述第一连接关系数据为权值的连接关系数据,所述第二连接关系数据为输入神经元的连接关系数据,所述第四输出数据为压缩处理后的权值,所述第五输出数据为压缩处理后的输入神经元。
当上述第三输入数据包括至少一个输入神经元时,上述第一连接关系数据为用于表示该至少一个输入神经元中绝对值大于上述第一阈值的输入神经元的位置的字符串;当上述第三输入数据包括至少一个权值时,上述第一连接关系数据为用于表示输入神经元与输出神经元之间是否有连接的字符串。
当上述第四输入数据包括至少一个输入神经元时,上述第二连接关系数据为用于表示该至少一个输入神经元中绝对值大于上述第一阈值的输入神经元的位置的字符串;当上述第四输入数据包括至少一个权值时,上述第二连接关系数据为用于表示输入神经元与输出神经元之间是否有连接的字符串。
需要说明的是,上述第一连接关系数据、第二连接关系数据和第三连接关系数据均可以步长索引或者直接索引的形式表示,具体可参见上述相关描述。
换句话说,上述连接关系处理单元1015对上述第一连接关系数据和上述第二连接关系数据进行压缩处理,以得到第三连接关系数据。该第三连接关系数据可以直接索引或者步长索引的形式表示。
具体地,上述当上述第一连接关系数据和上述第二连接关系数据均以直接索引的形式表示时,上述连接关系处理单元1015对上述第一连接关系数据和上述第二连接关系数据进行与操作,以得到第三连接关系数据,该第三连接关系数据是以直接索引的形式表示的。
需要说明的是,表示上述第一连接关系数据和第二连接关系数据的字符串在内存中是按照物理地址高低的顺序存储的,可以是由高到低的顺序存储的,也可以是由低到高的顺序存储的。
当上述第一连接关系数据和上述第二连接关系数据均以步长索引的形式表示,且表示上述第一连接关系数据和第二连接关系数据的字符串是按照物理地址由低到高的顺序存储时,上述连接关系处理单元1015将上述第一连接关系数据的字符串中的每一个元素与存储物理地址低于该元素存储的物理地址的元素进行累加,得到的新的元素组成第四连接关系数据;同理,上述连接关系处理单元1015对上述第二连接关系数据的字符串进行同样的压缩处理,得到第五连接关系数据。然后上述连接关系处理单元1015从上述第四连接关系数据的字符串和上述第五连接关系数据的字符串中,选取相同的元素,按照元素值从小到大的顺序排序,组成一个新的字符串。上述连接关系处理单元1015将上述新的字符串中将每一个元素与其相邻且值小于该元素值的元素进行相减,以得到一个新的元素。按照该方法,对上述新的字串中的每个元素进行相应的操作,以得到上述第三连接关系数据。
举例说明,假设以步长索引的形式表示上述第一连接关系数据和上述第二连接关系数据,上述第一连接关系数据的字符串为“01111”,上述第二连接关系数据的字符串为“022”,上述连接关系处理单元1015将上述第一连接关系数据的字符串中的每个元素与其相邻的前一个元素相加,得到第四连接关系数据“01234”;同理,上述连接关系处理单元1015对上述第二连接关系数据的字符串进行相同的压缩处理后得到的第五连接关系数据为“024”。上述连接关系处理单元1015从上述第四连接关系数据“01234”和上述第五连接关系数据“024”选组相同的元素,以得到新的字符串“024”。上述连接关系处理单元1015将该新的字符串中的每个元素与其相邻的前一个元素进行相减,即0,(2-0),(4-2),以得到上述第三连接数据“022”。
当上述第一连接关系数据和上述第二连接关系数据中的任意一个以步长索引的形式表示,另一个以直接索引的形式表示时,上述连接关系处理单元1015将上述以步长索引表示的连接关系数据转换成以直接索引的表示形式或者将以直接索引表示的连接关系数据转换成以步长索引表示的形式。然后上述连接关系处理单元1015按照上述方法进行压缩处理,以得到上述第三连接关系数据(即上述第五输出数据)。
可选地,当上述第一连接关系数据和上述第二连接关系数据均以直接索引的形式表示时,上述连接关系处理单元1015将上述第一连接关系数据和上述第二连接关系数据均转换成以步长索引的形式表示的连接关系数据,然后按照上述方法对上述第一连接关系数据和上述第二连接关系数据进行压缩处理,以得到上述第三连接关系数据。
具体地,上述第三输入数据可为输入神经元或者权值、第四输入数据可为输入神经元或者权值,且上述第三输入数据和第四输入数据不一致。上述第二数据处理单元1016根据上述第三连接关系数据从上述第三输入数据(即输入神经元或者权值)中选取与该第三连接关系数据相关的数据,作为第四输出数据;上述第二数据处理单元1016根据上述第三连接关系数据从上述第四输入数据中选取与该第三连接关系数据相关的数据,作为第五输出数据。
进一步地,上述第二数据处理单元1016将上述压缩处理后的输入神经元中的每个压缩处理后的输入神经元与其对应的压缩处理后的权值作为一个数据集,将该数据集存储出存储电路中。
举例说明,假设上述第三输入数据包括输入神经元i1,i2,i3和i4,上述第四输入数据包括权值w11,w21,w31和w41,上述第三连接关系数据以直接索引方式表示,为“1010”,则上述第二数据处理单元1016输出的第四输出数据为输入神经元i1和i3,输出的第五输出数据为权值w11和w31。上述第二数据处理单元1016将输入神经元i1与权值w11和输入神经元i3与权值w31分别作为一个数据集,并将该数据集存储到存储电路中。
对于压缩映射电路101包括第二稀疏处理单元1013,第三稀疏处理单元1014、连接关系处理单元1015和第二数据处理单元1016的情况,压缩映射电路101中的稀疏处理单元对输入神经元和权值均进行稀疏化压缩处理,使得输入神经元和权值的数量进一步减小,进而减小了运算单元的运算量,提高了运算效率。
可选地,所述压缩映射电路101对所述输入数据进行压缩处理之前,所述压缩映射电路101还用于:
对所述至少一个输入神经元进行分组,以得到M组输入神经元,所述M为大于或者等于1的整数;
判断所述M组输入神经元的每一组输入神经元是否满足第一预设条件,所述第一预设条件包括一组输入神经元中绝对值小于或者等于第三阈值的输入神经元的个数小于或者等于第四阈值;
当所述M组输入神经元任意一组输入神经元不满足所述第一预设条件时,将该组输入神经元删除;
对所述至少一个权值进行分组,以得到N组权值,所述N为大于或者等于1的整数;
判断所述N组权值的每一组权值是否满足第二预设条件,所述第二预设条件包括一组权值中绝对值小于或者等于第五阈值的权值的个数小于或者等于第六阈值;
当所述N组权值任意一组权值不满足所述第二预设条件时,将该组权值删除。
可选地,上述第三阈值可为0.5,0.2,0.1,0.05,0.025,0.0,0或者其他值。上述第四阈值与上述一组输入神经元中输入神经元的个数相关。可选地,该第四阈值=一组输入神经元中的输入神经元个数-1或者该第四阈值为其他值。可选地,上述第五阈值可为0.5,0.2,0.1,0.05,0.025,0.01,0或者其他值。其中,上述第六阈值与上述一组权值中的权值个数相关。可选地,该第六阈值=一组权值中的权值个数-1或者该第六阈值为其他值。
需要说明的是,上述第三阈值和上述第五阈值可相同或者不同,上述第四阈值和上述第六阈值可相同或者不同。可选的,存储电路可用于存储上述压缩处理后的输入神经元、压缩处理后的权值和相关的运算指令。
在可选实施例中,如图1g所示的压缩映射电路在已知输入数据的连接关系数据的情况下,可利用该输入数据的连接关系数据对所述输入数据进行压缩处理。所述输入数据包括至少一个输入神经元或者至少一个权值。具体如图1g所示,上述压缩映射电路601包括:
输入数据缓存单元6011,用于缓存第一输入数据,该第一输入数据包括至少一个输入神经元或者至少一个权值。
连接关系缓存单元6012,用于缓存第一输入数据的连接关系数据,即上述输入神经元的连接关系数据或者上述权值的连接关系数据。
其中,上述输入神经元的连接关系数据为用于表示该输入神经元中绝对值是否小于或者等于第一阈值的字符串,上述权值的连接关系数据为表示该权值绝对值是否小于或者等于上述第一阈值的字符串,或者为表示该权值对应的输入神经元和输出神经元之间是否有连接的字符串。该输入神经元的连接关系数据和权值的连接关系数据可以直接索引或者步长索引的形式表示。
需要说明的是,上述直接索引和步长索引的描述可参见上述图1b所示实施例的相关描述。
第四稀疏处理单元6013,用于根据所述第一输入数据的连接关系数据对所述第一输入数据进行压缩处理,以得到压缩处理后的第一输入数据,并将该压缩处理后的第一输入数据存储到上述第一输入缓存单元中605。
其中,当上述第一输入数据为至少一个输入神经元时,上述第四稀疏处理单元6013在一个时钟周期压缩处理一个输入神经元和一个连接关系,即在一个时钟周期从S1个输入神经元中选择一个有效的输入神经元,S1为大于1的整数。
在一种可行的实施例中,上述第四稀疏处理单元6013在一个时钟周期压缩处理多个输入神经元和多个连接关系数据,即一个时钟周期从S1个输入神经元中选出有效的S2个输入数据,上述S2为大于0且小于或者等于该S1的整数。
举例说明,如图1h所示,上述输入神经元为i1,i2,i3和i4,以直接索引的形式表示的连接关系数据为“1011”,并且上述第四稀疏处理单元6013在一个时钟周期可从4个输入神经元选择1个有连接(即有效)的输入神经元。上述第四稀疏处理单元6013从上述输入数据缓存单元6011和上述连接关系缓存单元6012中分别获取上述输入神经元i1,i2,i3和i4和上述连接关系数据“1011”后,上述第四稀疏处理单元6013根据该连接关系数据“1011”从上述输入神经元i1,i2,i3和i4选取有连接的输入神经元i1,i3和i4。由于上述第四稀疏处理单元6013在一个时钟周期可从4个输入神经元选择1个有连接(即有效)的输入神经元,该第四稀疏处理单元6013在三个时钟周期内依次输出输入神经元i1,i3和i4,如图1h所示。上述第四稀疏处理单元6013将上述输入神经元i1,i3和i4存储到第一输入缓存单元中。
再举例说明,如图1i所示,输入神经元为i1,i2,i3和i4,以直接索引的形式表示的连接关系数据有两组,分别为“1011”和“0101”,上述第四稀疏处理单元6013在一个时钟周期可从4个输入神经元中选择2个有连接(即有效)的输入神经元。上述第四稀疏处理单元6013根据上述连接关系数据“1011”从上述输入神经元i1,i2,i3和i4中选择有连接的输入神经元i1,i3和i4;根据上述连接关系数据“0101”从上述输入神经元i1,i2,i3和i4中选择有连接的输入神经元i2和i4。由于上述第四稀疏处理单元6013在一个时钟周期可从4个输入神经元选择2个有连接(即有效)的输入神经元,对于连接关系数据“1011”,该第四稀疏处理单元6013在第一个时钟周期从选择输入神经元i1和i3,并将该输入神经元i1和i3存储到上述第一输入缓存单元606中,在第二个时钟周期从选择输入神经元i4,并将该输入神经元i4存储到上述第一输入缓存单元606中;对于连接关系数据“0101”,该第四稀疏处理单元6013在一个时钟周期从选择输入神经元i2和i4,如图1i所示。上述第四稀疏处理单元6013将上述输出神经元i2和i4和存储到第一输入缓存单元中。
举例说明,如图1j所示,输入数据为输入神经元i1,i2,i3和i4,以步长索引的形式表示的连接关系数据为“021”,并且上述第四稀疏处理单元6013在一个时钟周期可从4个输入神经元选择1个有连接(即有效)的输入神经元。上述第四稀疏处理单元6013从上述输入数据缓存单元6011和上述连接关系缓存单元6012中分别获取上述输入神经元i1,i2,i3和i4和上述连接关系数据“021”后,上述第四稀疏处理单元6013根据该连接关系数据“1011”从上述输入神经元i1,i2,i3和i4选取有连接的输入神经元i1,i3和i4。由于上述第四稀疏处理单元6013在一个时钟周期可从4个输入神经元选择1个有连接(即有效)的输入神经元,该第四稀疏处理单元6013在三个时钟周期内依次输出输入神经元i1,i3和i4,如图1j所示。上述第四稀疏处理单元6013将上述输入神经元i1,i3和i4存储到第一输入缓存单元中。
再举例说明,如图1k所示,输入数据为输入神经元i1,i2,i3和i4,以步长索引的形式表示的连接关系数据有两组,分别为“021”和“22”,上述第四稀疏处理单元6013在一个时钟周期可从4个输入神经元中选择2个有连接(即有效)的输入神经元。上述第四稀疏处理单元6013根据上述连接关系数据“021”从上述输入神经元i1,i2,i3和i4中选择有连接的输入神经元i1,i3和i4;根据上述连接关系数据“22”从上述输入神经元i1,i2,i3和i4中选择有连接的输入神经元i2和i4。由于上述第四稀疏处理单元6013在一个时钟周期可从4个输入神经元选择2个有连接(即有效)的输入神经元,对于连接关系数据“021”,该第四稀疏处理单元6013在第一个时钟周期从选择输入神经元i1和i3,并将该输入神经元i1和i3存储到上述第一输入缓存单元606中。在第二个时钟周期从选择输入神经元i4并将该输入神经元i4存储到上述第一输入缓存单元606中;对于连接关系数据“22”,该第四稀疏处理单元6013在一个时钟周期从选择输入神经元i2和i4并输出,如图1k所示。上述第四稀疏处理单元6013将上述输入神经元i2和i4存储到第一输入缓存单元中。
在一种可行的实施例中,上述输入数据缓存单元6011用于缓存的第一输入数据包括至少一个权值,上述连接关系缓存单元6012缓存的数据为上述权值的连接关系数据,且上述至少一个权值的绝对值均大于第一阈值时,上述第四稀疏处理单元6013根据上述权值的连接关系数据,将没有连接关系的输入神经元和输出神经元之间的权值的值置为0,并将该值为0的权值和上述至少一个权值存储到第二输入缓存单元中。
举例说明,权值的形式为wij,表示第i个输入神经元与第j个输出神经元之间的权值。假设输入神经元包括i1,i2,i3和i4,输出神经元包括o1,上述第一输入数据(权值)为w11,w31,w41,上述第一输入数据的连接关系数据(即上述权值的连接关系数据)以直接索引的形式表示,为1011,上述第四稀疏处理单元6013根据上述第二输入数据确定上述输入神经元i2与上述输出神经元o1之间没有连接,上述第四稀疏处理单元6013将该上述输入神经元i2与上述输出神经元o1之间的权值w21的值置为0,并将w11,w21(0),w31,w41存储到第二输入缓存单元中。
上述第一输入缓存单元,用于缓存上述压缩处理后的输入神经元。上述第二输入缓存单元,用于缓存从存储电路中读取的压缩处理的权值。
在一种可行的实施例中,当上述第一输入数据为至少一个权值时,上述第四稀疏处理单元6013在一个时钟周期压缩处理一个权值和一个连接关系,即在一个时钟周期从S3个权值中选择一个有效的权值,该S3为大于1的整数。
可选地,上述第四稀疏处理单元6013在一个时钟周期压缩处理多个权值和多个连接关系数据,即一个时钟周期从S3个权值中选出有效的S4个权值,上述S4为大于0且小于或者等于该S3的整数。
上述第一输入缓存单元,用于缓存上述压缩处理后的权值。上述第二输入缓存单元,用于缓存从存储电路中读取的压缩处理的输入神经元。
需要说明的是,上述相关描述可参见前述实施例中的相关描述,在此不再叙述。
可选地,所述压缩映射电路601对所述第一输入数据进行压缩处理之前,所述压缩映射电路601还用于:
对所述至少一个输入神经元进行分组,以得到M组输入神经元,所述M为大于或者等于1的整数;
判断所述M组输入神经元的每一组输入神经元是否满足第一预设条件,所述第一预设条件包括一组输入神经元中绝对值小于或者等于第三阈值的输入神经元的个数小于或者等于第四阈值;
当所述M组输入神经元任意一组输入神经元不满足所述第一预设条件时,将该组输入神经元删除;
对所述至少一个权值进行分组,以得到N组权值,所述N为大于或者等于1的整数;
判断所述N组权值的每一组权值是否满足第二预设条件,所述第二预设条件包括一组权值中绝对值小于或者等于第五阈值的权值的个数小于或者等于第六阈值;
当所述N组权值任意一组权值不满足所述第二预设条件时,将该组权值删除。
需要说明的是,上述相关描述可参见前述实施例中的相关描述,在此不再叙述。上述第一阈值、第二阈值、第三阈值、第四阈值、第五阈值和第六阈值可均存储在存储电路或者第一输出缓存单元中;上述第一阈值、第二阈值、第三阈值、第四阈值、第五阈值和第六阈值中部分阈值存储在存储电路、部分阈值存储在第一输出缓存单元中。
上述第一输入缓存单元、上述第二输入缓存单元和上述输出缓存单元均可为所述压缩映射电路或所述主处理电路中的功能单元,也可为其他处理电路共享的功能单元,本申请不做限定。
在一种可选实施例中,所述输入神经元的连接关系数据和所述权值的连接关系数据是由0或1表示的字符串/矩阵组成,其中0表示所述输入神经元/所述权值的绝对值小于或等于第一阈值,1表示所述输入神经元/所述权值的绝对值大于第一阈值且与输出神经元无关。例如,输入数据为矩阵S假设第一阈值为0,则对应的连接关系数据为本实施例中,连接关系数据(如所述神经元/权值的连接关系数据)也可称为mask矩阵。
本申请中数据的连接关系数据(具体为权值的连接关系数据或神经元的连接关系数据)的表示方式除了直接索引和步长索引之外,还可为以下几种情况:列表的列表(Listof Lists,LIL)、坐标列表(Coordinate list,COO)、压缩稀疏行(Compressed Sparse Row,CSR)、压缩稀疏列(Compressed Sparse Column,CSC)、(ELL Pack,ELL)以及混合(Hybird,HYB)等等,本申请不做详述。
此外,本发明实施例中提到的输入神经元和输出神经元并非是指整个神经网络的输入层中的神经元和输出层中的神经元,而是对于神经网络中任意相邻的两层神经元,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为输出神经元。以卷积神经网络为例,假设一个卷积神经网络有L层,K=1,2,3…L-1,对于第K层和第K+1层来说,第K层被称为输入层,该层中的神经元为上述输入神经元,第K+1层被称为输入层,该层中的神经元为上述输出神经元,即除了顶层之外,每一层都可以作为输入层,其下一层为对应的输出层。
下面提供一种采用如图1a所示的装置实现计算的方法,该计算的方法具体可以为神经网络的计算方式,例如神经网络的正向运算,神经网络的训练,在实际应用中,正向运算依据不同的输入数据可以执行矩阵乘矩阵、卷积运算、激活运算、变换运算等等运算,上述运算均可以采用如图1a所示的装置实现。
主处理单元的控制电路将数据传输给基础处理电路运算。相应地,基础处理处理的压缩映射电路先先对数据进行压缩处理后再运算,其优点是可以减少数据计算量,基础处理电路执行数据运算的效率也更高,功耗更低。
如基础处理电路接收到的数据为稀疏数据,那么基础处理电路可以收到数据后由压缩映射电路对数据进行压缩处理然后再进行计算,例如,基础处理电路收到主处理电路传输过来的稀疏数据,压缩映射电路将其进行压缩处理,然后基础处理电路的内积运算器电路、向量运算器电路或累加器电路对压缩处理后的数据进行运算,提高运算效率,降低功耗。
主处理电路将待计算的数据传输到全部或者一部分基础处理电路上;以矩阵乘以向量计算为例,主处理电路的控制电路可以将矩阵数据拆分每列作为一个基础数据,例如m*n矩阵,可以拆分成n个m行的向量,主处理电路的控制电路将拆分后的n个m行的向量分发给多个基础处理电路。对于向量,主处理电路的控制电路可以将向量整体广播给每个基础处理电路。如果m的值比较大,那么控制电路可以先将m*n矩阵拆分成x*n个向量,以x=2为例,具体的可以拆分成,2n个向量,每个向量包含m/2行,即将n个m行的向量中每个向量均分成2个向量,以第一行为例,如n个m行的向量的第一个向量为1000行,那么均分成2个向量可以为,将前500行组成第一向量,将后500行组成第二向量,控制电路通过2个广播将2个向量广播给多个基础处理电路。
所述数据传输的方式可以是广播或者分发,或者其他任何可能的传输方式;
基础处理电路接收到数据后,根据该数据对应的运算指令(即运算控制)确定是否需先对数据进行压缩处理然后执行运算,以得到运算结果;
基础处理电路将运算结果传输回主处理电路;
所述运算结果可以是中间运算结果,也可以是最终运算结果。
使用如图1a所示装置完成矩阵乘向量的运算;
(矩阵乘向量可以是矩阵中的每一行分别与向量进行内积运算,并将这些结果按对应行的顺序摆放成一个向量。)
下面描述计算尺寸是M行L列的矩阵S和长度是L的向量P的乘法的运算,如下图2a所示,(矩阵S中的每一行与向量P长度相同,他们中的数据按位置一一对应)所述神经网络计算装置拥有K个基础处理电路:
参阅图2,图2提供了了一种矩阵乘向量的实现方法,具体可以包括:
步骤S201、主处理电路的控制电路将将矩阵S中的每一行数据分发到K个基础处理电路中的某一个上,基础处理电路将接收到的分发数据保存在基础处理电路的片上缓存和/或寄存器中;
在一种可选方案中,如果矩阵S的行数M<=K则,主处理电路的控制电路给K个基础处理电路分别分发S矩阵的一行;
在一种可选方案中,如果矩阵S的行数M>K,则主处理电路的控制电路给每个基础处理电路分别分发S矩阵中一行或多行的数据。
分发到第i个基础处理电路的S中的行的集合为Ai,共有Mi个行,如图2c表示第i个基础处理电路上将要执行的计算。
在一种可选方案中,在每个基础处理电路中,例如第i个基础处理电路中,可以将接收到的分发数据例如矩阵Ai保存在第i个基础处理电路的寄存器和/或片上缓存中;优点是减少了之后的分发数据的数据传输量,提高了计算效率,降低了功耗。
步骤S202、主处理电路的控制电路将向量P中各部分以广播的方式传输给K个基础处理电路;
在一种可选方案中,主处理电路的控制电路可以将向量P中各部分只广播一次到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对这一次得到的向量P的数据进行充分地复用,完成对应与矩阵Ai中每一行的内积运算。优点是,减少从主处理电路到基础处理电路的向量P的重复传输的数据传输量,提高执行效率,降低传输功耗。
在一种可选方案中,主处理电路的控制电路可以将向量P中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的向量P的数据不进行复用,分次完成对应于矩阵Ai中的每一行的内积运算;优点是,减少基础处理电路内部的单次传输的向量P的数据传输量,并可以降低基础处理电路缓存和/或寄存器的容量,提高执行效率,降低传输功耗,降低成本。
在一种可选方案中,主处理电路的控制电路可以将向量P中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的向量P的数据进行部分复用,完成对应于矩阵Ai中的每一行的内积运算;优点是,减少从主处理电路到基础处理电路的数据传输量,也减少基础处理电路内部的数据传输量,提高执行效率,降低传输功耗。
步骤S203、K个基础处理电路的内积运算器电路计算矩阵S和向量P的数据的内积,例如第i个基础处理电路,计算矩阵Ai的数据和向量P的数据的内积;具体实现时,基础处理电路接收到主处理电路发送的矩阵S和向量P后,可利用基础处理电路中的压缩映射电路先对矩阵S和向量P进行压缩处理,然后再利用内积运算器电路计算压缩处理后的矩阵S和向量P的数据的内积。
具体的,压缩映射电路对输入矩阵S(M1行L1列)进行压缩处理得到压缩处理后的矩阵S(M行L列)。例如,将输入矩阵S和向量P中数据为指定数值(如0)和/或数据小于预设阈值(如0.1)所对应的数据剔除,具体实现时可根据矩阵S和向量P各自对应的mask矩阵来剔除,例如剔除mask矩阵中数据为0时对应的相同位置上矩阵S/P中的数据,具体可参见前述关于数据压缩处理实施例中的相关阐述,这里不再赘述。应理解的,这里的矩阵S和矩阵P也可对应理解为前述实施例中的输入神经元(也可称为输入神经元矩阵)和权值(也可称为权值矩阵)等。
步骤S204、K个基础处理电路的累加器电路将内积运算的结果进行累加得到累加结果,将累加结果以定点类型形式传输回主处理电路。
在一种可选方案中,可以将每次基础处理电路执行内积运算得到的部分和(部分和即累加结果的一部分,例如累加结果为:F1*G1+F2*G2+F3*G3+F4*G4+F5*G5,那么部分和可以为:F1*G1+F2*G2+F3*G3的值)传输回主处理电路进行累加;优点是,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。
在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和保存在基础处理电路的寄存器和/或片上缓存中,累加结束之后传输回主处理电路;优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗。
在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和在部分情况下保存在基础处理电路的寄存器和/或片上缓存中进行累加,部分情况下传输到主处理电路进行累加,累加结束之后传输回主处理电路;优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。
参阅图2b,使用如图1a所示的装置完成矩阵乘矩阵的运算;
下面描述计算尺寸是M行L列的矩阵S和尺寸是L行N列的矩阵P的乘法的运算,(矩阵S中的每一行与矩阵P的每一列长度相同,如图2d所示)所述神经网络计算装置拥有K个基础处理电路:
步骤S201b、主处理电路的控制电路将矩阵S中的每一行数据分发到K个基础处理电路中的某一个上,基础处理电路将接收到的数据保存在片上缓存和/或寄存器中;
在一种可选方案中,如果S的行数M<=K则,主处理电路的控制电路给M个基础处理电路分别分发S矩阵的一行;
在一种可选方案中,如果S的行数M>K,主处理电路的控制电路给每个基础处理电路分别分发S矩阵中一行或多行的数据。
S中有Mi行分发到第i个基础处理电路,这Mi行的集合称为Ai,如图2e表示第i个基础处理电路上将要执行的计算。
在一种可选方案中,在每个基础处理电路中,例如第i个基础处理电路中:
接收的由主处理电路分发的矩阵Ai,将矩阵Ai保存在第i个基础处理电路寄存器和/或片上缓存中;优点是减少了之后的数据传输量,提高了计算效率,降低了功耗。
步骤S202b、主处理电路的控制电路将矩阵P中各部分以广播的方式传输给各个基础处理电路;
在一种可选方案中,可以将矩阵P中各部分只广播一次到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对这一次得到的矩阵P的数据进行充分地复用,完成对应与矩阵Ai中每一行的内积运算;本实施例中的复用具体可以为基础处理电路在计算中重复使用,例如矩阵P的数据的复用,可以是对矩阵P的数据在多次使用。
在一种可选方案中,主处理电路的控制电路可以将矩阵P中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的矩阵P的数据不进行复用,分次完成对应于矩阵Ai中的每一行的内积运算;
在一种可选方案中,主处理电路的控制电路可以将矩阵P中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的矩阵P的数据进行部分复用,完成对应于矩阵Ai中的每一行的内积运算;
在一种可选方案中,每个基础处理电路,例如第i个基础处理电路,计算矩阵Ai的数据和矩阵P的数据的内积;
步骤S203b、每个基础处理电路的累加器电路将内积运算的结果进行累加并传输回主处理电路。其中,内积运算的结果可为基础处理电路对矩阵S和矩阵P进行压缩处理后,再利用内积运算器电路计算压缩处理后的矩阵S和向量P的数据的内积的结果。
具体的,压缩映射电路对输入矩阵S(M1行L1列)和输入矩阵P(L1行N1列)进行压缩处理得到压缩处理后的矩阵S(M行L列)和矩阵P(L行N列);进一步地基础处理单元的运算器可对压缩处理后的矩阵S和矩阵P进行内积运算,以得到内积运算的结构。例如,将输入矩阵S和矩阵P中数据为指定数值(如0)和/或数据小于预设阈值(如0.1)所对应的数据剔除,具体实现时可根据矩阵S和矩阵P各自对应的mask矩阵来剔除,例如剔除mask矩阵中数据为0时对应的相同位置上矩阵S/P中的数据,具体可参见前述关于数据压缩处理实施例中的相关阐述,这里不再赘述。应理解的,这里的矩阵S和矩阵P也可对应理解为前述实施例中的输入神经元(也可称为输入神经原矩阵)和权值(也可称为权值矩阵)等。
在一种可选方案中,基础处理电路可以将每次执行内积运算得到的部分和传输回主处理电路进行累加;
在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和保存在基础处理电路的寄存器和/或片上缓存中,累加结束之后传输回主处理电路;
在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和在部分情况下保存在基础处理电路的寄存器和/或片上缓存中进行累加,部分情况下传输到主处理电路进行累加,累加结束之后传输回主处理电路;
参阅图3a,使用如图1a所示的装置完成全连接运算:
如果全连接层的输入数据是一个向量(即神经网络的输入是单个样本的情况),则以全连接层的权值矩阵作为矩阵S,输入向量作为向量P,按照所述装置的使用方法一执行如图2所示的矩阵乘向量的运算;
如果全连接层的输入数据是一个矩阵(即神经网络的输入是多个样本作为batch的情况),则以全连接层的权值矩阵作为矩阵S,输入向量作为矩阵P,或者以全连接层的权值矩阵作为矩阵P,输入向量作为矩阵S,按照所述装置的使用如图2c所示的矩阵乘矩阵的执行运算;
参阅图3b,使用如图1a所示的装置完成卷积运算:
对于一个卷积层,记其卷积核的数量为M;
步骤S301、主处理电路的控制电路将卷积层权值中的每一个卷积核的权值分发到K个基础处理电路中的某一个上,保存在基础处理电路的片上缓存和/或寄存器中;
在一种可选方案中,如果卷积核的个数M<=K则,主处理电路的控制电路给M个基础处理电路分别分发一个卷积核的权值;
在一种可选方案中,如果卷积核的个数M>K,主处理电路的控制电路给每个基础处理电路分别分发一个或多个卷积核的权值。
共有Mi个卷积核分发到第i个基础处理电路,这些卷积核权值的集合称为Ai。
在一种可选方案中,在每个基础处理电路中,例如第i个基础处理电路中:
将收到的由主处理电路分发的卷积核权值Ai保存在其寄存器和/或片上缓存中;
步骤S302、主处理电路的控制电路将输入数据P中各部分以广播的方式传输给各个基础处理电路;
在一种可选方案中,主处理电路的控制电路可以将输入数据P中各部分只广播一次到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对这一次得到的输入数据P的数据进行充分地复用,完成对应与Ai中每一个卷积核的内积运算;
在一种可选方案中,主处理电路的控制电路可以将输入数据P中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的输入数据P的数据不进行复用,分次完成对应于Ai中的每一个卷积核的内积运算;
在一种可选方案中,主处理电路的控制电路可以将输入数据P中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的输入数据P的数据进行部分复用,完成对应于Ai中的每一个卷积核的内积运算;
步骤S303、每个基础处理电路计算卷积核和输入数据P的数据内积,例如第i个基础处理电路,计算Ai的每一个卷积核和输入数据P的数据的内积;具体实现时,基础处理电路接收到主处理电路发送的卷积核和输入数据P后,可利用基础处理电路中的压缩映射电路先对卷积核和输入数据P进行压缩处理,然后再利用内积运算器电路计算压缩处理后的卷积核和输入数据P的数据的内积。例如,第i个基础处理电路,计算压缩处理后的Ai的每一个卷积核和压缩处理后的输入数据P的数据的内积。
步骤S304、每个基础处理电路的累加器电路将内积运算的结果进行累加并传输回主处理电路:
在一种可选方案中,可基础处理电路以将每次执行内积运算得到的部分和传输回主处理电路进行累加;
在一种可选方案中,基础处理电路也可以将每次执行的内积运算得到的部分和保存在基础处理电路的寄存器和/或片上缓存中,累加结束之后传输回主处理电路;
在一种可选方案中,基础处理电路也可以将每次执行的内积运算得到的部分和在部分情况下保存在基础处理电路的寄存器和/或片上缓存中进行累加,部分情况下传输到主处理电路进行累加,累加结束之后传输回主处理电路;
使用如图1a所示的装置更新权值的方法:
利用主处理电路的向量运算器电路实现神经网络训练过程中的权值更新功能,具体地,权值更新是指使用权值的梯度来更新权值的方法。
在一种可选方案中,使用主处理电路的向量运算器电路对权值和权值梯度这两个向量进行加减运算得到运算结果,该运算结果即为更新权值。
在一种可选方案中,使用主处理电路的向量运算器电路在权值以及权值梯度乘以或除以一个数得到中间权值和中间权值梯度值,向量运算器电路对中间权值和中间权值梯度值进行加减运算得到运算结果,该运算结果即为更新权值。
在一种可选方案中,可以先使用权值的梯度计算出一组动量,然后再使用动量与权值进行加减计算得到更新后的权值。
本发明还提供一种芯片,该芯片包含计算装置,该计算装置包括:
包括一个主处理电路,主处理电路中所涉及到的数据可以是压缩处理后的数据,在一种可选实施例中,所述压缩处理后的数据包括至少一个输入神经元或至少一个权值,所述至少一个神经元中的每个神经元大于第一阈值或者,所述至少一个权值中的每个权值大于第二阈值。所述第一阈值和所述第二阈值为用户侧自定义设置的,它们可以相同,也可不同。
在一种可选方案中,主处理电路包括压缩映射电路;在一种可选方案中,主处理电路包括执行数据压缩处理的运算单元,例如向量运算单元;具体地,包含接收输入数据的数据输入接口;
在一种可选方案中,所述接收的数据来源可以是:所述神经网络运算电路装置的外部或所述神经网络运算电路装置的部分或全部基础处理电路;
在一种可选方案中,所述数据输入接口可以有多个;具体地,可以包含输出数据的数据输出接口;
在一种可选方案中,所述输出的数据的去向可以是:所述神经网络运算装置的外部或所述神经网络运算电路装置的部分或全部基础处理电路;在一种可选方案中,所述数据输出接口可以有多个;
在一种可选方案中,所述主处理电路包括片上缓存和/或寄存器;在一种可选方案中,所述主处理电路中包含运算单元,可以执行数据运算;在一种可选方案中,所述主处理电路中包含算术运算单元;在一种可选方案中,所述主处理电路中包含向量运算单元,可以同时对一组数据执行运算;具体地,所述算术运算和/或向量运算可以是任意类型的运算,包括但不限于:两个数相加减乘除,一个数与常数加减乘除,对一个数执行指数运算,幂次运算,对数运算,以及各种非线性运算,对两个数执行比较运算,逻辑运算等。两个向量相加减乘除,一个向量中的每一个元素与常数加减乘除,对向量中的每一个元素执行指数运算,幂次运算,对数运算,以及各种非线性运算等,对一个向量中的每两个对应的元素执行比较运算,逻辑运算等。
在一种可选方案中,所述主处理电路包括数据重排列单元,用于按照一定的顺序向基础处理电路传输数据,或者按照一定的顺序原地重新排列数据;
在一种可选方案中,所述数据排列的顺序包括:对一个多维数据块进行维度顺序的变换;所述数据排列的顺序还可以包括:对一个数据块进行分块以发送到不同的基础处理电路。
该计算装置还包括多个基础处理电路:每一个基础处理电路用于计算两个向量的内积,计算的方法是,基础处理电路收到的两组数,将这两组数中的元素对应相乘,并且将相乘的结果累加起来;内积的结果传输出去,这里传输出去根据基础处理电路的位置,有可能传输给其他基础处理电路,也可以直接传输给主处理电路。
基础处理电路中所涉及到的数据可以是压缩处理后的数据,在一种可选实施例中,所述压缩处理后的数据包括至少一个输入神经元或至少一个权值,所述至少一个神经元中的每个神经元大于第一阈值或者,所述至少一个权值中的每个权值大于第二阈值。所述第一阈值和所述第二阈值为用户侧自定义设置的,它们可以相同,也可不同。
在一种可选方案中,基础处理电路包括压缩映射电路;
在一种可选方案中,基础处理电路包括执行数据压缩处理的运算单元,如运算单元;
具体地,包括由片上缓存和/或寄存器构成的存储单元;具体地,包括一个或多个接收数据的数据输入接口;
在一种可选方案中,包括两个数据输入接口,每次从两个数据输入接口处可以分别获得一个或多个数据;
在一种可选方案中,基础处理电路可以将从数据输入接口接收到输入数据后保存在寄存器和/或片上缓存中;
上述数据输入接口接收数据的来源可以是:其他基础处理电路和/或主处理电路。
所述神经网络运算电路装置的主处理电路;
所述神经网络运算电路装置的其他基础处理电路(所述神经网络运算电路装置拥有多个基础处理电路);
具体地,包括一个或多个传输输出数据的数据输出接口;
在一种可选方案中,可以将一个或多个数据从数据输出接口传输出去;
具体地,通过数据输出接口传输出去的数据可以是:从数据输入接口接收到的数据、保存在片上缓存和/或寄存器中的数据、乘法器运算结果、累加器运算结果或内积运算器运算结果中的一种或任意组合。
在一种可选方案中,包含三个数据输出接口,其中的两个分别对应于两个数据输入接口,每一层出上一层从数据输入接口接收到的数据,第三个数据输出接口负责输出运算结果;
具体地,所述数据输出接口传输数据的去向可以是:上文数据来源和此处的数据去向决定了基础处理电路在装置中的连接关系。
所述神经网络运算电路装置的主处理电路;
所述神经网络运算电路装置的其他基础处理电路,所述神经网络运算电路装置拥有多个基础处理电路;具体地,包括算术运算电路:该算术运算电路具体可以为:一个或多个乘法器电路、一个或多个累加器电路、一个或多个执行两组数内积运算的电路中的一个或任意组合。
在一种可选方案中,可以执行两个数的乘法运算,其结果可以保存在片上缓存和/或寄存器上,也可以直接累加到寄存器和/或片上缓存中;
在一种可选方案中,可以执行两组数据的内积运算,其结果可以保存在片上缓存和/或寄存器中,也可以直接累加到寄存器和/或片上缓存中;
在一种可选方案中,可以执行数据的累加运算,将数据累加到片上缓存和或寄存器中;
具体地,累加器电路被累加的数据,可以是:从数据输入接口接收到的数据、保存在片上缓存和/或寄存器中的数据、乘法器运算结果、累加器运算结果、内积运算器运算结果中的一个或任意组合。
需要说明的是,上述对基础处理电路的描述中所用到的“数据输入接口”和“数据输出接口”是指每一个基础处理电路的数据输入与输出接口,而不是整个装置的数据输入与输出接口。
在一个实施例中,本发明公开了一种神经网络运算装置,其包括用于执行如上所述方法实施例中提供的所有或部分实施方式所对应的功能单元。
在一个实施例里,本发明公开了一种芯片,用于执行如上所述方法实施例中提供的所有或部分实施方式。
在一个实施例里,本发明公开了一种电子装置,其包括用于执行如上所述方法实施例中的所有或部分实施方式的功能单元。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
以上所述的具体实施例,对本披露的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本披露的具体实施例而已,并不用于限制本披露,凡在本披露的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本披露的保护范围之内。
Claims (15)
1.一种集成电路芯片装置,其特征在于,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;
所述基础处理电路包括:压缩映射电路包括;所述压缩映射电路,用于执行神经网络运算中的各个数据的压缩处理;
所述主处理电路,用于执行神经网络运算中的各个连续的运算以及向所述多个基础处理电路传输数据;
所述多个基础处理电路,用于依据所述传输数据的运算控制是否启动所述压缩映射电路对所述传输数据进行压缩处理;依据所述传输数据或压缩处理后的传输数据以并行方式执行神经网络中的运算,并将运算结果传输给所述主处理电路。
2.根据权利要求1所述的装置,其特征在于,
所述装置还包括分支处理电路,所述分支处理电路设置在所述主处理电路与多个基础处理电路之间,用于在所述主处理电路与所述多个基础处理电路之间转发传输数据。
3.根据权利要求1所述的集成电路芯片装置,其特征在于,
所述主处理电路,用于获取待计算的数据块以及运算指令,依据该运算指令对所述待计算的数据块划分成分发数据块以及广播数据块;对所述分发数据块进行拆分处理得到多个基本数据块,将所述多个基本数据块分发至与其连接的电路,将所述广播数据块广播至与其连接的电路;
所述基础处理电路,用于依据所述运算控制启动所述压缩映射电路对所述基本数据块与所述广播数据块进行压缩处理后再执行内积运算得到运算结果,将所述运算结果发送至主处理电路;
所述主处理电路,用于对所述运算结果处理得到所述待计算的数据块以及运算指令的指令结果;
其中,所述待计算的数据块为待计算的至少一个输入神经元,和/或,至少一个权值。
4.根据权利要求3所述的集成电路芯片装置,其特征在于,所述压缩映射电路包括第二稀疏处理单元、第三稀疏处理单元以及连接关系处理单元;
所述第二稀疏处理单元,用于接收到第三输入数据后,根据所述第三输入数据得到第一连接关系数据,并将该第一关系数据传输至连接关系处理单元;
所述第三稀疏处理单元,用于接收到第四输入数据后,根据所述第四输入数据得到第二连接关系数据,并将该第二关系数据传输至所述连接关系处理单元;
所述连接关系处理单元,用于根据所述第一连接关系数据和所述第二连接关系数据,以得到第三连接关系数据,并将该第三连接关系数据传输至第二数据处理单元;
所述第二数据处理单元,用于在接收到所述第三输入数据,所述第四输入数据和所述第三连接关系数据后,根据所述第三连接关系数据对所述第三输入数据和所述第四输入数据进行压缩处理,以得到第四输出数据和第五输出数据;
其中,当所述第三输入数据包括至少一个输入神经元,第四输入数据包括至少一个权值时,所述第一连接关系数据为输入神经元的连接关系数据,所述第二连接关系数据为权值的连接关系数据,所述第四输出数据为处理后的输入神经元,所述第五输出数据为处理后的权值;当所述第三输入数据包括至少一个权值,所述第四输入数据包括至少一个输入神经元时,所述第一连接关系数据为权值的连接关系数据,所述第二连接关系数据为输入神经元的连接关系数据,所述第四输出数据为处理后的权值,所述第五输出数据为处理后的输入神经元。
5.根据权利要求4所述的集成电路芯片装置,其特征在于,所述神经元的连接关系数据以及所述权值的连接关系数据为由0和1组成的字符串或矩阵组成,且与输出神经元无关;或者,
所述输入神经元的连接关系数据和所述权值的连接关系数据均以直接索引或者步长索引的形式表示;
其中,当所述输入神经元的连接关系数据以直接索引的形式表示时,该连接关系数据为由0和1组成的字符串,0表示所述输入神经元的绝对值小于或者等于第一阈值,1表示所述输入神经元的绝对值大于所述第一阈值;
当所述输入神经元的连接关系数据以步长索引形式表示时,该连接关系数据为绝对值大于所述第一阈值的输入神经元与上一个绝对值大于所述第一阈值的输入神经元之间的距离值组成的字符串;
当所述权值的连接关系数据以直接索引的形式表示时,该连接关系数据为由0和1组成的字符串,0表示所述权值的绝对值小于或者等于第二阈值,即该权值对应的输入神经元与输出神经元之间没有连接,1表示所述权值的绝对值大于所述第二阈值,即该权值对应的输入神经元与输出神经元之间有连接;以直接索引形式表示权值的连接关系数据有两种表示顺序:以每个输出神经元与所有输入神经元的连接状态组成一个0和1的字符串来表示所述权值的连接关系数据;或者每个输入神经元与所有输出神经元的连接状态组成一个0和1的字符串来表示所述权值的连接关系数据;
当所述权值的连接关系数据以步长索引的形式表示时,该连接关系数据为与输出神经元有连接的输入神经元的与上一个与该输出神经元有连接的输入神经元之间的距离值组成的字符串。
6.根据权利要求5所述的集成电路芯片装置,其特征在于,当所述第一连接关系数据和所述第二连接关系数据均以步长索引的形式表示,且表示所述第一连接关系数据和所述第二连接关系数据的字符串是按照物理地址由低到高的顺序存储时,所述连接关系处理单元具体用于:
将所述第一连接关系数据的字符串中的每一个元素与存储物理地址低于该元素存储的物理地址的元素进行累加,得到的新的元素组成第四连接关系数据;同理,对所述第二连接关系数据的字符串进行同样的处理,得到第五连接关系数据;
从所述第四连接关系数据的字符串和所述第五连接关系数据的字符串中,选取相同的元素,按照元素值从小到大的顺序排序,组成新的字符串;
将所述新的字符串中每一个元素与其相邻的且值小于该元素值的元素进行相减,得到的元素组成所述第三连接关系数据。
7.根据权利要求5所述的集成电路芯片装置,其特征在于,当所述第一连接关系数据和所述第二连接关系数据均以直接索引的形式表示时,所述连接关系处理单元具体用于:
对所述第一连接关系数据和所述第二连接关系数据进行与操作,以得到第三连接关系数据。
8.根据权利要求5所述的集成电路芯片装置,其特征在于,当所述第一连接关系数据与所述第二连接关系数据中任意一个以步长索引的形式表示,另一个以直接索引的形式表示时,所述连接关系处理单元具体用于:
若所述第一关系数据是以步长索引的形式表示,将所述第一连接关系数据转换成以直接索引的形式表示的连接关系数据;
若所述第二关系数据是以步长索引的形式表示,将所述第二连接关系数据转换成以直接索引的形式表示的连接关系数据;
对所述第一连接关系数据和所述第二连接关系数据进行与操作,以得到第三连接关系数据。
9.根据权利要求5所述的集成电路芯片装置,其特征在于,当所述第一连接关系数据与所述第二连接关系数据中任意一个以步长索引的形式表示,另一个以直接索引的形式表示,且表示所述第一连接关系数据和所述第二连接关系数据的字符串是按照物理地址由低到高的顺序存储时,所述连接关系处理单元还具体用于:
若所述第一关系数据是以步长索引的形式表示,将所述第二连接关系数据转换成以步长索引的形式表示的连接关系数据;
若所述第二关系数据是以步长索引的形式表示,将所述第一连接关系数据转换成以步长索引的形式表示的连接关系数据;
将所述第一连接关系数据的字符串中的每一个元素与存储物理地址低于该元素存储的物理地址的元素进行累加,得到的新的元素组成第四连接关系数据;同理,对所述第二连接关系数据的字符串进行同样的处理,得到第五连接关系数据;
从所述第四连接关系数据的字符串和所述第五连接关系数据的字符串中,选取相同的元素,按照元素值从小到大的顺序排序,组成新的字符串;
将所述新的字符串中每一个元素与其相邻的且值小于该元素值的元素进行相减,得到的元素组成所述第三连接关系数据。
10.根据权利要求3所述的集成电路芯片装置,其特征在于,所述启动所述压缩映射电路对所述基本数据块与所述广播数据块进行压缩处理之前,还包括:
所述基础处理电路,还用于通过所述压缩映射电路对所述至少一个输入神经元进行分组,以得到M组输入神经元,所述M为大于或者等于1的整数;判断所述M组输入神经元的每一组输入神经元是否满足第一预设条件,所述第一预设条件包括一组输入神经元中绝对值小于或者等于第三阈值的输入神经元的个数小于或者等于第四阈值;当所述M组输入神经元任意一组输入神经元不满足所述第一预设条件时,将该组输入神经元删除;对所述至少一个权值进行分组,以得到N组权值,所述N为大于或者等于1的整数;判断所述N组权值的每一组权值是否满足第二预设条件,所述第二预设条件包括一组权值中绝对值小于或者等于第五阈值的权值的个数小于或者等于第六阈值;当所述N组权值任意一组权值不满足所述第二预设条件时,将该组权值删除。
11.根据权利要求3所述的集成电路芯片装置,其特征在于,
所述主处理电路,具体用于将所述广播数据块分成多个部分广播数据块,将所述多个部分广播数据块通过多次广播至所述多个基础处理电路;
所述基础处理电路,具体用于将启动所述压缩映射电路所述部分广播数据块与所述基本数据块进行压缩处理后执行一次内积处理后得到内积处理结果,将所述内积处理结果累加得到部分运算结果,将所述部分运算结果发送至所述主处理电路。
12.根据权利要求11所述的集成电路芯片装置,其特征在于,
所述基础处理电路,具体用于启动所述压缩映射电路对所述部分广播数据块与所述基本数据块进行压缩处理后,复用n次该部分广播数据块执行该部分广播数据块与该n个基本数据块内积运算得到n个部分处理结果,将n个部分处理结果分别累加后得到n个部分运算结果,将所述n个部分运算结果发送至所述主处理电路,所述n为大于等于2的整数。
13.一种芯片,其特征在于,所述芯片集成如权利要求1-12任意一项所述的装置。
14.一种智能设备,其特征在于,所述智能设备包括如权利要求13所述的芯片。
15.一种神经网络的运算方法,其特征在于,所述方法应用在集成电路芯片装置内,所述集成电路芯片装置包括:如权利要求1-12任意一项所述的集成电路芯片装置,所述集成电路芯片装置用于执行神经网络的运算;
其中,所述神经网络的运算包括:卷积运算、矩阵乘矩阵运算、矩阵乘向量运算、偏执运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711499267.XA CN109993291B (zh) | 2017-12-30 | 2017-12-30 | 集成电路芯片装置及相关产品 |
TW107147413A TWI768167B (zh) | 2017-12-30 | 2018-12-27 | 集成電路芯片裝置及相關產品 |
EP18894430.0A EP3624019A4 (en) | 2017-12-30 | 2018-12-29 | CHIP DEVICE WITH INTEGRATED CIRCUIT AND ASSOCIATED PRODUCT |
PCT/CN2018/125801 WO2019129302A1 (zh) | 2017-12-30 | 2018-12-29 | 集成电路芯片装置及相关产品 |
US16/698,000 US11704544B2 (en) | 2017-12-30 | 2019-11-27 | Integrated circuit chip device and related product |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711499267.XA CN109993291B (zh) | 2017-12-30 | 2017-12-30 | 集成电路芯片装置及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109993291A true CN109993291A (zh) | 2019-07-09 |
CN109993291B CN109993291B (zh) | 2020-07-07 |
Family
ID=67110942
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711499267.XA Active CN109993291B (zh) | 2017-12-30 | 2017-12-30 | 集成电路芯片装置及相关产品 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109993291B (zh) |
TW (1) | TWI768167B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109902817A (zh) * | 2017-12-11 | 2019-06-18 | 北京中科寒武纪科技有限公司 | 板卡和神经网络运算方法 |
CN111767996A (zh) * | 2018-02-27 | 2020-10-13 | 上海寒武纪信息科技有限公司 | 集成电路芯片装置及相关产品 |
CN112308219A (zh) * | 2019-07-26 | 2021-02-02 | 爱思开海力士有限公司 | 执行算术运算的方法和执行算术运算的半导体器件 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150058268A1 (en) * | 2012-01-27 | 2015-02-26 | International Business Machines Corporation | Hierarchical scalable neuromorphic synaptronic system for synaptic and structural plasticity |
CN105512723A (zh) * | 2016-01-20 | 2016-04-20 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
CN105976408A (zh) * | 2016-04-28 | 2016-09-28 | 北京大学 | 一种量子逆向传播神经网络的数字全息压缩传输方法 |
CN106650817A (zh) * | 2016-12-29 | 2017-05-10 | 中国科学院福建物质结构研究所 | 一种基于深度学习的多模式数据融合方法 |
CN106951395A (zh) * | 2017-02-13 | 2017-07-14 | 上海客鹭信息技术有限公司 | 面向压缩卷积神经网络的并行卷积运算方法及装置 |
CN107239825A (zh) * | 2016-08-22 | 2017-10-10 | 北京深鉴智能科技有限公司 | 考虑负载均衡的深度神经网络压缩方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10223635B2 (en) * | 2015-01-22 | 2019-03-05 | Qualcomm Incorporated | Model compression and fine-tuning |
EP3374932B1 (en) * | 2016-02-03 | 2022-03-16 | Google LLC | Compressed recurrent neural network models |
CN107220706A (zh) * | 2016-12-29 | 2017-09-29 | 恩泊泰(天津)科技有限公司 | 基于参数压缩和结构压缩的车载深度神经网络优化方法 |
CN107368885A (zh) * | 2017-07-13 | 2017-11-21 | 北京智芯原动科技有限公司 | 基于多粒度剪枝的网络模型压缩方法及装置 |
-
2017
- 2017-12-30 CN CN201711499267.XA patent/CN109993291B/zh active Active
-
2018
- 2018-12-27 TW TW107147413A patent/TWI768167B/zh active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150058268A1 (en) * | 2012-01-27 | 2015-02-26 | International Business Machines Corporation | Hierarchical scalable neuromorphic synaptronic system for synaptic and structural plasticity |
CN105512723A (zh) * | 2016-01-20 | 2016-04-20 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
CN105976408A (zh) * | 2016-04-28 | 2016-09-28 | 北京大学 | 一种量子逆向传播神经网络的数字全息压缩传输方法 |
CN107239825A (zh) * | 2016-08-22 | 2017-10-10 | 北京深鉴智能科技有限公司 | 考虑负载均衡的深度神经网络压缩方法 |
CN106650817A (zh) * | 2016-12-29 | 2017-05-10 | 中国科学院福建物质结构研究所 | 一种基于深度学习的多模式数据融合方法 |
CN106951395A (zh) * | 2017-02-13 | 2017-07-14 | 上海客鹭信息技术有限公司 | 面向压缩卷积神经网络的并行卷积运算方法及装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109902817A (zh) * | 2017-12-11 | 2019-06-18 | 北京中科寒武纪科技有限公司 | 板卡和神经网络运算方法 |
CN109902817B (zh) * | 2017-12-11 | 2021-02-09 | 安徽寒武纪信息科技有限公司 | 板卡和神经网络运算方法 |
US11657258B2 (en) | 2017-12-11 | 2023-05-23 | Cambricon Technologies Corporation Limited | Neural network calculation apparatus and method |
US11803735B2 (en) | 2017-12-11 | 2023-10-31 | Cambricon Technologies Corporation Limited | Neural network calculation apparatus and method |
CN111767996A (zh) * | 2018-02-27 | 2020-10-13 | 上海寒武纪信息科技有限公司 | 集成电路芯片装置及相关产品 |
CN111767996B (zh) * | 2018-02-27 | 2024-03-05 | 上海寒武纪信息科技有限公司 | 集成电路芯片装置及相关产品 |
CN112308219A (zh) * | 2019-07-26 | 2021-02-02 | 爱思开海力士有限公司 | 执行算术运算的方法和执行算术运算的半导体器件 |
Also Published As
Publication number | Publication date |
---|---|
TWI768167B (zh) | 2022-06-21 |
TW201931216A (zh) | 2019-08-01 |
CN109993291B (zh) | 2020-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110197270B (zh) | 集成电路芯片装置及相关产品 | |
CN109993301A (zh) | 神经网络训练装置及相关产品 | |
CN108170640A (zh) | 神经网络运算装置及应用其进行运算的方法 | |
CN109993291A (zh) | 集成电路芯片装置及相关产品 | |
CN111160542B (zh) | 集成电路芯片装置及相关产品 | |
US11710031B2 (en) | Parallel processing circuits for neural networks | |
CN107957975A (zh) | 一种计算方法及相关产品 | |
US11651202B2 (en) | Integrated circuit chip device and related product | |
US20200175357A1 (en) | Integrated circuit chip device and related product | |
CN110196735A (zh) | 一种计算装置及相关产品 | |
CN110197268A (zh) | 集成电路芯片装置及相关产品 | |
CN109961134A (zh) | 集成电路芯片装置及相关产品 | |
CN110197274A (zh) | 集成电路芯片装置及相关产品 | |
CN110197271A (zh) | 集成电路芯片装置及相关产品 | |
CN110197272A (zh) | 集成电路芯片装置及相关产品 | |
TWI787430B (zh) | 積體電路晶片裝置、晶片、電子設備、及神經網絡的運算方法 | |
CN109961135A (zh) | 集成电路芯片装置及相关产品 | |
US11734548B2 (en) | Integrated circuit chip device and related product | |
CN110197265B (zh) | 集成电路芯片装置及相关产品 | |
CN110197266A (zh) | 集成电路芯片装置及相关产品 | |
CN110197267A (zh) | 神经网络处理器板卡及相关产品 | |
CN111767997B (zh) | 集成电路芯片装置及相关产品 | |
CN109993284A (zh) | 集成电路芯片装置及相关产品 | |
CN109978150A (zh) | 神经网络处理器板卡及相关产品 | |
CN110197273B (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 |