CN111758106B - 用于大规模并行神经推理计算元件的方法和系统 - Google Patents
用于大规模并行神经推理计算元件的方法和系统 Download PDFInfo
- Publication number
- CN111758106B CN111758106B CN201980014600.4A CN201980014600A CN111758106B CN 111758106 B CN111758106 B CN 111758106B CN 201980014600 A CN201980014600 A CN 201980014600A CN 111758106 B CN111758106 B CN 111758106B
- Authority
- CN
- China
- Prior art keywords
- function
- parallel
- multipliers
- adders
- functional blocks
- 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
- 238000000034 method Methods 0.000 title claims description 17
- 230000004913 activation Effects 0.000 claims abstract description 82
- 238000001994 activation Methods 0.000 claims abstract description 82
- 239000013598 vector Substances 0.000 claims description 110
- 239000011159 matrix material Substances 0.000 claims description 66
- 241001442055 Vipera berus Species 0.000 claims description 63
- 238000003860 storage Methods 0.000 claims description 21
- 238000011176 pooling Methods 0.000 claims description 10
- 238000012856 packing Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 description 67
- 210000002569 neuron Anatomy 0.000 description 31
- 238000013528 artificial neural network Methods 0.000 description 29
- 230000015654 memory Effects 0.000 description 25
- 230000001537 neural effect Effects 0.000 description 18
- 238000012545 processing Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 9
- 230000000946 synaptic effect Effects 0.000 description 8
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 229940050561 matrix product Drugs 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 210000003050 axon Anatomy 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 210000001787 dendrite Anatomy 0.000 description 3
- 238000012886 linear function Methods 0.000 description 3
- 210000005036 nerve Anatomy 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 230000008555 neuronal activation Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 210000000225 synapse Anatomy 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003376 axonal effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 239000000412 dendrimer Substances 0.000 description 1
- 229920000736 dendritic polymer Polymers 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 210000002364 input neuron Anatomy 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 210000004205 output neuron Anatomy 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural 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/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Abstract
提供了大规模并行神经推理计算元件。多个乘法器被布置成多个相等大小的组。多个乘法器的每一个都适于并行地对输入激活施加权重以产生输出。多个加法器可操作地耦合到多组乘法器中的一个。多个加法器的每一个适于并行地将乘法器的输出加到其相关组,以产生部分和。多个功能块可操作地耦合到多个加法器中的一个。多个功能块的每一个适于并行地将函数应用于其相关的加法器的部分和以生成输出值。
Description
背景技术
本公开的实施例涉及神经网络推理,并且更具体地,涉及大规模并行神经推理计算元件。
发明内容
根据本公开的实施例,提供了用于大规模并行神经推理计算的系统、方法和计算机程序产品。多个乘法器被布置成多个相等大小的组。多个乘法器的每一个都适于并行地对输入激活施加权重以产生输出。多个加法器可操作地耦合到多组乘法器中的一个。多个加法器的每一个适于并行地将乘法器的输出加到其相关组,以产生部分和。多个功能块可操作地耦合到多个加法器中的一个。多个功能块的每一个适于并行地将函数应用于其相关的加法器的部分和以生成输出值。
根据一个方面,提供了一种系统,包括:多个乘法器,该多个乘法器被布置成多个相等大小的组,多个乘法器的每一个适于并行地对输入激活施加权重以产生输出;多个加法器,多个加法器的每一个可操作地耦合到多组乘法器中的一个,多个加法器的每一个适于并行地将乘法器的输出加到其相关组,以产生部分和。
根据一个方面,提供了一种方法,包括:由多个相等大小的乘法器组并行地将多个权重应用于多个输入激活,以为每组乘法器生成多个输出;并行地将来自每组乘法器的多个输出相加,以从每组乘法器生成部分和。
根据一个方面,提供了一种系统,包括:多个乘法器,该多个乘法器布置成多个相等大小的组;多个加法器,多个加法器的每一个可操作地耦合到多组乘法器中的一个;一种计算机可读存储介质,其上包含程序指令,该程序指令可执行以执行一种方法,包括:通过多个乘法器的每一个,并行地对输入激活施加权重以产生输出;通过多个加法器的每一个,并行地将乘法器的输出加到其相关组,以产生部分和。
附图说明
现在将仅通过示例的方式,参考附图来描述本发明的实施例,其中:
图1描绘了根据本公开实施例的多个神经核推理处理器架构。
图2描绘了根据本公开实施例的用于计算部分和的大规模并行向量矩阵乘法器。
图3描绘了根据本公开实施例的树突状(dendrite)电路。
图4描绘了根据本公开的实施例的具有加法器阵列和向量寄存器的向量矩阵乘法器。
图5描绘了根据本公开实施例的具有激活函数的向量矩阵乘法器。
图6描绘了根据本公开实施例的用于激活函数的查找表。
图7A-B描绘了根据本公开实施例的经由分发广播的输入激活。
图8描绘了根据本公开实施例的用于树突状电路的加法器的二进制树。
图9描绘了根据本公开实施例的用于树突状电路的进位保存加法器的树。
图10A-B描绘了根据本公开实施例的由复用器实现的三进制乘法器。
图11描绘了根据本公开实施例的用于向量矩阵乘法的移位器。
图12描绘了根据本公开实施例的神经电路。
图13描绘了根据本公开实施例的使用向量矩阵乘法单元的混洗(shuffle)运算。
图14A-B示出了根据本公开实施例的示例性蝶形网络计算。
图15描绘了根据本公开实施例的使用向量矩阵乘法单元的数据打包运算。
图16描绘了根据本公开实施例的使用向量矩阵乘法单元的最大池化(pooling)运算。
图17描绘了根据本公开实施例的使用向量矩阵乘法单元的平均池化运算。
图18示出了根据本公开实施例的使用向量矩阵乘法单元的逐元素乘法运算。
图19描绘了根据本公开实施例的使用向量矩阵乘法单元将部分和与多个逐元素运算组合的可编程运算。
图20描绘了根据本公开实施例的用于操作神经处理核心的方法。
图21描绘了根据本公开实施例的计算节点。
具体实施方式
人工神经元是一种数学函数,它的输出是输入的线性组合的非线性函数。如果一个神经元的输出是另一神经元的输入,则两个神经元连接。权重是一个标量值,它编码一个神经元的输出与另一神经元的输入之间的连接强度。
神经元通过将非线性激活函数应用于其输入的加权和来计算其输出,称为激活。加权和是通过将每个输入与相应的权重相乘并累加乘积而得出的中间结果。部分和是输入子集的加权和。可以通过累加一个或多个部分和来分阶段计算所有输入的加权和。
神经网络是一个或多个神经元的集合。神经网络通常分为称为层的神经元组。一层是一个或多个神经元的集合,它们都从同一层接收输入,并且都将输出发送到同一层,并且通常执行类似的功能。输入层是从神经网络外部的源接收输入的层。输出层是将输出发送到神经网络外部的目标的层。所有其他层都是中间处理层。多层神经网络是一层以上的神经网络。深度神经网络是具有许多层的多层神经网络。
被称为神经核的神经处理单元的阵列提供了执行各种类型的神经网络和深度神经网络的架构。各种核心架构都适用于实现神经网络计算。通常,这样的计算涉及基于输入值、突触权重和神经激活函数来计算神经元激活。将意识到,神经元激活可以以各种方式来分布,包括经由片上网络。本文的各种示例涉及通过网络传输的神经元激活,但是,应当理解,本公开内容更普遍地应用于包括GPU和专用ASIC芯片在内的任何神经突触系统,以及与传输机制无关的神经元激活。
根据本公开的各种实施例,神经程序代表神经网络。神经程序包括与神经网络有关的信息。在某些实施例中,该信息包括神经元特性和动力学,这些特性和动力学确定电子神经元对输入神经元激活的响应。例如,神经元特性和动力学可以包括阈值参数、泄漏参数、延迟参数或重置参数。在一些实施例中,神经程序信息包括神经元的突触连接(例如,经由突触权重矩阵进行的突触连接)。在一些实施例中,神经程序信息包括轴突特性(例如,轴突类型)。在一些实施例中,神经程序信息包括神经元的输出激活应传递到的一个或多个目的地(例如,目标轴突)。
根据各种实施例,神经网络代表神经程序的实例。神经网络可以在硬件中、在仿真中或在两者中实例化。例如,神经程序可以产生神经网络的一个或多个实例,其中这些实例可以驻留在单个核、多个核或多个芯片上。
根据本公开的实施例,提供了一种树突状树,可以被配置为专用定向以针对每个突触乘法累加电路,并且在某些情况下并行地运算。另外,根据优选实施例,本公开为每个神经元提供专用的部分和算子和非线性激活电路,它们可以同样地并行运算。在一些实施例中,多函数电路用于加法器或最大/最小运算。在一些实施例中,该系统包括流水线化树突状树。
根据本公开的实施例,包括神经元激活函数,在一些实施例中,神经元激活函数采用查找表来表示神经元激活函数。此函数的优势在于,它可以实现连续非线性的离散模型(如S型、双曲正切(tanh)、ReLU等)的高效且可重新配置的实现。在一些实施例中,系统使用例如广播网络或收缩分布将激活分布到核心中的所有并行神经元电路。此外,根据优选实施例,本公开包括用于有效三进制向量矩阵乘法的电路。在一些实施例中,利用m项三进制乘法器和累加器电路执行m项n位向量乘法。在一些实施例中,利用累加电路直接利用m项三进制压缩向量(例如,8比特用于5个权重)直接执行m项n位向量乘法。
现在参考图1,描绘了根据本公开实施例的基线多核神经推理处理器架构。在一些实施例中,神经核100接收神经激活向量作为轴突输入,并将输入激活与代表突触权重的矩阵相乘以产生神经激活向量作为输出。在一些实施例中,输入和输出激活被提供为32元素向量。在这样的实施例中,突触权重由具有1024个权重元素的32×32矩阵表示。在各个实施例中,权重是二进制,三进制(-1,0,1)或小的整数。在一些实施例中,多个神经核被平铺在芯片上,如图1所示。
总体而言,多个神经推理核心100通过片上网络(NoC)102连接。如图1中的标注所示,每个神经推理核心100包括激活存储器104、权重存储器106、广播总线108、输入激活寄存器110、大规模并行向量矩阵乘法器112、输出激活寄存器114、部分和暂存器116和路由缓冲器118。
在示例性实施方式中,基线核心根据以下协议运行:
1.在初始化时,输入激活存储在核心激活存储器中。
2.权重值通过片上网络(NoC)102分配给每个核心,并存储在权重存储器106中。
3.从激活存储器104中读取激活块X,从权重存储器106中读取权重块W,并将其发送到向量矩阵乘法器。
4.向量矩阵乘法器计算向量矩阵乘积XW,输出Z存储在部分和寄存器116中。
5.部分和可以通过路由缓冲器118发送到相邻核或从相邻核接收,然后加到其他部分矩阵相乘结果X’W’=Z’。
6.将激活函数应用于最终的部分和,并将结果Y写入输出激活寄存器114。
7.输出的激活Y被写回到激活存储器104。
这样,各种核心配置提供了用于计算的分布式逻辑。在各个实施例中,多个分布式神经核并行地运行。这种并行性可以提高神经网络处理的速度,同时减少输入表示与输出计算之间的等待时间。对于给定的问题,每个神经核都实现了较大的神经网络模型的一部分。每个神经核都接收整个芯片输入的一部分,以及整个神经网络模型的一部分。这实现了芯片和核心的模块化,从而简化了系统设计、调试和测试。
本领域普通技术人员将理解,本文公开的特定核心实施方式是出于说明而非限制的目的,可以将多种核心实施方式并入本公开的实施方式中。
在示例性实施方式中,针对每个神经元j执行以下神经网络计算,输入激活为xi,权重为wij,则可以通过以下方式计算部分和Zj:
然后根据每个输出神经元j的部分和z计算输出激活
yj=f(zj)
其中f(z)是非线性激活函数。
对于f(z),可以使用S型函数、双曲正切tanh(x)或更简单的线性整流器函数。
神经加速器,包括但不限于GPU和ASIC,可以在几个乘法累加(MAC)单元上执行分布式乘法-加法运算。但是,即使基础神经网络从根本上允许大规模并行的并行计算,此类架构在执行一系列乘法-加法运算时也具有固有的顺序性质,这限制了并行度。因此,本公开优选地提供了一种低精度神经网络,其中,硬件能够并行地进行实质上更多(例如,数量级)的计算。特别地,本公开优选地提供包括用于并行计算神经元的多个乘法-加法运算的大规模并行计算元件。
现在参考图2,公开了用于计算神经元激活的示例性大规模并行计算元件。该示例性实施例包括用于具有低精度神经元的神经推理处理器的大规模并行向量矩阵乘法单元。在计算单元202中提供了多个加法器树204(每个加法器树能够对来自n个乘法器的n个输出求和)。在206描绘了单个乘法器,其中,VMM的单个列208描绘了树突状树(并且关于图3更详细地描述)。
系统接收X,n个元素输入激活行向量(在一些实施例中,每个元素为4位,n=32)。另外,系统接收W,n×m的权重矩阵(在一些实施例中,每个元素是2位并且n=m=32)。计算单元202具有n×m个乘法器和加法器以组合乘积。它们并行计算所有乘法并将结果并行累加(但是,乘法器的确切位置可以变化,并且不限于所描述的特定数组)。在一些实施例中,存在32×32=1024个小的乘法器。结果Z=XW是具有m个元素的向量矩阵乘积。在示例性实施例中,m=32,但是m个元素中的每一个是10比特。
图2的向量矩阵乘法单元的输出元素可以通过n并行乘法器后跟加法器树来计算,如图3所示。特别地,输入n元素向量X和Wj(矩阵W的第j列)被分配给n路并行乘法器302,该n路并行乘法器302可以配置为平行方向。每个乘法器计算乘积,乘积树304将乘积相加成单个和。加法器树的输出是部分和306,可用于计算神经元激活。如下面进一步阐述的,该部分和可以被提供给激活函数,激活函数在一些实施例中是可编程的,并且可以被设置为非线性或线性函数,例如标识函数。
在图3的示例性实施例中,提供了n个乘法器和加法器树。另外,将输入的n元素行向量X和Wj(矩阵W的第j列)分配给n个乘法器;每个乘法器计算一个乘积;乘积树将乘积相加成一个和;输出Zj=∑ixiwij表示Z=XW的第j个向量元素。在一些实施例中,乘法器是4×2位乘法器,并且加法器树将来自n=32个乘法器的输出相加,最终输出是10位。在其他实施例中,使用进位保存加法器来执行乘法和加法运算,使得最终输出包括两个向量(和向量和进位向量)。最终答案Z是和向量和进位向量的和。和向量和进位向量的最终加法可以在树突状树内部进行,或者可以由树突状树外部的后续处理阶段执行。
结合图4中示意性示出的运算,在示例性实施例中,将向量矩阵乘法器结果加到先前计算的(部分和)结果中。在这样的实施例中,向量矩阵乘法单元的输出结果(称为部分和向量)可以被加到先前计算的部分和向量。如图4所示,部分和寄存器可以存储m个元素的部分和向量,以及m个并行加法器以将新的部分和(Z)与先前计算的部分和(Vt-1)相加。而且,先前计算的部分和(Vt-1)可以借助于核对核通信信道来自其他核。在所示的实施例中,部分和向量加法与m个并行加法器407并行发生。另外,当向量矩阵乘法器的输出由两组向量(和向量和进位向量)表示时,可以实现进一步的优化。然后,可以使用进位保存加法器(类似于浮点乘法加法器)实现m个并行加法器。
如图5所示,公开了一种激活函数阵列,其中来自向量矩阵单元的每个输出元素是Zj=∑ixiwij。可以应用激活函数f来获得神经元激活:Yj=f(∑ixiwij)。示例性的激活函数包括二进制阈值函数、S形函数、ReLU(整流线性单元)和线性函数,以及可能使用查找表(LUT)的任意非线性函数。接下来,实现了m个激活函数计算器的阵列,耦合到向量矩阵单元的输出。这产生了m个激活值,每个激活值都可以表示为:yj=f(∑ixiwij)。为了简化架构设计,激活函数(Y)的输出可以具有与输入激活(X)相同的精度。在一些实施例中,输入和输出激活均为4位。激活函数计算器可用于降低向量的精度。局部和向量(Z)通常具有较高的精度(10位),而输出激活向量(Y)具有较低的精度(4位)。多种线性和非线性函数可以实现这种精度降低。同样在示例性实施例中,m=n=32,因此输入和输出激活向量具有相同的长度。因此,输出激活向量(Y)可以立即用作输入激活向量(X)。
典型的神经元激活采用n元素向量X,n×m权重矩阵W,计算Yj=f(∑ixiwij),并产生m元素输出向量Y,如图所示。Zj=∑ixiwij部分是由向量矩阵乘法器502计算的,向量矩阵乘法器502由乘法器504的阵列和加法器树506的阵列组成。将激活函数508并行应用于向量矩阵乘法的输出。在一些实施例中,n=m=32或n=m=64;从而使输入和输出大小相同。
结合图6中示意性示出的运算,在示例性实施例中,通过表格查找来实现可编程非线性单调激活函数。在此示例性实施例中,可编程表条目T0,T1,T2…指定特定输出值的部分和PS范围:
·zj<T0则f=0
·T0<zj<T1然后f=1
·T1<zj<T2然后f=2依此类推。
在图6所示的实现中,可编程查找表包含T0,T1,T2...。比较器数组将表条目与部分和元素zj进行比较。选择器逻辑根据比较器结果选择函数值输出。应当理解,图6的配置可以应用于任何尺寸的查找表。
可以仅比较高阶位或仅对低阶位进行比较以减小逻辑尺寸。这是因为输出激活的精度有限(例如,具有4位,并且查找表仅需要15个条目)。这可以实现任意的非线性函数,例如S型函数,而无需复杂的算术计算单元。
根据本公开的另一实施例,向量矩阵乘法被流水线化,并且具有激活函数电路的组合电路也被流水线化。可以执行流水线处理以提高时钟频率和逻辑电路的性能。由于向量矩阵乘法电路是比较大的电路,因此非常适合流水线化。
图7A-B描绘了示例性实施例,其中通过广播或通过收缩(systolic)流水线来实现输入激活的分配。向量矩阵乘法单元由m个树突状树组成,它们是中等大小的电路,可以优化如何广播输入。另外,传递输入激活可以通过广播来实现。在一些实施例中,所有树突状树开始一起计算,并且所有输出结果同时产生。附加地或替代地,传递输入激活可以通过收缩流水线来完成。例如,激活输入可以在每个时钟周期从一个锁存器传递到另一个锁存器,并以不同的时钟周期传递到树突状树。在这种情况下可能会产生一些延迟,但是可以通过提供更快的时钟频率来提高吞吐量。
结合图8中示意性示出的运算,示出了示例性实施例,其中加法器树被配置为加法器的二进制树。根据本公开的实施例,可以以各种方式实现加法器树。加法器树的一种示例性实施方式是使用二叉树。
这是有利的,因为可以使用当前的电路综合工具来生成充分优化的电路。对于低精度加法器树,此方法可提供足够的结果。
结合图9中示意性示出的运算,在示例性实施例中,利用进位保存加法器来实现加法器树。进位保存加法器的优势在于周期时间短,3个输入并产生2个输出,其总和等于输入的总和,并且经常在乘法器电路中使用。例如,如果s0和c0是CSA的两个输出:
和向量:s0=CSA-S(a0,a1,a2)
进位向量:c0=CSA-C(a0,a1,a2)
那么,s0+c0=a0+a1+a2
在所示的示例性实施例中,华莱士(Wallace)加法器树由进位保存加法器构成,并且输出是总和等于所有输入的总和的两个向量。为了获得最终的求和结果,两个输出向量必须由普通加法器最后一次相加。在执行最终加法之前,可能会有一个附加的CSA加一个先前计算的部分和。该技术的优点是运行时间比简单的加法器树短。
在一些实施例中,采用仅具有{-1,0,1}作为可能值的n×m权重矩阵W。具有4位神经元的三进制权重矩阵可以通过适当的训练算法来实现高精度。示例4×4矩阵如下:
图10A-B描绘了示例性实施例,其中三进制乘法器由复用器实现。这里,当权重为三进制值wij∈{-1,0,1}时,可以提供一个多路复用器来代替乘法器。所示示例使用双向复用器输出xiwij。
wij=1时输出xi
wij=-1时输出-xi
如果两个控制信号均未打开,则输出为默认0值。
可以如下进行优化,如图10B所示:使用(/>的一个补码)而不是-xi(两个补码)。由于/>因此我们需要在其他位置加1。如果将CSA树用作加法器树,则此1非常合适,因为CSA的CSA-C输出向左移动了1。另外,wij可以由两位表示[b1b0].(1:[01],0:[00],-1[10].)然后,b0和b1可用作多路复用器的输入。
根据本公开的另一实施例,可以以压缩格式存储权重矩阵,并按需解码。在这里,三进制权重值可以压缩,因为三进制表示携带的信息较少(少于2个二进制位)。在一些实施例中,8位二进制可以表示5个三进制值。例如,使用以下等式将压缩的8位值ω解码为5个三进制值w0:4。
w0=ω%3-1
w1=(ω/3)%3-1
w2=(ω/9)%3-1
w3=(ω/27)%3-1
w4=(ω/81)%3-1
其中a%b是a除以b的余数。
就在执行向量矩阵乘法之前,执行对压缩权重的解码。这导致较少的存储和通信开销(例如,代替10位,只需要8位即可表示5个三进制值)。应当理解,提供了该示例性压缩算法用于说明,并且可以采用其他压缩算法来进行加权矩阵压缩。另外,稀疏矩阵可以被压缩以便获得更好的压缩率。
图11描绘了示例性实施例,其中采用了移位器以获得更高精度的向量矩阵乘法。在某些情况下,希望在评估神经网络时使用更高精度的计算。例如,输入激活数据可以由8位值表示。8位激活值x可以表示为:
x[7:0]=xL+(xM<<4)
其中xL是最低有效4位,
并且xM是最高有效4位。
XW可以通过迭代向量矩阵乘法来计算,因为:
W=XLW+XMW<<4
计算部分和Vt-1=XLW并向左移动4位,然后将其加到新的部分和Z=XMW上。从部分和寄存器到加法器阵列的路径中的移位器阵列可用于将移位的部分和与新的向量矩阵乘法结果相加。
因此,存在许多向量矩阵乘法器,它们逐个元素地应用乘法-加法并依次计算。根据优选实施例,本公开涉及低精度向量乘法,为此,可以实现并行架构以一次全部计算整个向量乘法。因此,本文公开的新颖的并行方面相对于现有技术是特别有利的。
在各个实施例中,图5所示的电路包括m个电路,如图12所示。特别地,将输入n元素向量X和Wj(矩阵W的第j列)分配给n个乘法器1202,它们可以以平行方向配置。每个乘法器计算乘积,乘积树1204将乘积相加成单个和。加法器树的输出进入激活函数1206,产生神经元激活。在一些实施例中,该函数是可编程的,并且可以被设置为非线性或线性函数,例如,标识函数。
根据本公开的实施例,提出的系统和方法计算向量乘法,其后可以跟随非线性或线性激活函数。特别地,本公开的实施例提供了神经激活的计算。另外,本公开的实施例提供了在神经网络(NN)中的“池化”运算,这是必不可少的并且是耗时的。此外,本公开的实施例提供了神经网络(NN)推理中的数据混洗运算。通过扩展上述的树突状树电路来实现这些计算。
结合图13中示意性示出的运算,示出了示例性数据混洗运算。例如,蝶形置换如下所示:对于输入向量X=(0 1 2 3),置换后的输出结果为Y=(1 0 3 2)。在一些实施例中,混洗运算可以通过以下方式实现:将激活函数设置为标识函数,(id(x)=x);将权重矩阵W设置为置换矩阵。例如,行和列中只有一个元素为1,所有其他元素为0。在图14A中示出了示例性蝶形网络的实现。当利用图14A所示的矩阵W执行矩阵乘法运算时,输入向量X=(0,1,2,3)被置换为输出向量Y=(1,0,3,2)。在图14B中示出了等级2的示例性蝶形网络。
当利用图14B所示的矩阵W执行矩阵乘法运算时,将输入向量X=(0,1,2,3)置换为输出向量Y=(2,3,0,1)。
结合图15中示意性示出的运算,根据本公开的实施例,示出了其中来自多个向量的数据被打包成单个向量的示例性实施例。此函数对于张量下采样特别有用。出于说明而非限制的目的,通过交替地选择值,将向量XA=(0 1 2 3)和XB=(4 5 6 7)打包为单个向量Y=(0 2 4 6)。在该示例性实施例中,采用以下向量矩阵乘法单元1502,其中激活函数被设置为标识函数(id(x)=x)。
·首先执行:Z=XAW0,以及V=Z+0
·
·然后执行:V=V+XBW1
·
向量寄存器保存先前计算的部分和(V1)。该部分和被反馈到加法器阵列1504,然后加法器阵列1504将新的部分和(XBW1)相加。在图15的右侧示出的数据流包括加法器、寄存器、反馈路径的阵列以及设置为标识函数的激活函数1506的阵列。
结合图16中示意性示出的运算,根据本公开的实施例,示出了其中使用向量矩阵乘法单元执行最大池化运算的示例性实施例。此函数在神经网络中将大型图像缩小为较小尺寸时特别有用。出于说明而非限制的目的,对XA=(0 3 2 1),XB=(3 1 2 2),XC=(4 0 10)和XD=(0 1 4 0)执行2×2最大池化。在所示的示例性实施例中,采用逐个元素的最大值来获得Y=(4 3 4 2)。在该示例性实施例中,可以如下使用向量矩阵乘法单元:
·将激活函数设置为标识函数。
·
·使用反馈路径,使用逐元素最大值运算将当前的部分和(Z)与先前计算的部分和(V)合并。
·这些运算可以描述如下:
1.V=max(XAWid,0)
2.V=max(XBWid,V)
3.V=max(XCWid,V)
4.V=max(XDWid,V)
5.Y=id(Vt-1)
结合图17中示意性示出的运算,示出了根据本公开的实施例的示例性实施例,其中使用向量矩阵乘法单元执行平均池化运算。此函数在神经网络中将大型图像缩小为较小尺寸时也特别有用。出于说明而非限制的目的,对XA=(0 3 2 1),XB=(3 1 2 2),XC=(4 01 0)和XD=(1 0 3 1)执行2×2平均池化。我们采用元素平均法得出Y=(2 1 2 1)。在该示例性实施例中,可以如下使用向量矩阵乘法单元:
·将激活函数设置为乘以1/4
·使用标识矩阵Wid
·使用反馈路径,只需将先前计算的部分和(V)添加到新的矢量矩阵乘积(Z=XW)。
·在公式中,执行以下运算:
1.V=XAWid+0
2.V=XBWid+V
3.V=XCWid+V
4.V=XDWid+V
5.Y=(V*1/4)
结合图18中示意性示出的运算,示出了示例性实施例,其中使用向量矩阵乘法单元执行逐元素乘法运算。此函数在某些神经网络中至关重要,例如长短期记忆(LSTM)。出于说明而非限制的目的,对XA=(0 3 2 1)和XB=(3 1 2 2)进行逐元素乘法运算,结果为Y=(0 9 4 2)。在该示例性实施例中,可以如下使用向量矩阵乘法单元:
·将激活函数设置为标识函数
·使用标识矩阵Wid
·反馈由一个乘法器单元阵列组合,以计算先前计算的部分和(V)与新矢量矩阵乘积(Z=XW)的乘积。
·在公式中,执行以下运算:
1.V=XAWid*1
2.V=XBWid*V
3.Y=id(V)
结合图19中示意性地示出的运算,示出了示例性实施例,其中,将先前的部分和与多个逐个元素的运算相结合的可编程运算。出于说明而非限制的目的,向量单元可以执行逐元素的函数,例如加(Add)、最大(Max)、乘(Multiply)、移位(Shift)、旁路(Bypass)。附加地或可替代地,这些函数可以结合移位(在一个输入上)一起提供,包括:
·add(shift(A),B),max(shift(A),B),multiply(shift(A),B),shift(A)
·SIMD(单指令,多数据)运算
·对向量单元的所有输入并行执行相同的运算
·向量单元可编程,可在每个周期执行任何运算。
相应地,向量单元具有多个可选择的逐元素运算符,并且输入路径具有可选择的移位运算符。
因此,本公开的实施例提供了一种设备,该设备包括具有可编程的逐元素运算符和逐元素移位运算符的向量矩阵乘法单元。在一些实施例中,数据逻辑是流水线的。
参照图20,示出了根据本公开的实施例的用于操作神经处理核心的方法。在2001,多个相等大小的乘法器组并行地将多个权重应用于多个输入激活,以为每组乘法器生成多个输出。在2002,并行地将来自每组乘法器的多个输出相加,以从每组乘法器生成部分和。在一些实施例中,在2003,并行地将函数应用于部分和以生成多个输出值。在一些实施例中,应用于部分和的函数包括向量加、乘、移位和最大运算,其用于生成复合部分和。如图所示,在一些实施例中,然后可以在2001计算附加的部分和。在2004,并行地将激活函数应用于部分和以生成多个输出激活。
现在参考图21,示出了计算节点的示例的示意图。计算节点10仅是合适的计算节点的一个示例,并且无意于暗示对本文所述实施例的使用范围或功能的任何限制。无论如何,计算节点10能够被实现和/或执行上文阐述的任何功能。
计算节点10具有计算机系统/服务器12,其可与众多其它通用或专用计算系统环境或配置一起操作。众所周知,适于与计算机系统/服务器12一起操作的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任意系统的分布式云计算技术环境,等等。
可以在由计算机系统执行的计算机系统可执行指令(例如程序模块)的一般上下文中描述计算机系统/服务器12。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。可以在分布式云计算环境中实践计算机系统/服务器12,在分布式云计算环境中,任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括内存存储设备的本地和远程计算机系统存储介质中。
如图21所示,以通用计算设备的形式示出了计算节点10中的计算机系统/服务器12。计算机系统/服务器12的组件可以包括但不限于一个或多个处理器或处理单元16、系统存储器28以及将包括系统存储器28的各种系统组件耦合到处理器16的总线18。
总线18代表几种类型的总线结构中的任何一种或多种,包括使用各种总线架构中的任何一种的存储器总线或存储器控制器、外围总线、加速图形端口以及处理器或本地总线。作为示例而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线、外围组件互连(PCI)总线、外围组件互连Express(PCIe)和高级微控制器总线体系结构(AMBA)。
计算机系统/服务器12通常包括各种计算机系统可读介质。这样的介质可以是计算机系统/服务器12可访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12还可以包括其他可移动/不可移动设备、易失性/非易失性计算机系统存储介质。仅作为示例,可以提供存储系统34以用于读取和写入不可移动的非易失性磁性介质(未示出并且通常称为“硬盘驱动器”)。尽管未示出,但是用于从可移动非易失性磁盘(例如“软盘”)进行读取和写入的磁盘驱动器,以及用于从可移动非易失性光盘进行读取或写入的光盘驱动器可以提供CD-ROM、DVD-ROM或其他光学介质之类的磁盘。在这种情况下,每个都可以通过一个或多个数据介质接口连接到总线18。如将在下面进一步描绘和描述的,存储器28可以包括至少一个程序产品,该程序产品具有被配置为执行本公开的实施例的功能的一组程序模块(例如,至少一个)。
具有一组(至少一个)程序模块42的程序/实用工具40,以及操作系统、一个或多个应用程序、其他程序模块和程序数据可以作为示例而非限制地存储在存储器28中。操作系统、一个或多个应用程序、其他程序模块以及程序数据或它们的某种组合中的每一个可以包括联网环境的实现。程序模块42通常执行本文描述的实施例的功能和/或方法。
计算机系统/服务器12还可以与一个或多个外部设备14,例如键盘、指示设备、显示器24等;一个或多个使用户能够与计算机系统/服务器12交互的设备;和/或使计算机系统/服务器12能够与一个或多个其他计算设备进行通信的任何设备(例如,网卡,调制解调器等)进行通信。这样的通信可以经由输入/输出(I/O)接口22发生。然而,计算机系统/服务器12可以通过网络适配器20与一个或多个网络(诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如Internet))通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其他组件通信。应当理解,尽管未示出,但是其他硬件和/或软件组件可以与计算机系统/服务器12结合使用。示例包括但不限于:微代码、设备驱动程序、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据档案存储系统等。
在各个实施例中,一个或多个神经突触核心(未示出)耦合到总线18。在这样的实施例中,神经突触核心可以经由总线18从存储器28接收数据或向存储器28写入数据。同样,如本文所述,神经突触核心可以经由总线18与其他组件相互作用。在各种实施例中,神经突触核心可以包括一个或多个本地控制器、存储器或时钟,例如,如本文其他地方所述。
本公开可以包括系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有用于使处理器执行本公开的各方面的计算机可读程序指令的计算机可读存储介质。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (31)
1.一种用于大规模并行神经推理计算元件的系统,包括:
多个乘法器,多个乘法器被布置成多个相等大小的组,多个乘法器的每一个适于并行地对输入激活施加权重以产生输出;以及
多个加法器,多个加法器的每一个可操作地耦合到多组乘法器中的一个,多个加法器的每一个适于并行地将乘法器的输出加到其相关组,以产生部分和;
多个功能块,多个功能块的每一个可操作地耦合到多个加法器中的一个,多个功能块的每一个适于并行地将函数应用于其相关的加法器的部分和以生成输出值;
向量寄存器,向量寄存器可操作地耦合到功能块,向量寄存器适于存储功能块的输出;以及
第二多个功能块,第二多个功能块中的每一个可操作地耦合到向量寄存器,第二多个功能块中的每一个适于并行地将函数应用于所存储的输出值。
2.根据权利要求1所述的系统,适于接收权重矩阵和激活向量。
3.根据权利要求1所述的系统,其中多个加法器的每一个包括加法器树。
4.根据权利要求3所述的系统,其中加法器树是二叉树。
5.根据权利要求3所述的系统,其中加法器树包括多个进位保存加法器。
6.根据权利要求2所述的系统,其中激活向量的每个激活被广播到所有乘法器组。
7.根据权利要求2所述的系统,还包括可操作地耦合到多组乘法器中的每一个的收缩流水线。
8.根据权利要求1所述的系统,其中多组乘法器是流水线化的。
9.根据权利要求1所述的系统,其中权重是平衡的三进制值。
10.根据权利要求1所述的系统,其中多个乘法器的每一个包括多路复用器。
11.根据权利要求2所述的系统,其中权重矩阵被压缩,并且其中系统适于解压缩所压缩的权重矩阵。
12.根据权利要求1所述的系统,其中多个功能块适于将输出值与随后计算出的输出值进行组合。
13.根据权利要求1所述的系统,还包括:
多个移位器,每个移位器可操作地连接到功能块之一,每个移位器适于并行地移位其相应功能块的输出值,并且其中
多个功能块适于将移位后的值与随后计算出的输出值进行组合。
14.根据权利要求1所述的系统,其中每个功能块的函数是激活函数。
15.根据权利要求1所述的系统,其中每个功能块的函数是可编程的。
16.根据权利要求1所述的系统,其中每个功能块的函数是加法。
17.根据权利要求1所述的系统,其中每个功能块的函数是乘法。
18.根据权利要求1所述的系统,其中每个功能块的函数是标识函数。
19.根据权利要求2所述的系统,还包括查找表,每个激活功能块的函数包括来自查找表的查找。
20.根据权利要求19所述的系统,其中查找表是可编程的。
21.根据权利要求1所述的系统,其中每个功能块的函数是最大函数。
22.根据权利要求1所述的系统,其中每个功能块的函数是最小函数。
23.根据权利要求1所述的系统,其中第二多个功能块中的每一个的函数是标识函数。
24.根据权利要求1所述的系统,其中第二多个功能块中的每一个的函数是激活函数。
25.根据权利要求1所述的系统,适于执行置换运算。
26.根据权利要求1所述的系统,适于执行向量打包运算。
27.根据权利要求1所述的系统,适于执行最大池化运算。
28.根据权利要求1所述的系统,适于执行平均池化运算。
29.根据权利要求1所述的系统,适于执行逐元素乘法运算。
30.一种用于大规模并行神经推理计算元件的方法,包括:
由多个相等大小的乘法器组并行地将多个权重应用于多个输入激活,以为每组乘法器生成多个输出;
由多个加法器并行地将来自每组乘法器的多个输出相加,以从每组乘法器生成部分和;
由多个功能块并行地将函数应用于其相关的加法器的部分和以生成输出值;
由向量寄存器存储功能块的输出;
由第二多个功能块并行地将函数应用于所存储的输出值。
31.一种用于大规模并行神经推理计算元件的系统,包括:
多个乘法器,多个乘法器被布置成多个相等大小的组;
多个加法器,多个加法器的每一个可操作地耦合到多组乘法器中的一个;
多个功能块,多个功能块的每一个可操作地耦合到多个加法器中的一个;
向量寄存器,向量寄存器可操作地耦合到功能块;
第二多个功能块,第二多个功能块中的每一个可操作地耦合到向量寄存器;以及
计算机可读存储介质,其上包含程序指令,该程序指令可执行以执行一种方法,包括:
由多个乘法器的每一个并行地对输入激活施加权重以产生输出;
由多个加法器的每一个并行地将乘法器的输出加到其相关组,以产生部分和;
由多个功能块并行地将函数应用于其相关的加法器的部分和以生成输出值;
由向量寄存器存储功能块的输出;以及
由第二多个功能块并行地将函数应用于所存储的输出值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/942,289 | 2018-03-30 | ||
US15/942,289 US10621489B2 (en) | 2018-03-30 | 2018-03-30 | Massively parallel neural inference computing elements |
PCT/IB2019/051959 WO2019186309A1 (en) | 2018-03-30 | 2019-03-11 | Massively parallel neural inference computing elements |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111758106A CN111758106A (zh) | 2020-10-09 |
CN111758106B true CN111758106B (zh) | 2024-02-27 |
Family
ID=68054462
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980014600.4A Active CN111758106B (zh) | 2018-03-30 | 2019-03-11 | 用于大规模并行神经推理计算元件的方法和系统 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10621489B2 (zh) |
JP (1) | JP7175548B2 (zh) |
CN (1) | CN111758106B (zh) |
DE (1) | DE112019000336T5 (zh) |
GB (1) | GB2585615B (zh) |
WO (1) | WO2019186309A1 (zh) |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9924490B2 (en) * | 2013-10-09 | 2018-03-20 | International Business Machines Corporation | Scaling multi-core neurosynaptic networks across chip boundaries |
US10175980B2 (en) * | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
US10621489B2 (en) | 2018-03-30 | 2020-04-14 | International Business Machines Corporation | Massively parallel neural inference computing elements |
US11468145B1 (en) | 2018-04-20 | 2022-10-11 | Perceive Corporation | Storage of input values within core of neural network inference circuit |
US11222257B1 (en) | 2018-04-20 | 2022-01-11 | Perceive Corporation | Non-dot product computations on neural network inference circuit |
US10740434B1 (en) | 2018-04-20 | 2020-08-11 | Perceive Corporation | Reduced dot product computation circuit |
US11783167B1 (en) | 2018-04-20 | 2023-10-10 | Perceive Corporation | Data transfer for non-dot product computations on neural network inference circuit |
US11210586B1 (en) | 2018-04-20 | 2021-12-28 | Perceive Corporation | Weight value decoder of neural network inference circuit |
US11568227B1 (en) | 2018-04-20 | 2023-01-31 | Perceive Corporation | Neural network inference circuit read controller with multiple operational modes |
US11586910B1 (en) | 2018-04-20 | 2023-02-21 | Perceive Corporation | Write cache for neural network inference circuit |
US11205115B1 (en) | 2018-04-20 | 2021-12-21 | Perceive Corporation | Neural network inference circuit |
US11277455B2 (en) | 2018-06-07 | 2022-03-15 | Mellanox Technologies, Ltd. | Streaming system |
CN110796244B (zh) * | 2018-08-01 | 2022-11-08 | 上海天数智芯半导体有限公司 | 用于人工智能设备的核心计算单元处理器及加速处理方法 |
US20200106828A1 (en) * | 2018-10-02 | 2020-04-02 | Mellanox Technologies, Ltd. | Parallel Computation Network Device |
US20200117981A1 (en) * | 2018-10-11 | 2020-04-16 | International Business Machines Corporation | Data representation for dynamic precision in neural network cores |
WO2020081431A1 (en) * | 2018-10-15 | 2020-04-23 | The Board Of Trustees Of The University Of Illinois | In-memory near-data approximate acceleration |
US11056098B1 (en) | 2018-11-28 | 2021-07-06 | Amazon Technologies, Inc. | Silent phonemes for tracking end of speech |
US11995533B1 (en) | 2018-12-05 | 2024-05-28 | Perceive Corporation | Executing replicated neural network layers on inference circuit |
US11347297B1 (en) | 2019-01-23 | 2022-05-31 | Perceive Corporation | Neural network inference circuit employing dynamic memory sleep |
US11625393B2 (en) | 2019-02-19 | 2023-04-11 | Mellanox Technologies, Ltd. | High performance computing system |
EP3699770A1 (en) | 2019-02-25 | 2020-08-26 | Mellanox Technologies TLV Ltd. | Collective communication system and methods |
US20190228809A1 (en) * | 2019-03-29 | 2019-07-25 | Intel Corporation | Technologies for providing high efficiency compute architecture on cross point memory for artificial intelligence operations |
US11868901B1 (en) | 2019-05-21 | 2024-01-09 | Percieve Corporation | Compiler for optimizing memory allocations within cores |
US11790217B2 (en) * | 2019-09-25 | 2023-10-17 | Intel Corporation | LSTM circuit with selective input computation |
US11651209B1 (en) | 2019-10-02 | 2023-05-16 | Google Llc | Accelerated embedding layer computations |
US20210125040A1 (en) * | 2019-10-24 | 2021-04-29 | International Business Machines Corporation | 3d neural inference processing unit architectures |
US11520854B2 (en) * | 2019-10-29 | 2022-12-06 | Meta Platforms, Inc. | Support for different matrix multiplications by selecting adder tree intermediate results |
US11537859B2 (en) * | 2019-12-06 | 2022-12-27 | International Business Machines Corporation | Flexible precision neural inference processing unit |
US11750699B2 (en) | 2020-01-15 | 2023-09-05 | Mellanox Technologies, Ltd. | Small message aggregation |
US11252027B2 (en) | 2020-01-23 | 2022-02-15 | Mellanox Technologies, Ltd. | Network element supporting flexible data reduction operations |
US12039432B2 (en) * | 2020-03-18 | 2024-07-16 | Infineon Technologies Ag | Artificial neural network activation function |
US20210303987A1 (en) * | 2020-03-26 | 2021-09-30 | Advanced Micro Devices, Inc. | Power reduction for machine learning accelerator background |
US11379557B2 (en) * | 2020-05-07 | 2022-07-05 | Meta Platforms, Inc. | Device and method for flexibly summing matrix values |
US11876885B2 (en) | 2020-07-02 | 2024-01-16 | Mellanox Technologies, Ltd. | Clock queue with arming and/or self-arming features |
US11403111B2 (en) | 2020-07-17 | 2022-08-02 | Micron Technology, Inc. | Reconfigurable processing-in-memory logic using look-up tables |
US20220075669A1 (en) * | 2020-09-08 | 2022-03-10 | Technion Research And Development Foundation Ltd. | Non-Blocking Simultaneous MultiThreading (NB-SMT) |
US11556378B2 (en) | 2020-12-14 | 2023-01-17 | Mellanox Technologies, Ltd. | Offloading execution of a multi-task parameter-dependent operation to a network device |
US11355170B1 (en) | 2020-12-16 | 2022-06-07 | Micron Technology, Inc. | Reconfigurable processing-in-memory logic |
KR20220101519A (ko) * | 2021-01-11 | 2022-07-19 | 에스케이하이닉스 주식회사 | 엘리먼트-와이즈 곱셈을 위한 프로세싱-인-메모리 장치 |
CN112906863B (zh) * | 2021-02-19 | 2023-04-07 | 山东英信计算机技术有限公司 | 一种神经元加速处理方法、装置、设备及可读存储介质 |
US11354134B1 (en) | 2021-03-25 | 2022-06-07 | Micron Technology, Inc. | Processing-in-memory implementations of parsing strings against context-free grammars |
US20220328099A1 (en) * | 2021-04-09 | 2022-10-13 | Mediatek Singapore Pte. Ltd. | Method and apparatus for performing a mac operation in a memory array |
CN114666038B (zh) * | 2022-05-12 | 2022-09-02 | 广州万协通信息技术有限公司 | 一种大位宽数据处理方法、装置、设备及存储介质 |
US11922237B1 (en) | 2022-09-12 | 2024-03-05 | Mellanox Technologies, Ltd. | Single-step collective operations |
CN117896227A (zh) * | 2022-10-14 | 2024-04-16 | 北京三星通信技术研究有限公司 | 接收机执行的方法、无线通信设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5337395A (en) * | 1991-04-08 | 1994-08-09 | International Business Machines Corporation | SPIN: a sequential pipeline neurocomputer |
US5887078A (en) * | 1993-12-29 | 1999-03-23 | Korea Telecommunication Authority | Apparatus and method for classifying and recognizing image patterns using neural network |
CN106355246A (zh) * | 2015-10-08 | 2017-01-25 | 上海兆芯集成电路有限公司 | 三配置神经网络单元 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2625347B1 (fr) * | 1987-12-23 | 1990-05-04 | Labo Electronique Physique | Structure de reseau de neurones et circuit et arrangement de reseaux de neurones |
JP2606339B2 (ja) * | 1988-11-30 | 1997-04-30 | 日本電気株式会社 | 乗算器 |
JP2703010B2 (ja) * | 1988-12-23 | 1998-01-26 | 株式会社日立製作所 | ニユーラルネツト信号処理プロセツサ |
US5065339A (en) * | 1990-05-22 | 1991-11-12 | International Business Machines Corporation | Orthogonal row-column neural processor |
JPH05346914A (ja) * | 1992-06-16 | 1993-12-27 | Matsushita Electron Corp | ニューロプロセッサ |
JPH0883264A (ja) * | 1994-09-12 | 1996-03-26 | Nippon Telegr & Teleph Corp <Ntt> | 1次元シストリックアレイ型演算器とそれを用いたdct/idct演算装置 |
US7590676B1 (en) * | 2005-09-27 | 2009-09-15 | Altera Corporation | Programmable logic device with specialized multiplier blocks |
US7870180B2 (en) | 2006-10-31 | 2011-01-11 | Motorola, Inc. | Method and apparatus for nonlinear signal and data aggregation |
JP5376920B2 (ja) * | 2008-12-04 | 2013-12-25 | キヤノン株式会社 | コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置 |
US9153230B2 (en) | 2012-10-23 | 2015-10-06 | Google Inc. | Mobile speech recognition hardware accelerator |
EP3089080A1 (en) | 2015-04-27 | 2016-11-02 | Universität Zürich | Networks and hierarchical routing fabrics with heterogeneous memory structures for scalable event-driven computing systems |
US10049322B2 (en) | 2015-05-21 | 2018-08-14 | Google Llc | Prefetching weights for use in a neural network processor |
US9747546B2 (en) | 2015-05-21 | 2017-08-29 | Google Inc. | Neural network processor |
US10438117B1 (en) | 2015-05-21 | 2019-10-08 | Google Llc | Computing convolutions using a neural network processor |
US11244225B2 (en) * | 2015-07-10 | 2022-02-08 | Samsung Electronics Co., Ltd. | Neural network processor configurable using macro instructions |
US10846591B2 (en) | 2015-12-29 | 2020-11-24 | Synopsys, Inc. | Configurable and programmable multi-core architecture with a specialized instruction set for embedded application based on neural networks |
GB201607713D0 (en) * | 2016-05-03 | 2016-06-15 | Imagination Tech Ltd | Convolutional neural network |
EP3465550B1 (en) | 2016-05-26 | 2023-09-27 | Samsung Electronics Co., Ltd. | Accelerator for deep neural networks |
US10621486B2 (en) | 2016-08-12 | 2020-04-14 | Beijing Deephi Intelligent Technology Co., Ltd. | Method for optimizing an artificial neural network (ANN) |
US9646243B1 (en) | 2016-09-12 | 2017-05-09 | International Business Machines Corporation | Convolutional neural networks using resistive processing unit array |
KR20180034853A (ko) * | 2016-09-28 | 2018-04-05 | 에스케이하이닉스 주식회사 | 합성곱 신경망의 연산 장치 및 방법 |
US10733505B2 (en) | 2016-11-10 | 2020-08-04 | Google Llc | Performing kernel striding in hardware |
US10528321B2 (en) * | 2016-12-07 | 2020-01-07 | Microsoft Technology Licensing, Llc | Block floating point for neural network implementations |
CN106682732B (zh) | 2016-12-14 | 2019-03-29 | 浙江大学 | 一种应用于神经网络的高斯误差函数电路 |
US10817587B2 (en) * | 2017-02-28 | 2020-10-27 | Texas Instruments Incorporated | Reconfigurable matrix multiplier system and method |
US10909447B2 (en) * | 2017-03-09 | 2021-02-02 | Google Llc | Transposing neural network matrices in hardware |
US10410098B2 (en) * | 2017-04-24 | 2019-09-10 | Intel Corporation | Compute optimizations for neural networks |
GB2568776B (en) * | 2017-08-11 | 2020-10-28 | Google Llc | Neural network accelerator with parameters resident on chip |
GB2568086B (en) * | 2017-11-03 | 2020-05-27 | Imagination Tech Ltd | Hardware implementation of convolution layer of deep neutral network |
US10621489B2 (en) | 2018-03-30 | 2020-04-14 | International Business Machines Corporation | Massively parallel neural inference computing elements |
-
2018
- 2018-03-30 US US15/942,289 patent/US10621489B2/en active Active
-
2019
- 2019-03-11 CN CN201980014600.4A patent/CN111758106B/zh active Active
- 2019-03-11 JP JP2020551502A patent/JP7175548B2/ja active Active
- 2019-03-11 GB GB2016300.2A patent/GB2585615B/en active Active
- 2019-03-11 WO PCT/IB2019/051959 patent/WO2019186309A1/en active Application Filing
- 2019-03-11 DE DE112019000336.4T patent/DE112019000336T5/de active Pending
-
2020
- 2020-03-04 US US16/808,900 patent/US11010662B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5337395A (en) * | 1991-04-08 | 1994-08-09 | International Business Machines Corporation | SPIN: a sequential pipeline neurocomputer |
US5887078A (en) * | 1993-12-29 | 1999-03-23 | Korea Telecommunication Authority | Apparatus and method for classifying and recognizing image patterns using neural network |
CN106355246A (zh) * | 2015-10-08 | 2017-01-25 | 上海兆芯集成电路有限公司 | 三配置神经网络单元 |
Also Published As
Publication number | Publication date |
---|---|
JP2021519455A (ja) | 2021-08-10 |
CN111758106A (zh) | 2020-10-09 |
US20190303749A1 (en) | 2019-10-03 |
US20200202205A1 (en) | 2020-06-25 |
GB2585615A (en) | 2021-01-13 |
GB202016300D0 (en) | 2020-11-25 |
US11010662B2 (en) | 2021-05-18 |
DE112019000336T5 (de) | 2020-09-17 |
US10621489B2 (en) | 2020-04-14 |
GB2585615B (en) | 2021-05-19 |
JP7175548B2 (ja) | 2022-11-21 |
WO2019186309A1 (en) | 2019-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111758106B (zh) | 用于大规模并行神经推理计算元件的方法和系统 | |
JP7325158B2 (ja) | ニューラル・ネットワーク・コアにおける動的精度のためのデータ表現 | |
US6539368B1 (en) | Neural processor, saturation unit, calculation unit and adder circuit | |
US12001953B2 (en) | Neural network data computation using mixed-precision | |
US11893470B2 (en) | Neural network processing using specialized data representation | |
EP3931756A1 (en) | Neural network layer processing with normalization and transformation of data | |
CN112219209A (zh) | 具有有可重配置的核级和向量级并行度的并行计算架构 | |
WO2021073918A1 (en) | Multi-mode low-precision inner-product computation circuits for massively parallel neural inference engine | |
WO2020176248A1 (en) | Neural network layer processing with scaled quantization | |
Véstias et al. | A configurable architecture for running hybrid convolutional neural networks in low-density FPGAs | |
CN111126557A (zh) | 神经网络量化、应用方法、装置和计算设备 | |
CN111492369A (zh) | 人工神经网络中移位权重的残差量化 | |
AU2020395435B2 (en) | Flexible precision neural inference processing units | |
EP4285215A1 (en) | Digital circuitry for normalization functions | |
KR20230121151A (ko) | 디지털 곱셈기 회로망의 수치 정밀도 | |
Alsuhli et al. | Conventional Number Systems for DNN Architectures | |
JP7506276B2 (ja) | 半導体ハードウェアにおいてニューラルネットワークを処理するための実装および方法 | |
US12003255B2 (en) | Method and device for binary coding of signals in order to implement digital MAC operations with dynamic precision | |
GB2606600A (en) | An efficient method for VLSI implementation of useful neural network activation functions | |
CN115016762A (zh) | 用于执行乘积累加运算的运算装置和运算方法 | |
WO2020118051A1 (en) | Neural network processing using specialized data representation |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |