[go: up one dir, main page]

CN109902814A - 神经网络运算模块和方法 - Google Patents

神经网络运算模块和方法 Download PDF

Info

Publication number
CN109902814A
CN109902814A CN201810042283.4A CN201810042283A CN109902814A CN 109902814 A CN109902814 A CN 109902814A CN 201810042283 A CN201810042283 A CN 201810042283A CN 109902814 A CN109902814 A CN 109902814A
Authority
CN
China
Prior art keywords
input data
matrix
input
data
neural network
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
Application number
CN201810042283.4A
Other languages
English (en)
Other versions
CN109902814B (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cambricon Technologies Corp Ltd
Beijing Zhongke Cambrian Technology Co Ltd
Original Assignee
Beijing Zhongke Cambrian Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Zhongke Cambrian Technology Co Ltd filed Critical Beijing Zhongke Cambrian Technology Co Ltd
Priority to CN201810042283.4A priority Critical patent/CN109902814B/zh
Publication of CN109902814A publication Critical patent/CN109902814A/zh
Application granted granted Critical
Publication of CN109902814B publication Critical patent/CN109902814B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/22Microcontrol or microprogram arrangements
    • G06F9/223Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Machine Translation (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Memory System (AREA)
  • Image Processing (AREA)
  • Control Of Electric Motors In General (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Electrotherapy Devices (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Analysis (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种神经网络运算模块,其映射单元接收到第一输入数据的连接关系数据后,根据该第一输入数据的连接关系数据获取处理后的第一输入数据,运算单元获取处理后的第一输入数据和处理后的第二输入数据后,根据指令控制单元对神经网络运算指令进行译码得到的微指令对处理后的第一输入数据和处理后的第二输入数据进行人工神经网络运算;其中,第一输入数据为输入神经元或者权值,第二输入数据为权值或者输入神经元,且第一输入数据和第二输入数据不一致。采用本发明实施例减小了在进行人工神经网络运算之前译码的工作量,进而减小了额外的开销,并且提高了运算速率。

Description

神经网络运算模块和方法
技术领域
本发明涉及神经网络领域,尤其涉及一种神经网络运算模块和方法。
背景技术
人工神经网络(Artificial Neural Networks,ANNs)简称为神经网络(NeuralNetworks,NNs)。它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间的相互连接关系,从而达到处理信息的目的。
神经网络是一个高计算量和高访存的算法,权值越多,计算量和访存量。都会增大。为了减小计算量和权值数量,从而降低访存量,因此提出了稀疏神经网络。稀疏神经网络的定义为:在神经网络中,值为0的权值的数目很多,并且值为非0的权值分布没有规律,则称该神经网络为稀疏神经网络。定义权值为0的元素数量与神经网络所有权值元素数量的比值为神经网络的稀疏度,如图1a所示。
现有技术中,GPU在执行图形图像运算以及科学计算时会涉及稀疏神经网络的计算,但是由于GPU是专门用来执行图形图像运算以及科学计算的设备,没有对稀疏的卷积神经网络运算的专门支持,仍然需要大量的前端译码工作才能执行稀疏的人工神经网络运算,带来了大量的额外开销。另外GPU只有较小的片上缓存,多层人工神经网络的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈,同时带来了巨大的功耗开销。
发明内容
本发明实施例提供一种神经网络运算模块及方法,通过对神经网络数据(包括输入神经元和权值)进行处理,减小了在进行人工神经网络运算之前译码的工作量,进而减小了额外的开销,提高了运算速率。
第一方面,本发明实施例提供了一种神经网络运算模块,包括:
映射单元,用于获取第一输入数据的连接关系数据后,根据所述第一输入数据的连接关系数据获取处理后的第一输入数据,并将所述处理后的第一输入数据存储到第一输入缓存单元中;所述第一输入数据的连接关系数据为输入神经元的连接关系数据或者权值的连接关系数据,所述处理后的第一输入数据为处理后的输入神经元或者处理后的权值;
运算单元,用于从第一输入缓存单元和第二输入缓存单元中分别获取所述处理后的第一输入数据和所述处理后的第二输入数据后,根据微指令对所述处理后的第一输入数据和所述处理后的第二输入数据进行人工神经网络运算,以得到运算结果;
其中,所述处理后的第二输入数据为处理后的输入神经元或者处理后的权值,且所述处理后的第一输入数据与所述处理后的第二输入数据不一致。
第二方面,本发明实施例提供了一种神经网络运算方法,包括:
根据第一输入数据的连接关系数据获取处理后的第一输入数据,所述第一输入数据为输入神经元或者权值;
获取神经运算指令和处理后的第二输入数据,将所述神经运算指令译码成微指令,所述第二输入数据为输入神经元或者权值,所述第一输入数据与所述第二输入数据不一致;
根据所述微指令对所述处理后的第一输入数据和所述处理后的第二输入数据进行人工神经网络运算,以得到运算结果。
第三方面,本发明实施例提供了一种神经网络运算装置,该神经网络运算装置包括一个或者多个第一方面所述的神经网络运算模块。该神经网络运算装置用于从其他处理装置中获取待运算数据和控制信息,并执行指定的神经网络运算,将执行结果通过I/O接口传递给其他处理装置;
当所述神经网络运算装置包含多个所述神经网络运算模块时,所述多个所述神经网络运算模块间可以通过特定的结构进行链接并传输数据;
其中,多个所述神经网络运算模块通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述神经网络运算模块共享同一控制系统或拥有各自的控制系统;多个所述神经网络运算模块共享内存或者拥有各自的内存;多个所述神经网络运算模块的互联方式是任意互联拓扑。
第四方面,本发明实施例提供了一种组合处理装置,该组合处理装置包括如第三方面所述的神经网络处理装置、通用互联接口,和其他处理装置。该神经网络运算装置与上述其他处理装置进行交互,共同完成用户指定的操作。
第五方面,本发明实施例提供了一种神经网络芯片,该神经网络芯片包括上述第一方面所述的神经网络运算模块、上述第三方面所述的神经网络运算装置或者上述第四方面所述的组合处理装置。
第六方面,本发明实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述第五方面所述的神经网络芯片;
第七方面,本发明实施例提供了一种板卡,该板卡包括上述第六方面所述的神经网络芯片封装结构。
第八方面,本发明实施例提供了一种电子装置,该电子装置包括上述第六方面所述的神经网络芯片或者上述第七方面所述的板卡。
可以看出,在本发明实施例的方案中,映射单元接收到第一输入数据的连接关系数据后,根据该第一输入数据的连接关系数据获取处理后的第一输入数据,运算单元获取处理后的第一输入数据和处理后的第二输入数据后,根据指令控制单元对神经网络运算指令进行译码得到的微指令对处理后的第一输入数据和处理后的第二输入数据进行人工神经网络运算;其中,第一输入数据为输入神经元或者权值,第二输入数据为权值或者输入神经元,且第一输入数据和第二输入数据不一致。与现有技术相比,采用本发明实施例减小了在进行人工神经网络运算之前译码的工作量,进而减小了额外的开销,并且提高了运算速率。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a为本发明实施例提供的一种稀疏神经网络结构示意图;
图1b为本发明实施例提供的一种神经网络运算模块的结构示意图;
图2为本发明实施例提供的一种神经网络示意图;
图3为本发明实施例提供的另一种神经网络示意图;
图4为本发明实施例提供的另一种神经网络示意图;
图5为本发明实施例提供的另一种神经网络示意图;
图6为本发明实施例提供的另一种神经网络运算模块的结构示意图;
图7a为本发明实施例提供的一种组合处理装置的结构示意图;
图7b为本发明实施例提供的另一种组合处理装置的结构示意图;
图8为本发明实施例提供的一种板卡的结构示意图;
图9为本发明实施例提供的一种神经网络芯片封装结构的示意图;
图10为本发明实施例提供的另一种神经网络芯片封装结构的示意图;
图11为本发明实施例提供的另一种神经网络芯片封装结构的示意图;
图12为本发明实施例提供的一种神经网络运算方法的流程示意图。
具体实施方式
以下分别进行详细说明。
本发明的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
参见图1b、图1b为本发明实施例提供的一种神经网络运算模块的结构示意图。如图1b所示,该神经网络运算模块包括映射单元101和运算单元102。
其中,上述映射单元101,用于获取第一输入数据的连接关系数据后,根据所述第一输入数据的连接关系数据获取处理后的第一输入数据,并将所述处理后的第一输入数据存储到第一输入缓存单元106中;所述第一输入数据的连接关系数据为输入神经元的连接关系数据或者权值的连接关系数据,所述处理后的第一输入数据为处理后的输入神经元或者处理后的权值。
在一种可行的实施例中,所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以列表的列表LIL的形式表示,以所述LIL的形式表示的连接关系数据包括至少一个列表,所述至少一个列表中的每个列表包括至少一个记录,所述记录包括绝对值大于预设阈值的第一输入数据的列索引和绝对值大于预设阈值的第一输入数据的值,所述映射单元101具体用于:
根据所述LIL中的每个记录获取所述处理后的第一输入数据,并将所述处理后的第一输入数据存储到所述第一输入缓存单元106中。
具体地,以LIL的形式表示具体是将上述第一输入数据矩阵的每一行中绝对值大于预设阈值的第一输入数据的信息存储在一个列表中,该列表中的每个记录包括绝对值大于预设阈值的第一输入数据的列索引及该绝对值大于预设阈值的第一输入数据的值。
举例说明,假设上述第一输入数据为权值,第一输入数据的矩阵为权值矩阵,该权值矩阵为则该权值的连接关系数据用LIL的形式表示为((1,x1),(2,x4),((1,x2),(2,x5)),(1,x3))。该权值的连接关系数据中有4个列表,表示该权值矩阵对应的输入神经元的数量为4个,分别为i1,i2,i3和i4。上述LIL中列表中最多有两个记录,由此可知该权值矩阵对应的输出神经元个数为2,分别为o1和o2。上述第一个列表中的记录(1,x1)表示输入神经元i1与输出神经元o1之间的权值为x1,上述第二个列表中的记录(2,x4)表示输入神经元i2与输出神经元o2之间的权值为x4,上述第三个列表中的记录(1,x2)表示输入神经元i3与输出神经元o1之间的权值为x2,记录(2,x5)表示输入神经元i3与输出神经元o1之间的权值为x5,上述第四个列表中的记录(1,x3)表示输入神经元i4与输出神经元o1之间的权值为x3。因此由上述LIL可得到如图2所示的神经网络结构。
对于上述输出神经元o1,上述映射单元101输出权值x1,x2和x3,该权值x1,x2和x3分别对应输入神经元i1,i3和i4;对于上述输出神经元o2,上述映射单元101输出权值x4和x5,该权值x4和x5分别对应输入神经元i2和i3。上述映射单元101将上述权值x1,x2和x3与x4和x5存储到上述第一输入缓存单元106中。
需要指出的是,当上述第一输入数据为输入神经元,上述第一输入数据的连接关系数据为输入神经元的连接关系数据时,上述映射单元106可根据上述方法获取上述处理后的输入神经元。
上述以LIL的形式表示上述第一输入数据(输入神经元或权值)的连接关系数据的优点在于简单,可快速构造矩阵,方便修改(按照列索引的大小顺序存储记录时),支持灵活的切片操作。
在一种可行的实施例中,所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以坐标列表(Coordinate list,COO)的形式表示,以所述COO形式表示的连接关系数据由至少一个元组组成,所述元组包括第一输入数据矩阵中绝对值大于预设阈值的第一输入数据在所述第一输入数据矩阵中的行号、列号和该绝对值大于预设阈值的第一输入数据的值,所述映射单元101具体用于:
根据所述坐标列表中的每个元组获取所述处理后的第一输入数据,并将所述处理后的第一输入数据存储到所述第一输入缓存单元106中。
具体地,该坐标列表为由至少一个元组构成的列表,该元组包括绝对值大于预设阈值的第一输入数据在上述第一输入数据矩阵中的行号,列号和该绝对值大于预设阈值的第一输入数据的值组成的。当上述第一输入数据为权值时,上述坐标列表中的每个元组表示序号为行号的输入神经元与序号为列号的输出神经元之间的权值为该元组对应的非零权值。并且坐标列表的元组中的最大行号值为权值矩阵对应的输入神经元的个数,最大列号值为权值矩阵对应的输出神经元的个数。
换句话说,上述坐标列表中每个元组表示绝对值大于预设阈值的第一输入数据在第一输入数据矩阵的位置信息。
举例说明,假设假设上述第一输入数据为权值,第一输入数据的矩阵为权值矩阵,该权值矩阵为则该权值矩阵的连接关系数据以COO的形式表示为(1,1,x1),(2,2,x4),(3,1,x2),(3,2,x5),(4,1,x3),该COO的元组中最大行号值为4和最大的列号值为2,该权值矩阵对应的输入神经元个数为4和输出神经元的个数为2,分别为输入神经元i1,i2,i3、i4和输出神经元o1,o2,由元组(1,1,x1)可知输入神经元i1与输出神经元o1之间的权值为x1,由元组(2,2,x4)可知输入神经元i2与输出神经元o2之间的权值为x4,由元组(3,1,x2)可知输入神经元i3与输出神经元o1之间的权值为x2,由元组(3,2,x5)可知输入神经元i3与输出神经元o2之间的权值为x5,由元组(4,1,x3)可知输入神经元i4与输出神经元o1之间的权值为x3。由上述坐标列表可得到如图2所示的神经网络结构。
对于上述输出神经元o1,上述映射单元101输出权值x1,x2和x3,该权值x1,x2和x3分别对应输入神经元i1,i3和i4;对于上述输出神经元o2,上述映射单元101输出权值x4和x5,该权值x4和x5分别对应输入神经元i2和i3。上述映射单元101将上述权值x1,x2和x3、x4和x5存储到上述第一输入缓存单元106中。
需要指出的是,当上述第一输入数据为输入神经元,上述第一输入数据的连接关系数据为输入神经元的连接关系数据时,上述映射单元101可根据上述方法获取上述处理后的输入神经元。
上述以COO的形式表示上述第一输入数据的连接关系数据的优点在于简单,可以快速构建矩阵,方便修改。这种方法在矩阵特别稀疏的时候最适用,不管一个矩阵有多么巨大,若它只有一个非零元素,使用COO只需要3个数字,配合原矩阵的大小即可重建原矩阵,支持快速地与其他格式互相转化。
在一种可行的实施例中,所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以压缩稀疏行(Compressed Sparse Row,CSR)的形式表示,以所述CSR的形式表示的连接关系数据包括三个数组,分别为第一数组,第二数组和第三数组,所述第一数组存储第一输入数据矩阵中的绝对值大于预设阈值的第一输入数据的值,所述第二数组存储所述第一输入数据矩阵中的绝对值大于预设阈值的第一输入数据在所述第一输入数据矩阵中的列索引,所述第三数组用于累加存储所述第一输入数据矩阵中每一行绝对值大于预设阈值的第一输入数据的个数,并且所述第三数组中的最后一个元素存储所述第一输入数据矩阵中绝对值大于预设阈值的第一输入数据的个数,所述映射单元101具体用于:
根据所述第一数组,所述第二数组和所述第三数组获取所述处理后的第一输入数据,并将所述处理后的第一输入数据存储到所述第一输入缓存单元106中。
具体地,采用CSR的形式是把上述第一输入数据矩阵的行的信息压缩存储了,只显式保留每行第一个绝对值大于预设阈值的第一输入数据的位置。将上述第一输入数据矩阵通过三个数组表示:
上述第一数组存储上述第一输入数据矩阵中的所有绝对值大于预设阈值的第一输入数据的值,其顺序按照从左至右、从上到下的行遍历方式排列元素,该第一数组记作A。该第一数组的长度即第一输入数据矩阵中绝对值大于预设阈值的第一输入数据的个数;
上述第二数组存储上述第一数组A中的每个元素分别在第一输入数据矩阵中的列索引(即列号),因而第二数组的长度与数组A的长度相同,记此数组为JA。
上述第三数组记作IA,该数组IA的长度为第一输入数据矩阵的行数加1。该数组IA中的元素累加存储上述第一输入数据矩阵中每一行绝对值大于预设阈值的第一输入数据的个数,具体可通过如下递归方法获取,并在该数组IA中的最后一个元素中保存整个第一输入数据矩阵中绝对值大于预设阈值的第一输入数据的个数
若上述三个数组的序号与第一输入数据矩阵的序号从0开始,可以用如下的递归方法定义数组IA:
IA[0]=0
IA[i]=IA[i-1]+第一输入数据矩阵中第i-1行的绝对值大于预设阈值的第一输入数据个数(i>0)
举例说明,假设假设上述第一输入数据为权值,第一输入数据的矩阵为权值矩阵,该权值矩阵为由于上述第一数组A存储权值矩阵的所有非零权值的值,其顺序按照从左到右,从上到下的行遍历方式排列元素,故该第一数组A=[5,8,3,6];第二数组JA存储上述数组A中每个元素分别在上述权值矩阵中的列索引(即列号),则该数组JA=[0,1,2,1]。在第三数组IA中累加存储上述权值矩阵中每一行的非零权值的个数,根据上述递归方式确定该数组IA=[0,0,2,3,4]。
由上述第一数组A可知上述权值矩阵包括4个非零权值,分别为5,3,8,6。由上述第二数组JA可知上述4个非零权值在上述权值矩阵中的列索引,即权值5在上述权值矩阵中的第一列,权值8在上述权值矩阵中的第二列,权值3在上述权值矩阵中的第三列,权值6在上述权值矩阵中的第二列,由上述第三数组IA及其定义可知上述权值矩阵的第一行没有非零权值,第二行有2个非零权值,第三行和第四行各有1个非零权值;由上述信息可得到上述权值矩阵以坐标列表的形式表示为:(1,0,5),(1,1,8),(2,2,3),(3,1,6),进一步可确定上述权值矩阵。由该权值矩阵的形式可知,该矩阵的第一行和第四列的元素的值均为0,因此可确定该矩阵对应的输入神经元为3个,分别为i2,i3和i4;该权值矩阵对应的输出神经元分别为o1,o2和o3。最终可确定上述输入神经元i2与输出神经元o1之间的权值为5,上述输入神经元i2与输出神经元o2之间的权值为8,上述输入神经元i3与输出神经元o3之间的权值为3,上述输入神经元i4与输出神经元o2之间的权值为6,最终可得到如图3所示的神经网络结构。
对于上述输出神经元o1,上述映射单元101输出权值5,其对应输入神经元i2;对于上述输出神经元o2,上述映射单元101输出权值8和6,其分别对应输入神经元i2和i4;对于上述输出神经元o3,上述映射单元101输出权值3,其对应输入神经元i3。上述映射单元101将上述权值5、8、6和3存储到上述第一输入缓存单元106中。
需要指出的是,当上述第一输入数据为输入神经元,上述第一输入数据的连接关系数据为输入神经元的连接关系数据时,上述映射单元101可根据上述方法获取上述处理后的输入神经元。
上述以CSR的形式表示上述第一输入数据的连接关系数据与COO的形式表示相比压缩了行索引的信息,并且采用CSR形式在存储稀疏矩阵时非零元素平均使用的字节数最为稳定。
在一种可行的实施例中,所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以压缩稀疏列(Compressed Sparse Column,CSC)的形式表示,以所述CSC的形式表示的连接关系数据包括三个数组,分别为第四数组,第五数组和第六数组,所述第四数组存储第一输入数据矩阵中的绝对值大于预设阈值的第一输入数据的值,所述第五数组存储所述第一输入数据矩阵中的绝对值大于预设阈值的第一输入数据在所述第一输入数据矩阵中的行索引,所述第六数组用于累加存储所述第一输入数据矩阵中每一列绝对值大于预设阈值的第一输入数据的个数,并且所述第六数组中的最后一个元素存储所述第一输入数据矩阵中绝对值大于预设阈值的第一输入数据的个数,所述映射单元具体用于:
根据所述第四数组,所述第五数组和所述第六数组获取所述处理后的第一输入数据,并将所述处理后的第一输入数据存储到所述第一输入缓存单元中。
具体地,采用CSC的形式是把上述第一输入数据矩阵的列的信息压缩存储了,只显式保留每列第一个绝对值大于预设阈值的第一输入数据的位置。将上述第一输入数据矩阵用三个数组表示:
上述第四数组存储上述第一输入数据矩阵中的所有绝对值大于预设阈值的第一输入数据的值,其顺序按照从上至下、从左到右的列遍历方式排列元素,该第四数组记作A’,其长度即第一输入数据矩阵中绝对值大于预设阈值的第一输入数据的个数;
上述第五数组存储上述第一数组A’中的每个元素分别在第一输入数据矩阵中的行索引(即行号),因而其长度与第一数组A’相同,记此数组为JA’。
上述第六数组记作IA’,该数组的长度为上述第一输入数据矩阵的列数加1。该数组IA’中的元素累加存储上述第一输入数据矩阵中每一列绝对值大于预设阈值的第一输入数据的个数,具体可通过如下递归方法获取,并且在该数组IA’累加整个第一输入数据矩阵中每一列中绝对值大于预设阈值的第一输入数据的个数。
若上述三个数组的序号与第一输入数据矩阵的序号从0开始,可以用如下的递归方法定义数组IA’:
IA’[0]=0
IA’[j]=IA’[j-1]+第一输入数据矩阵中第j-1列的绝对值大于预设阈值的第一输入数据个数(j>0)
举例说明,假设假设上述第一输入数据为权值,第一输入数据的矩阵为权值矩阵,该权值矩阵为由于上述第四数组A’存储权值矩阵的所有非零权值的数,其顺序按照从左到右,从上到下的行遍历方式排列元素,故该数组A’=[4,6,1,3,5,2,7,8];上述第五数组JA’存储上述数组A’中每个元素分别在上述权值矩阵中的行索引(即行号),则该数组JA’=[0,3,1,3,2,0,2,3];根据上述递归方式确定数组IA’=[0,2,4,5,8]。
由上述数组A’可知上述权值矩阵包括8个非零权值,分别为4,6,1,3,5,2,7,8。由上述数组JA’可知上述8个非零权值在上述权值矩阵中的行索引,即权值4在上述权值矩阵中的第一列,权值6在上述权值矩阵中的第4列,权值1在上述权值矩阵中的第二列,权值3在上述权值矩阵中的第四列,权值5在上述权值矩阵中的第三列,权值2在上述权值矩阵中的第一列,权值7在上述权值矩阵中的第三列,权值8在上述权值矩阵中的第四列,由上述数组IA’及其定义可知上述权值矩阵的第一列和第二列各有2个非零权值,第三列有1个非零权值,第四行有3个非零权值;由上述信息可得到上述权值矩阵以坐标列表的形式表示为:(0,0,4),(3,0,6),(1,1,1),(3,1,3),(2,2,5),(0,3,2),(2,3,7),(3,3,8),进一步可确定上述权值矩阵。由该权值矩阵的形式可知,该矩阵的每一行和每一列均有非零权值,因此可确定该矩阵对应的输入神经元为4个,分别为i1,i2,i3和i4;该权值矩阵对应的输出神经元分别为o1,o2,o3和o4。最终可确定上述输入神经元i1与输出神经元o1之间的权值为4,上述输入神经元i1与输出神经元o4之间的权值为2,上述输入神经元i2与输出神经元o2之间的权值为1,上述输入神经元i3与输出神经元o3之间的权值为5,上述输入神经元i3与输出神经元o4之间的权值为7,上述输入神经元i4与输出神经元o1之间的权值为6,上述输入神经元i4与输出神经元o2之间的权值为3,上述输入神经元i4与输出神经元o4之间的权值为8,最终可得到如图4所示的神经网络结构。
对于上述输出神经元o1,上述映射单元101输出权值5和4,其分别对应输入神经元i1和i4;对于上述输出神经元o2,上述映射单元101输出权值1和3,其分别对应输入神经元i2和i4;对于上述输出神经元o3,上述映射单元101输出权值5,其对应输入神经元i3;对于上述输出神经元o3,上述映射单元101输出权值2,7和8,其对应输入神经元i1,i3和i4。上述映射单元101将上述权值4,6,1,3,5,2,7和8存储到上述第一输入缓存单元106中。
需要指出的是,当上述第一输入数据为输入神经元,上述第一输入数据的连接关系数据为输入神经元的连接关系数据时,上述映射单元101可根据上述方法获取上述处理后的输入神经元。
上述以CSC的形式表示上述第一输入数据的连接关系数据与COO的形式表示相比压缩了列索引的信息,对于算术运算、列切片、矩阵与向量的点乘都很有效。
在一种可行的实施例中,所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以ELL的形式表示,以所述ELL的形式表示的连接关系数据包括两个矩阵,分别为第一矩阵和第二矩阵,所述第一矩阵用于存储所述第一输入数据矩阵中绝对值大于预设阈值的第一输入数据在所述第一输入数据矩阵中的列号,所述第二矩阵存储所述绝对值大于预设阈值的第一输入数据的值,所述映射单元101具体用于:
根据所述第一矩阵和所述第二矩阵获取所述处理后的第一输入数据,并将所述处理后的第一输入数据存储到所述第一输入缓存单元106中。
具体地,该方式采用两个与第一输入数据矩阵的行数相同矩阵存储该权值矩阵中绝对值大于预设阈值的第一输入数据的信息。上述第一矩阵存储上述第一输入数据矩阵中非零权值的列号,上述第二矩阵存储上述第一输入数据矩阵中绝对值大于预设阈值的第一输入数据的值,行号就不存了,用自身所在的行来表示;这两个矩阵每一行都是从头开始放,如果没有元素了就用个结束标志(比如*)结束。
举例说明,假设假设上述第一输入数据为权值,第一输入数据的矩阵为权值矩阵,该权值矩阵为则该权值矩阵的连接关系数据用ELL的形式表示为:
第一矩阵为:第二矩阵为
由上述第一矩阵和第二矩阵的行数可知,上述权值矩阵对应的输入神经元的个数为4,分别为输入神经元i1,i2,i3和i4;由上述第一矩阵和第二矩阵的列数可知,上述权值矩阵对应的输出神经元的个数为2,分别为输出神经元o1和o2。根据上述第一矩阵和第二矩阵可知,上述输入神经元i1与输出神经元o1之间的权值为x1,输入神经元i2与输出神经元o2之间的权值为x4,输入神经元i3与输出神经元o1之间的权值为x2,输入神经元i3与输出神经元o2之间的权值为x5,输入神经元i4与输出神经元o1之间的权值为x3。由上述ELL表示的连接关系数据可得到如图2所示的神经网络结构。
对于上述输出神经元o1,上述映射单元101输出权值x1,x2和x3,该权值x1,x2和x3分别对应输入神经元i1,i3和i4;对于上述输出神经元o2,上述映射单元101输出权值x4和x5,该权值x4和x5分别对应输入神经元i2和i3。上述映射单元101将上述权值x1,x2和x3、x4和x5存储到上述第一输入缓存单元106中。
需要指出的是,当上述第一输入数据为输入神经元,上述第一输入数据的连接关系数据为输入神经元的连接关系数据时,上述映射单元101可根据上述方法获取上述处理后的输入神经元。
对于通过ELL方式表示的连接关系数据,当第一输入数据矩阵的任一行的绝对值大于预设阈值的第一输入数据多余其他行时,在第一矩阵中的结尾处会存在多个结束标志,浪费缓存资源。为了解决该问题,可采用以下形式表示上述连接关系数据。
在一种可行的实施例中,所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以混合(Hybird,HYB)的形式表示,以所述HYB形式表示的连接关系数据包括第三矩阵、第四矩阵和至少一个元组,所述第四矩阵存储第一输入数据矩阵中每一行最大相同数量的绝对值大于预设阈值的第一输入数据,所述第三矩阵存储在所述第四矩阵中存储的绝对值大于预设阈值的第一输入数据在所述第一输入数据矩阵中的列号,所述至少一个元组中的每个元组用于存储所述第一输入数据矩阵中的任一行相对于其他行多出来第一输入数据的行号,列号和该第一输入数据的值,所述映射单元101具体用于:
根据所述第三矩阵、所述第四矩阵和所述至少一个元组获取所述处理后的第一输入数据,并将所述处理后的第一输入数据存储到所述第一输入缓存单元106中。
具体地,该方式可以看成上述ELL和COO方式的组合。采用COO的方式存储第一输入数据矩阵中某一行相对于其他行多出来的绝对值大于预设阈值的第一输入数据。采用ELL的方式存储权值矩阵中每一行最大相同数量的绝对值大于预设阈值的第一输入数据。
举例说明,假设假设上述第一输入数据为权值,第一输入数据的矩阵为权值矩阵,该权值矩阵为:则上述ELL中的第三矩阵为第四矩阵为上述COO形式的元组为(2,3,9)。由上述第三矩阵和第四矩阵的行数可知,上述权值矩阵对应的输入神经元的个数为4,分别为
输入神经元i1,i2,i3和i4;根据上述坐标列表中的列号(3)可知上述权值矩阵对应的输出神经元的个数为4,分别为输出神经元o1,o2,o3和o4。由上述第一矩阵,第二矩阵和坐标列表可知:输入神经元i1与输出神经元o1之间的权值为1,输入神经元i1与输出神经元o2之间的权值为7,输入神经元i2与输出神经元o2之间的权值为2,输入神经元i2与输出神经元o3之间的权值为8,输入神经元i3与输出神经元o1之间的权值为5,输入神经元i3与输出神经元o3之间的权值为3,输入神经元i3与输出神经元o4之间的权值为9,输入神经元i4与输出神经元o2之间的权值为6,输入神经元i4与输出神经元o4之间的权值为4,可以得到如图5所示的神经网络结构。
对于上述输出神经元o1,上述映射单元101输出权值1和5,分别对应输入神经元i1和i3;对于上述输出神经元o2,上述映射单元101输出权值7和2,分别对应输入神经元i1和i2;对于上述输出神经元o3,上述映射单元101输出权值8和3,分别对应输入神经元i2和i3;对于上述输出神经元o4,上述映射单元101输出权值9和4,分别对应输入神经元i3和i4。上述映射单元101将上述权值1,5,7,2,8,3,9和4存储到上述第一输入缓存单元106中。
需要指出的是,当上述第一输入数据为输入神经元,上述第一输入数据的连接关系数据为输入神经元的连接关系数据时,上述映射单元101可根据上述方法获取上述处理后的输入神经元。
总而言之,这六种形式(LIL、COO、CSC、CSR、ELL、HYB)在稀疏度越高的情况下越能占用更少的存储空间。LIL根据具体实现结构的不同,占用稍多于2*nnz个存储单元,空间代价优于其他方法。如果非零元素数量小于行数\列数,那么使用COO比使用CSR/CSC更加经济,反之则使用CSR/CSC更加经济。如果每行的非零元素数目比较均匀,即矩阵中的每一行的非零元素个数差别不大,这样非零元素最多的行中的非零元素数目,与不均匀的矩阵中相应非零元素最多行相比,显然会更少,那么可以考虑使用ELL。在极端均匀的情况下,即每一行的非零元素个数都一样,ELL所占存储单元个数是2*nnz,比COO和CSR、CSC都要少。但是稀疏神经网络并不能保证有这样的特性。也许有某些特定的稀疏神经网络模型会有这样的特性,那么使用ELL比较好。对于矩阵中每一行稀疏元素个数较统一的情况,采用ELL形式的表示最佳,其次是HYB(ELL+COO)。
在并行方面,COO是可以并行生成的,CSR与CSC的3个数组中的2个也是可以并行生成的。在做运算时,COO、LIL、ELL均可按行并行计算,而CSC、CSR、HYB则需要更多的预处理。
CSR擅长稀疏矩阵左乘向量,而CSC擅长于稀疏矩阵右乘向量转置。这两种表示形式可以通过转置互相转换。在神经网络的传播过程中可以使用这两种方法以及COO。ELL格式在进行稀疏矩阵-矢量乘积(sparse matrix-vector products)时效率最高。
上述运算单元102,用于从第一输入缓存单元106和第二输入缓存单元107中分别获取所述处理后的第一输入数据和所述处理后的第二输入数据后,根据微指令对所述处理后的第一输入数据和所述处理后的第二输入数据进行人工神经网络运算,以得到运算结果;
其中,所述处理后的第二输入数据为处理后的输入神经元或者处理后的权值,且所述处理后的第一输入数据与所述处理后的第二输入数据不一致。
如图6所示,上述神经网络运算模块还包括:
与所述映射单元101相连接的直接存储访问单元104和所述第一输入缓存单元106,与所述直接存储访问单元104相连接的存储单元103、指令缓存单元105、第二输入缓存单元107和输出缓存单元109,与所述指令缓存单元105相连接的指令控制单元108,所述指令控制单元108、所述第一输入缓存单元106、所述第二输入缓存单元107和所述输出缓存单元106均与所述运算单元102相连接;
所述存储单元103,用于存储所述第一输入数据的连接关系数据、所述处理后的第二输入数据、神经网络运算指令和所述运算结果;
所述直接存储访问单元104,用于在所述存储单元103与指令缓存单元105、映射单元101、所述第一输入缓存单元106和输出缓存单元109进行数据的读写;
所述第一输入缓存单元106,用于缓存所述处理后的第一输入数据;
所述第二输入缓存单元107,用于缓存所述直接存储访问单元104读取的所述处理后的第二输入数据;
所述指令缓存单元105,用于缓存所述直接存储访问单元104读取神经网络运算指令;
所述指令控制单元108,用于从所述指令缓存单元105中获取所述神经网络运算指令,并将所述神经网络运算指令译码成所述微指令;
所述输出缓存单元109,用于缓存所述运算结果。
具体地,上述直接存储访问单元104从上述存储单元103中读取上述神经网络运算指令,并将该神经网络运算指令写入上述指令缓存单元105中;
从上述存储单元103中读取上述第一输入数据的连接关系数据,并将该第一输入数据的连接关系数据写入上述映射单元101中;从上述存储单元103中读取处理后的第二输入数据,并将该处理后的第二输入数据写入上述第二输入缓存单元107,或者;
从上述输出缓存单元109中读取运算结果,并将该运算结果写入上述存储单元103中。
可以看出,在本发明实施例的方案中,映射单元接收到第一输入数据的连接关系数据后,根据该第一输入数据的连接关系数据获取处理后的第一输入数据,运算单元获取处理后的第一输入数据和处理后的第二输入数据后,根据指令控制单元对神经网络运算指令进行译码得到的微指令对处理后的第一输入数据和处理后的第二输入数据进行人工神经网络运算;其中,第一输入数据为输入神经元或者权值,第二输入数据为权值或者输入神经元,且第一输入数据和第二输入数据不一致。与现有技术相比,采用本发明实施例减小了在进行人工神经网络运算之前译码的工作量,进而减小了额外的开销,并且提高了运算速率。
需要指出的是,本发明实施例中提到的输入神经元和输出神经元并非是指整个神经网络的输入层中的神经元和输出层中的神经元,而是对于神经网络中任意相邻的两层神经元,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为输出神经元。以卷积神经网络为例,假设一个卷积神经网络有L层,K=1,2,3…L-1,对于第K层和第K+1层来说,第K层被称为输入层,该层中的神经元为上述输入神经元,第K+1层被称为输入层,该层中的神经元为上述输出神经元,即除了顶层之外,每一层都可以作为输入层,其下一层为对应的输出层。
上述各单元可以是硬件电路包括数字电路,模拟电路等等。硬件电路的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。上述神经网络运算模块中的运算单元可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。上述存储单元、指令缓存单元,第一输入缓存单元、第二输入缓存单元和输出缓存单元均可以是任何适当的磁存储介质或者磁光存储介质,比如RRAM,DRAM,SRAM,EDRAM,HBM,HMC等等。
在一种可行的实施例中,本发明实施例提供了一种神经网络运算装置,该神经网络运算装置包括一个或多个如图1b所示实施例所述的神经网络运算模块,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的神经网络运算,将执行结果通过I/O接口传递给其他处理装置;
当所述神经网络运算装置包含多个所述神经网络运算模块时,所述多个所述神经网络运算模块间可以通过特定的结构进行连接并传输数据;
其中,多个所述神经网络运算模块通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述神经网络运算模块共享同一控制系统或拥有各自的控制系统;多个所述神经网络运算模块共享内存或者拥有各自的内存;多个所述神经网络运算模块的互联方式是任意互联拓扑。
该神经网络运算装置具有较高的兼容性,可通过pcie接口与各种类型的服务器相连接。
在一种可行的实施例中,本发明实施例提供了一种组合处理装置,该组合装置包括如上述神经网络运算装置,通用互联接口和其他处理装置。
上述神经网络运算装置与上述其他处理装置进行交互,共同完成用户指定的操作。参见图7a,图7a为本发明实施例提供的一种组合处理装置的结构示意图。如图7a所示,该组合处理装置包括上述神经网络运算装置701、通用互联接口702和其他处理装置703。
其中,上述其他处理装置703包括中央处理器(Central Processing Unit)、图形处理器(Graphics Processing Unit,GPU)、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置703所包括的处理器数量不做限制。其他处理装置703作为神经网络运算装置701与外部数据和控制的接口,包括数据搬运,完成对本神经网络运算装置的开启、停止等基本控制;其他处理装置703也可以和神经网络运算装置701协作共同完成运算任务。
上述通用互联接口702,用于在所述神经网络运算装置701与其他处理装置703间传输数据和控制指令。该神经网络运算装置701从其他处理装置703中获取所需的输入数据,写入神经网络运算装置701片上的存储装置;可以从其他处理装置703中获取控制指令,写入神经网络运算装置701片上的控制缓存;也可以读取神经网络运算装置701的存储模块中的数据并传输给其他处理装置703。
可选的,如图7b所示,上述组合处理装置还包括存储装置704,用于保存在本运算单元/运算装置或其他运算单元所需要的数据,尤其适用于所需要运算的数据在本神经网络运算装置701或其他处理装置703的内部存储中无法全部保存的数据。
上述组合装置可以作为手机、机器人、无人机等智能设备的片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。
在一种可行的实施例中,本发明实施例提供了一种神经网络芯片,该神经网络芯片包括如图1b或图6所示实施例所述的神经网络运算模块,或者上述神经网络运算装置或者上述组合处理装置。
在一种可行的实施例中,本发明实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述神经网络芯片。
在一种可行的实施例中,本发明实施例提供了一种板卡,该板卡包括上述神经网络芯片封装结构。该板卡可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、智能家居、家电、多处理器系统、基于微处理器的系统、机器人、可编程的消费电子设备、网络个人计算机(personalcomputer,PC)、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
请参照图8,图8为本发明实施例提供的一种板卡的结构示意图。如图8所示,上述板卡800包括神经网络芯片封装结构801、第一电气及非电气连接装置802和第一基板(substrate)803。
对于神经网络芯片封装结构801的具体结构不作限定,可选的,如图9所示,上述神经网络芯片封装结构801包括:神经网络芯片8011、第二电气及非电气连接装置8012、第二基板8013。
本发明所涉及的神经网络芯片8011的具体形式不作限定,上述的神经网络芯片8011包含但不限于将神经网络处理器集成的神经网络晶片上,上述晶片可以由硅材料、锗材料、量子材料或分子材料等制成。根据实际情况(例如:较严苛的环境)和不同的应用需求可将上述神经网络晶片进行封装,以使神经网络晶片的大部分被包裹住,而将神经网络晶片上的引脚通过金线等导体连到封装结构的外边,用于和更外层进行电路连接。
本发明对于第一基板803和第二基板8013的类型不做限定,可以是印制电路板(printed circuit board,PCB)或(printed wiring board,PWB),还可能为其它电路板。对PCB的制作材料也不做限定。
本发明所涉及的第二基板8013用于承载上述神经网络芯片8011,通过第二电气及非电气连接装置8012将上述的神经网络芯片8011和第二基板8013进行连接得到的神经网络芯片封装结构801,用于保护神经网络芯片8011,便于将神经网络芯片封装结构801与第一基板803进行进一步封装。
对于上述具体的第二电气及非电气连接装置8012的封装方式和封装方式对应的结构不作限定,可根据实际情况和不同的应用需求选择合适的封装方式并进行简单地改进,例如:倒装芯片球栅阵列封装(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)的封装方式对神经网络芯片8011和第二基板8013进行封装,具体的神经网络芯片封装结构801的示意图可参照图10。如图10所示,上述神经网络芯片封装结构包括:神经网络芯片21、焊盘22、焊球23、第二基板24、第二基板24上的连接点25、引脚26。
其中,焊盘22与神经网络芯片21相连,通过在焊盘22和第二基板24上的连接点25之间焊接形成焊球23,将神经网络芯片21和第二基板24连接,即实现了神经网络芯片21的封装。
引脚26用于与封装结构的外部电路(例如,神经网络处理器板卡800上的第一基板803)相连,可实现外部数据和内部数据的传输,便于神经网络芯片21或神经网络芯片21对应的神经网络处理器对数据进行处理。对于引脚的类型和数量本发明也不作限定,根据不同的封装技术可选用不同的引脚形式,并遵从一定规则进行排列。
可选的,上述神经网络芯片封装结构还包括绝缘填充物,置于焊盘22、焊球23和连接点25之间的空隙中,用于防止焊球与焊球之间产生干扰。
其中,绝缘填充物的材料可以是氮化硅、氧化硅或氧氮化硅;干扰包含电磁干扰、电感干扰等。
可选的,上述神经网络芯片封装结构还包括散热装置,用于散发神经网络芯片21运行时的热量。其中,散热装置可以是一块导热性良好的金属片、散热片或散热器,例如,风扇。
举例来说,如图11所示,上述神经网络芯片封装结构801包括:神经网络芯片21、焊盘22、焊球23、第二基板24、第二基板24上的连接点25、引脚26、绝缘填充物27、散热膏28和金属外壳散热片29。其中,散热膏28和金属外壳散热片29用于散发神经网络芯片21运行时的热量。
可选的,上述神经网络芯片封装结构801还包括补强结构,与焊盘22连接,且内埋于焊球23中,以增强焊球23与焊盘22之间的连接强度。
其中,补强结构可以是金属线结构或柱状结构,在此不做限定。
本发明对于第一电气及非电气装置802的具体形式也不作限定,可参照第二电气及非电气装置8012的描述,即通过焊接的方式将神经网络芯片封装结构801进行封装,也可以采用连接线连接或插拔方式连接第二基板8013和第一基板803的方式,便于后续更换第一基板803或神经网络芯片封装结构801。
可选的,第一基板803包括用于扩展存储容量的内存单元的接口等,例如:同步动态随机存储器(Synchronous Dynamic Random Access Memory,SDRAM)、双倍速率同步动态随机存储器(Double Date Rate SDRAM,DDR)等,通过扩展内存提高了神经网络处理器的处理能力。
第一基板803上还可包括快速外部设备互连总线(Peripheral ComponentInterconnect-Express,PCI-E或PCIe)接口、小封装可热插拔(Small Form-factorPluggable,SFP)接口、以太网接口、控制器局域网总线(Controller Area Network,CAN)接口等等,用于封装结构和外部电路之间的数据传输,可提高运算速度和操作的便利性。
将神经网络处理器封装为神经网络芯片8011,将神经网络芯片8011封装为神经网络芯片封装结构801,将神经网络芯片封装结构801封装为板卡800,可填补目前神经网络的空缺,通过板卡上的接口(插槽或插芯)与外部电路(例如:计算机主板)进行数据交互,即直接通过使用板卡800实现神经网络处理器的功能,并保护神经网络芯片8011。且板卡800上还可添加其他模块,提高了神经网络处理器的应用范围和运算效率。
在一种可行的实施例中,本发明实施例提供了一种电子装置,该电子装置包括上述板卡。
其中,该电子装置包括:机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。
上述交通工具包括飞机、轮船和/或车辆;上述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
参见图12,图12为本发明实施例提供的一种神经网络运算方法的流程示意图。如图12所示,该方法包括:
S1201、神经网络运算模块根据第一输入数据的连接关系数据获取处理后的第一输入数据。
其中,上述第一输入数据包括输入神经元或者权值。
在一种可行的实施例中,所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以列表的列表LIL的形式表示,以所述LIL的形式表示的连接关系数据包括至少一个列表,所述至少一个列表中的每个列表包括至少一个记录,所述记录包括绝对值大于预设阈值的第一输入数据的列索引和绝对值大于预设阈值的第一输入数据的值,所述根据所述第一输入数据的连接关系数据获取处理后的第一输入数据,包括:
根据所述LIL中的每个记录获取所述处理后的第一输入数据。
在一种可行的实施例中,所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以坐标列表COO的形式表示,以所述COO形式表示的连接关系数据由至少一个元组组成,所述元组包括第一输入数据矩阵中绝对值大于预设阈值的第一输入数据在所述第一输入数据矩阵中的行号、列号和该绝对值大于预设阈值的第一输入数据的值,所述根据所述第一输入数据的连接关系数据获取处理后的第一输入数据,包括:
根据所述坐标列表中的每个元组获取所述处理后的第一输入数据。
在一种可行的实施例中,所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以压缩稀疏行CSR的形式表示,以所述CSR的形式表示的连接关系数据包括三个数组,分别为第一数组,第二数组和第三数组,所述第一数组存储第一输入数据矩阵中的绝对值大于预设阈值的第一输入数据的值,所述第二数组存储所述第一输入数据矩阵中的绝对值大于预设阈值的第一输入数据在所述第一输入数据矩阵中的列索引,所述第三数组用于累加存储所述第一输入数据矩阵中每一行绝对值大于预设阈值的第一输入数据的个数,并且所述第三数组中的最后一个元素存储所述第一输入数据矩阵中绝对值大于预设阈值的第一输入数据的个数,所述根据所述第一输入数据的连接关系数据获取处理后的第一输入数据,包括:
根据所述第一数组,所述第二数组和所述第三数组获取所述处理后的第一输入数据。
在一种可行的实施例中,所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以压缩稀疏列CSC的形式表示,以所述CSC的形式表示的连接关系数据包括三个数组,分别为第四数组,第五数组和第六数组,所述第四数组存储第一输入数据矩阵中的绝对值大于预设阈值的第一输入数据的值,所述第五数组存储所述第一输入数据矩阵中的绝对值大于预设阈值的第一输入数据在所述第一输入数据矩阵中的行索引,所述第六数组用于累加存储所述第一输入数据矩阵中每一列绝对值大于预设阈值的第一输入数据的个数,并且所述第六数组中的最后一个元素存储所述第一输入数据矩阵中绝对值大于预设阈值的第一输入数据的个数,所述根据所述第一输入数据的连接关系数据获取处理后的第一输入数据,包括:
根据所述第四数组,所述第五数组和所述第六数组获取所述处理后的第一输入数据。
在一种可行的实施例中,所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以ELL的形式表示,以所述ELL的形式表示的连接关系数据包括两个矩阵,分别为第一矩阵和第二矩阵,所述第一矩阵用于存储所述第一输入数据矩阵中绝对值大于预设阈值的第一输入数据在所述第一输入数据矩阵中的列号,所述第二矩阵存储所述绝对值大于预设阈值的第一输入数据的值,所述根据所述第一输入数据的连接关系数据获取处理后的第一输入数据,包括:
根据所述第一矩阵和所述第二矩阵获取所述处理后的第一输入数据。
在一种可行的实施例中,所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以混合HYB的形式表示,以所述HYB形式表示的连接关系数据包括第三矩阵、第四矩阵和至少一个元组,所述第四矩阵存储第一输入数据矩阵中每一行最大相同数量的绝对值大于预设阈值的第一输入数据,所述第三矩阵存储在所述第四矩阵中存储的绝对值大于预设阈值的第一输入数据在所述第一输入数据矩阵中的列号,所述至少一个元组中的每个元组用于存储所述第一输入数据矩阵中的任一行相对于其他行多出来第一输入数据的行号,列号和该第一输入数据的值,所述根据所述第一输入数据的连接关系数据获取处理后的第一输入数据,包括:
根据所述第三矩阵、所述第四矩阵和所述至少一个元组获取所述处理后的第一输入数据。
S1202、神经网络运算模块获取神经网络运算指令和处理后的第二输入数据,将所述神经网络运算指令译码成微指令。
其中,所述第二输入数据为输入神经元或者权值,所述第一输入数据与所述第二输入数据不一致。
S1203、神经网络运算模块根据所述微指令对所述处理后的第一输入数据和所述处理后的第二输入数据进行人工神经网络运算,以得到运算结果。
需要说明的是,上述步骤S1201-1203的描述可参见上述图1b所示实施例的相关描述,在此不再叙述。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的任何一种神经网络运算方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上上述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种神经网络运算模块,其特征在于,包括:
映射单元,用于获取第一输入数据的连接关系数据后,根据所述第一输入数据的连接关系数据获取处理后的第一输入数据,并将所述处理后的第一输入数据存储到第一输入缓存单元中;所述第一输入数据的连接关系数据为输入神经元的连接关系数据或者权值的连接关系数据,所述处理后的第一输入数据为处理后的输入神经元或者处理后的权值;具体包括:所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以列表的列表LIL的形式表示,以所述LIL的形式表示的连接关系数据包括至少一个列表,所述至少一个列表中的每个列表包括至少一个记录,所述记录包括绝对值大于预设阈值的第一输入数据的列索引和绝对值大于预设阈值的第一输入数据的值,所述映射单元具体用于:
根据所述LIL中的每个记录获取所述处理后的第一输入数据,并将所述处理后的第一输入数据存储到第一输入缓存单元中,或者;
所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以坐标列表COO的形式表示,以所述COO形式表示的连接关系数据由至少一个元组组成,所述元组包括第一输入数据矩阵中绝对值大于预设阈值的第一输入数据在所述第一输入数据矩阵中的行号、列号和该绝对值大于预设阈值的第一输入数据的值,所述映射单元具体用于:
根据所述坐标列表中的每个元组获取所述处理后的第一输入数据,并将所述处理后的第一输入数据存储到所述第一输入缓存单元中,或者;
所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以压缩稀疏行CSR的形式表示,以所述CSR的形式表示的连接关系数据包括三个数组,分别为第一数组,第二数组和第三数组,所述第一数组存储第一输入数据矩阵中的绝对值大于预设阈值的第一输入数据的值,所述第二数组存储所述第一输入数据矩阵中的绝对值大于预设阈值的第一输入数据在所述第一输入数据矩阵中的列索引,所述第三数组用于累加存储所述第一输入数据矩阵中每一行绝对值大于预设阈值的第一输入数据的个数,并且所述第三数组中的最后一个元素存储所述第一输入数据矩阵中绝对值大于预设阈值的第一输入数据的个数,所述映射单元具体用于:
根据所述第一数组,所述第二数组和所述第三数组获取所述处理后的第一输入数据,并将所述处理后的第一输入数据存储到所述第一输入缓存单元中,或者;
所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以压缩稀疏列CSC的形式表示,以所述CSC的形式表示的连接关系数据包括三个数组,分别为第四数组,第五数组和第六数组,所述第四数组存储第一输入数据矩阵中的绝对值大于预设阈值的第一输入数据的值,所述第五数组存储所述第一输入数据矩阵中的绝对值大于预设阈值的第一输入数据在所述第一输入数据矩阵中的行索引,所述第六数组用于累加存储所述第一输入数据矩阵中每一列绝对值大于预设阈值的第一输入数据的个数,并且所述第六数组中的最后一个元素存储所述第一输入数据矩阵中绝对值大于预设阈值的第一输入数据的个数,所述映射单元具体用于:
根据所述第四数组,所述第五数组和所述第六数组获取所述处理后的第一输入数据,并将所述处理后的第一输入数据存储到所述第一输入缓存单元中,或者;
所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以ELL的形式表示,以所述ELL的形式表示的连接关系数据包括两个矩阵,分别为第一矩阵和第二矩阵,所述第一矩阵用于存储所述第一输入数据矩阵中绝对值大于预设阈值的第一输入数据在所述第一输入数据矩阵中的列号,所述第二矩阵存储所述绝对值大于预设阈值的第一输入数据的值,所述映射单元具体用于:
根据所述第一矩阵和所述第二矩阵获取所述处理后的第一输入数据,并将所述处理后的第一输入数据存储到所述第一输入缓存单元中,或者;
所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以混合HYB的形式表示,以所述HYB形式表示的连接关系数据包括第三矩阵、第四矩阵和至少一个元组,所述第四矩阵存储第一输入数据矩阵中每一行最大相同数量的绝对值大于预设阈值的第一输入数据,所述第三矩阵存储在所述第四矩阵中存储的绝对值大于预设阈值的第一输入数据在所述第一输入数据矩阵中的列号,所述至少一个元组中的每个元组用于存储所述第一输入数据矩阵中的任一行相对于其他行多出来第一输入数据的行号,列号和该第一输入数据的值,所述映射单元具体用于:
根据所述第三矩阵、所述第四矩阵和所述至少一个元组获取所述处理后的第一输入数据,并将所述处理后的第一输入数据存储到所述第一输入缓存单元中;
运算单元,用于从第一输入缓存单元和第二输入缓存单元中分别获取所述处理后的第一输入数据和所述处理后的第二输入数据后,根据微指令对所述处理后的第一输入数据和所述处理后的第二输入数据进行人工神经网络运算,以得到运算结果;
其中,所述处理后的第二输入数据为处理后的输入神经元或者处理后的权值,且所述处理后的第一输入数据与所述处理后的第二输入数据不一致。
2.根据权利要求1所述的神经网络运算模块,其特征在于,所述神经网络运算模块包括:
与所述映射单元相连接的直接存储访问单元和第一输入缓存单元,与所述直接存储访问单元相连接的存储单元、指令缓存单元、第二输入缓存单元和输出缓存单元,与所述指令缓存单元相连接的指令控制单元,所述指令控制单元、所述第一输入缓存单元、所述第二输入缓存单元和所述输出缓存单元均与所述运算单元相连接
所述存储单元,用于存储所述第一输入数据的连接关系数据、所述处理后的第二输入数据、神经网络运算指令和所述运算结果;
所述直接存储访问单元,用于在所述存储单元与所述指令缓存单元、所述映射单元、所述第一输入缓存单元和所述输出缓存单元进行数据的读写;
所述第一输入缓存单元,用于缓存所述处理后的第一输入数据;
所述第二输入缓存单元,用于缓存所述直接存储访问单元读取的所述处理后的第二输入数据;
所述指令缓存单元,用于缓存所述直接存储访问单元读取神经网络运算指令;
所述指令控制单元,用于从指令缓存单元中获取所述神经网络运算指令,并将所述神经网络运算指令译码成所述微指令;
所述输出缓存单元,用于缓存所述运算结果。
3.根据权利要求1或2所述的神经网络运算模块,其特征在于,所述神经网络运算模块用于稀疏神经网络运算或者稠密神经网络运算。
4.一种神经网络运算装置,其特征在于,所述神经网络运算装置包括一个或多个如权利要求1-3任一项所述的神经网络运算模块,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的神经网络运算,将执行结果通过I/O接口传递给其他处理装置;
当所述神经网络运算装置包含多个所述神经网络运算模块时,所述多个所述神经网络运算模块间可以通过特定的结构进行连接并传输数据;
其中,多个所述神经网络运算模块通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述神经网络运算模块共享同一控制系统或拥有各自的控制系统;多个所述神经网络运算模块共享内存或者拥有各自的内存;多个所述神经网络运算模块的互联方式是任意互联拓扑。
5.一种组合处理装置,其特征在于,所述组合处理装置包括如权利要求4所述的神经网络运算装置,通用互联接口和其他处理装置;
所述神经网络运算装置与所述其他处理装置进行交互,共同完成用户指定的操作。
6.一种神经网络芯片,其特征在于,所述神经网络芯片包括如权利要求4所述的神经网络运算装置或如权利要求5所述的组合处理装置。
7.一种板卡,其特征在于,所述板卡包括如权利要求6所述的神经网络芯片。
8.一种电子装置,其特征在于,所述电子装置包括如权利要求6所述的神经网络芯片或者如权利要求7所述的板卡。
9.一种神经网络运算方法,其特征在于,包括:
根据第一输入数据的连接关系数据获取处理后的第一输入数据,所述第一输入数据为输入神经元或者权值;
获取神经网络运算指令和处理后的第二输入数据,将所述神经网络运算指令译码成微指令,所述第二输入数据为输入神经元或者权值,所述第一输入数据与所述第二输入数据不一致;
根据所述微指令对所述处理后的第一输入数据和所述处理后的第二输入数据进行人工神经网络运算,以得到运算结果。
10.根据权利要求9所述的方法,其特征在于,所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以列表的列表LIL的形式表示,以所述LIL的形式表示的连接关系数据包括至少一个列表,所述至少一个列表中的每个列表包括至少一个记录,所述记录包括绝对值大于预设阈值的第一输入数据的列索引和绝对值大于预设阈值的第一输入数据的值,所述根据所述第一输入数据的连接关系数据获取处理后的第一输入数据,包括:
根据所述LIL中的每个记录获取所述处理后的第一输入数据,或者;
所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以坐标列表COO的形式表示,以所述COO形式表示的连接关系数据由至少一个元组组成,所述元组包括第一输入数据矩阵中绝对值大于预设阈值的第一输入数据在所述第一输入数据矩阵中的行号、列号和该绝对值大于预设阈值的第一输入数据的值,所述根据所述第一输入数据的连接关系数据获取处理后的第一输入数据,包括:
根据所述坐标列表中的每个元组获取所述处理后的第一输入数据,或者;
所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以压缩稀疏行CSR的形式表示,以所述CSR的形式表示的连接关系数据包括三个数组,分别为第一数组,第二数组和第三数组,所述第一数组存储第一输入数据矩阵中的绝对值大于预设阈值的第一输入数据的值,所述第二数组存储所述第一输入数据矩阵中的绝对值大于预设阈值的第一输入数据在所述第一输入数据矩阵中的列索引,所述第三数组用于累加存储所述第一输入数据矩阵中每一行绝对值大于预设阈值的第一输入数据的个数,并且所述第三数组中的最后一个元素存储所述第一输入数据矩阵中绝对值大于预设阈值的第一输入数据的个数,所述根据所述第一输入数据的连接关系数据获取处理后的第一输入数据,包括:
根据所述第一数组,所述第二数组和所述第三数组获取所述处理后的第一输入数据,或者;
所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以压缩稀疏列CSC的形式表示,以所述CSC的形式表示的连接关系数据包括三个数组,分别为第四数组,第五数组和第六数组,所述第四数组存储第一输入数据矩阵中的绝对值大于预设阈值的第一输入数据的值,所述第五数组存储所述第一输入数据矩阵中的绝对值大于预设阈值的第一输入数据在所述第一输入数据矩阵中的行索引,所述第六数组用于累加存储所述第一输入数据矩阵中每一列绝对值大于预设阈值的第一输入数据的个数,并且所述第六数组中的最后一个元素存储所述第一输入数据矩阵中绝对值大于预设阈值的第一输入数据的个数,所述根据所述第一输入数据的连接关系数据获取处理后的第一输入数据,包括:
根据所述第四数组,所述第五数组和所述第六数组获取所述处理后的第一输入数据,或者;
所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以ELL的形式表示,以所述ELL的形式表示的连接关系数据包括两个矩阵,分别为第一矩阵和第二矩阵,所述第一矩阵用于存储所述第一输入数据矩阵中绝对值大于预设阈值的第一输入数据在所述第一输入数据矩阵中的列号,所述第二矩阵存储所述绝对值大于预设阈值的第一输入数据的值,所述根据所述第一输入数据的连接关系数据获取处理后的第一输入数据,包括:
根据所述第一矩阵和所述第二矩阵获取所述处理后的第一输入数据,或者;
所述第一输入数据是以矩阵的形式表示的,所述第一输入数据的连接关系数据以混合HYB的形式表示,以所述HYB形式表示的连接关系数据包括第三矩阵、第四矩阵和至少一个元组,所述第四矩阵存储第一输入数据矩阵中每一行最大相同数量的绝对值大于预设阈值的第一输入数据,所述第三矩阵存储在所述第四矩阵中存储的绝对值大于预设阈值的第一输入数据在所述第一输入数据矩阵中的列号,所述至少一个元组中的每个元组用于存储所述第一输入数据矩阵中的任一行相对于其他行多出来第一输入数据的行号,列号和该第一输入数据的值,所述根据所述第一输入数据的连接关系数据获取处理后的第一输入数据,包括:
根据所述第三矩阵、所述第四矩阵和所述至少一个元组获取所述处理后的第一输入数据。
CN201810042283.4A 2017-12-11 2017-12-11 神经网络运算模块和方法 Active CN109902814B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810042283.4A CN109902814B (zh) 2017-12-11 2017-12-11 神经网络运算模块和方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201711315639.9A CN109902810B (zh) 2017-12-11 2017-12-11 神经网络运算设备和方法
CN201810042283.4A CN109902814B (zh) 2017-12-11 2017-12-11 神经网络运算模块和方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201711315639.9A Division CN109902810B (zh) 2017-12-11 2017-12-11 神经网络运算设备和方法

Publications (2)

Publication Number Publication Date
CN109902814A true CN109902814A (zh) 2019-06-18
CN109902814B CN109902814B (zh) 2020-01-17

Family

ID=66819989

Family Applications (9)

Application Number Title Priority Date Filing Date
CN201711343477.XA Active CN109902815B (zh) 2017-12-11 2017-12-11 神经网络运算设备和方法
CN201810042283.4A Active CN109902814B (zh) 2017-12-11 2017-12-11 神经网络运算模块和方法
CN201711371888.XA Active CN109902816B (zh) 2017-12-11 2017-12-11 板卡和神经网络运算方法
CN201711371887.5A Active CN109902812B (zh) 2017-12-11 2017-12-11 板卡和神经网络运算方法
CN201711343478.4A Active CN109902811B (zh) 2017-12-11 2017-12-11 神经网络运算设备和方法
CN202010526360.0A Active CN111738431B (zh) 2017-12-11 2017-12-11 神经网络运算设备和方法
CN201711371889.4A Active CN109902817B (zh) 2017-12-11 2017-12-11 板卡和神经网络运算方法
CN201810042043.4A Active CN109902813B (zh) 2017-12-11 2017-12-11 神经网络运算模块和方法
CN201711315639.9A Active CN109902810B (zh) 2017-12-11 2017-12-11 神经网络运算设备和方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201711343477.XA Active CN109902815B (zh) 2017-12-11 2017-12-11 神经网络运算设备和方法

Family Applications After (7)

Application Number Title Priority Date Filing Date
CN201711371888.XA Active CN109902816B (zh) 2017-12-11 2017-12-11 板卡和神经网络运算方法
CN201711371887.5A Active CN109902812B (zh) 2017-12-11 2017-12-11 板卡和神经网络运算方法
CN201711343478.4A Active CN109902811B (zh) 2017-12-11 2017-12-11 神经网络运算设备和方法
CN202010526360.0A Active CN111738431B (zh) 2017-12-11 2017-12-11 神经网络运算设备和方法
CN201711371889.4A Active CN109902817B (zh) 2017-12-11 2017-12-11 板卡和神经网络运算方法
CN201810042043.4A Active CN109902813B (zh) 2017-12-11 2017-12-11 神经网络运算模块和方法
CN201711315639.9A Active CN109902810B (zh) 2017-12-11 2017-12-11 神经网络运算设备和方法

Country Status (5)

Country Link
US (4) US12099918B2 (zh)
EP (3) EP3633557B1 (zh)
CN (9) CN109902815B (zh)
TW (3) TWI791569B (zh)
WO (1) WO2019114649A1 (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
WO2020014590A1 (en) * 2018-07-12 2020-01-16 Futurewei Technologies, Inc. Generating a compressed representation of a neural network with proficient inference speed and power consumption
US10963390B2 (en) * 2018-08-21 2021-03-30 Neuchips Corporation Memory-adaptive processing method for convolutional neural network and system thereof
JP6852141B2 (ja) * 2018-11-29 2021-03-31 キヤノン株式会社 情報処理装置、撮像装置、情報処理装置の制御方法、および、プログラム
CN110597756B (zh) * 2019-08-26 2023-07-25 光子算数(北京)科技有限责任公司 一种计算电路以及数据运算方法
CN112749782B (zh) * 2019-10-31 2024-10-29 上海商汤智能科技有限公司 数据处理方法及相关产品
KR102788804B1 (ko) * 2019-12-27 2025-03-31 삼성전자주식회사 전자 장치 및 그 제어 방법
CN111260051B (zh) * 2020-02-01 2024-05-14 上海寒武纪信息科技有限公司 神经网络运算方法及相关装置
US11803736B1 (en) 2020-06-30 2023-10-31 Amazon Technologies, Inc. Fine-grained sparsity computations in systolic array
US11500962B1 (en) 2020-06-30 2022-11-15 Amazon Technologies, Inc. Emulating fine-grained sparsity in a systolic array
CN111553471A (zh) * 2020-07-13 2020-08-18 北京欣奕华数字科技有限公司 一种数据分析处理方法及装置
CN111930672B (zh) * 2020-08-10 2024-03-01 中国科学院计算技术研究所 异构智能处理器及电子设备
CN111930674B (zh) * 2020-08-10 2024-03-05 中国科学院计算技术研究所 乘累加运算装置及方法、异构智能处理器及电子设备
CN111930671B (zh) * 2020-08-10 2024-05-14 中国科学院计算技术研究所 异构智能处理器、处理方法及电子设备
CN112272074B (zh) * 2020-10-27 2022-11-25 国网内蒙古东部电力有限公司电力科学研究院 一种基于神经网络的信息传输速率控制方法及系统
CN115150614B (zh) * 2021-03-30 2025-02-07 中国电信股份有限公司 图像特征的传输方法、装置和系统
US12254398B2 (en) * 2021-03-30 2025-03-18 Amazon Technologies, Inc. Sparse machine learning acceleration
CN119472299B (zh) * 2025-01-06 2025-03-14 南京信息工程大学 基于神经网络的光子引线键合参数预测方法及光子引线键合控制系统和方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130204848A1 (en) * 2009-08-11 2013-08-08 International Business Machines Corporation Deduplicated data processing rate control
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
CN106779068A (zh) * 2016-12-05 2017-05-31 北京深鉴智能科技有限公司 调整人工神经网络的方法和装置
CN107239825A (zh) * 2016-08-22 2017-10-10 北京深鉴智能科技有限公司 考虑负载均衡的深度神经网络压缩方法
CN107316078A (zh) * 2016-04-27 2017-11-03 北京中科寒武纪科技有限公司 用于执行人工神经网络自学习运算的装置和方法

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5278945A (en) 1992-01-10 1994-01-11 American Neuralogical, Inc. Neural processor apparatus
US7367503B2 (en) * 2002-11-13 2008-05-06 Sandisk Corporation Universal non-volatile memory card used with various different standard cards containing a memory controller
CN101625759B (zh) * 2009-07-30 2011-10-12 重庆医科大学 图像质量评价方法
US8700541B2 (en) * 2012-02-02 2014-04-15 I-Shou University Modeling method of neuro-fuzzy system
US8983885B1 (en) * 2012-09-10 2015-03-17 FEM, Inc. Prospective media content generation using neural network modeling
EP3090329A4 (en) * 2013-10-20 2017-10-11 Pneuron, Corp. Event-driven data processing system
JP6204168B2 (ja) * 2013-11-27 2017-09-27 株式会社日立製作所 転送装置、サーバ、および経路変更方法
US9460384B2 (en) * 2013-12-11 2016-10-04 Qualcomm Incorporated Effecting modulation by global scalar values in a spiking neural network
US20150206050A1 (en) * 2014-01-23 2015-07-23 Qualcomm Incorporated Configuring neural network for low spiking rate
CN103929210B (zh) * 2014-04-25 2017-01-11 重庆邮电大学 一种基于遗传算法与神经网络的硬判决译码方法
US10394851B2 (en) * 2014-08-07 2019-08-27 Cortical.Io Ag Methods and systems for mapping data items to sparse distributed representations
CN104346607B (zh) * 2014-11-06 2017-12-22 上海电机学院 基于卷积神经网络的人脸识别方法
CN104598971A (zh) * 2015-01-15 2015-05-06 宁波大学 基于径向基函数神经网络的单位脉冲响应函数提取方法
CN104679868B (zh) * 2015-03-06 2017-09-26 四川深度信息技术有限责任公司 一种基于数据间关联关系的遗漏数据填补方法
US20160358075A1 (en) * 2015-06-08 2016-12-08 The Regents Of The University Of Michigan System for implementing a sparse coding algorithm
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN106250939B (zh) * 2016-07-30 2020-07-24 复旦大学 基于fpga+arm多层卷积神经网络的手写体字符识别方法
CN109478139B (zh) * 2016-08-13 2024-01-23 英特尔公司 用于共享存储器中的访问同步的装置、方法和系统
US10360163B2 (en) * 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
TWI607387B (zh) * 2016-11-25 2017-12-01 財團法人工業技術研究院 字符辨識系統及其字符辨識方法
CN108734279B (zh) * 2017-04-20 2021-04-23 上海寒武纪信息科技有限公司 一种运算装置和方法
US20180330235A1 (en) * 2017-05-15 2018-11-15 National Taiwan University Apparatus and Method of Using Dual Indexing in Input Neurons and Corresponding Weights of Sparse Neural Network
CN107807819B (zh) * 2017-07-20 2021-06-25 上海寒武纪信息科技有限公司 一种支持离散数据表示的用于执行人工神经网络正向运算的装置及方法
CN109697507B (zh) 2017-10-24 2020-12-25 安徽寒武纪信息科技有限公司 处理方法及装置
CN109993291B (zh) * 2017-12-30 2020-07-07 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130204848A1 (en) * 2009-08-11 2013-08-08 International Business Machines Corporation Deduplicated data processing rate control
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
CN107316078A (zh) * 2016-04-27 2017-11-03 北京中科寒武纪科技有限公司 用于执行人工神经网络自学习运算的装置和方法
CN107239825A (zh) * 2016-08-22 2017-10-10 北京深鉴智能科技有限公司 考虑负载均衡的深度神经网络压缩方法
CN106779068A (zh) * 2016-12-05 2017-05-31 北京深鉴智能科技有限公司 调整人工神经网络的方法和装置

Also Published As

Publication number Publication date
CN109902810A (zh) 2019-06-18
TWI771539B (zh) 2022-07-21
EP3657400A1 (en) 2020-05-27
CN109902813B (zh) 2020-08-04
CN109902815B (zh) 2020-05-19
CN109902812A (zh) 2019-06-18
EP3671573B1 (en) 2025-04-02
TW201928792A (zh) 2019-07-16
EP3657400B1 (en) 2025-05-07
EP3633557A1 (en) 2020-04-08
CN109902817A (zh) 2019-06-18
EP3633557A4 (en) 2020-09-16
US11803735B2 (en) 2023-10-31
US12099917B2 (en) 2024-09-24
US20200097824A1 (en) 2020-03-26
TWI791569B (zh) 2023-02-11
CN109902811B (zh) 2020-03-10
CN111738431B (zh) 2024-03-05
US12099918B2 (en) 2024-09-24
US20200097834A1 (en) 2020-03-26
US20200097803A1 (en) 2020-03-26
CN109902811A (zh) 2019-06-18
WO2019114649A1 (zh) 2019-06-20
TWI775998B (zh) 2022-09-01
CN109902813A (zh) 2019-06-18
CN109902817B (zh) 2021-02-09
CN109902816A (zh) 2019-06-18
CN109902815A (zh) 2019-06-18
CN109902816B (zh) 2020-08-04
CN111738431A (zh) 2020-10-02
EP3633557B1 (en) 2025-04-02
TW201928790A (zh) 2019-07-16
CN109902812B (zh) 2020-10-09
US20200097825A1 (en) 2020-03-26
TW201928795A (zh) 2019-07-16
EP3671573A1 (en) 2020-06-24
US11657258B2 (en) 2023-05-23
CN109902814B (zh) 2020-01-17
CN109902810B (zh) 2020-05-22

Similar Documents

Publication Publication Date Title
CN109902814A (zh) 神经网络运算模块和方法
TW201928794A (zh) 神經網絡訓練方法及相關產品
CN110826712B (zh) 神经网络处理器板卡及相关产品
TWI767097B (zh) 集成電路芯片裝置及相關產品
CN110175673B (zh) 处理方法及加速装置
CN110197264B (zh) 神经网络处理器板卡及相关产品
TW201928793A (zh) 神經網絡正向運算方法及相關產品
WO2019165946A1 (zh) 集成电路芯片装置、板卡及相关产品
CN111382864A (zh) 一种神经网络训练方法及装置
WO2019165940A1 (zh) 集成电路芯片装置、板卡及相关产品
CN109961133A (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