大规模并行神经推理计算元件

文档序号:1047883 发布日期:2020-10-09 浏览:3次 >En<

阅读说明:本技术 大规模并行神经推理计算元件 (Large-scale parallel neural reasoning computing element ) 是由 泽田润 D·莫德哈 J·V·阿尔苏尔 S·K·艾瑟尔 R·奥普斯瓦密 B·S·塔巴 A· 于 2019-03-11 设计创作,主要内容包括:提供了大规模并行神经推理计算元件。多个乘法器被布置成多个相等大小的组。多个乘法器的每一个都适于并行地对输入激活施加权重以产生输出。多个加法器可操作地耦合到多组乘法器中的一个。多个加法器的每一个适于并行地将乘法器的输出加到其相关组,以产生部分和。多个功能块可操作地耦合到多个加法器中的一个。多个功能块的每一个适于并行地将函数应用于其相关的加法器的部分和以生成输出值。(Massively parallel neuro-inference computing elements are provided. The plurality of multipliers are arranged in a plurality of equally sized groups. Each of the plurality of multipliers is adapted to apply weights to input activations in parallel to produce an output. A plurality of adders is operatively coupled to one of the plurality of sets of multipliers. Each of the plurality of adders is adapted to add the output of the multiplier to its associated set in parallel to produce a partial sum. A plurality of functional blocks are operatively coupled to one of the plurality of adders. Each of the plurality of functional blocks is adapted to apply a function to its associated partial sum of adders in parallel to generate an output value.)

大规模并行神经推理计算元件

背景技术

本公开的实施例涉及神经网络推理,并且更具体地,涉及大规模并行神经推理计算元件。

发明内容

根据本公开的实施例,提供了用于大规模并行神经推理计算的系统、方法和计算机程序产品。多个乘法器被布置成多个相等大小的组。多个乘法器的每一个都适于并行地对输入激活施加权重以产生输出。多个加法器可操作地耦合到多组乘法器中的一个。多个加法器的每一个适于并行地将乘法器的输出加到其相关组,以产生部分和。多个功能块可操作地耦合到多个加法器中的一个。多个功能块的每一个适于并行地将函数应用于其相关的加法器的部分和以生成输出值。

根据一个方面,提供了一种系统,包括:多个乘法器,该多个乘法器被布置成多个相等大小的组,多个乘法器的每一个适于并行地对输入激活施加权重以产生输出;多个加法器,多个加法器的每一个可操作地耦合到多组乘法器中的一个,多个加法器的每一个适于并行地将乘法器的输出加到其相关组,以产生部分和。

根据一个方面,提供了一种方法,包括:由多个相等大小的乘法器组并行地将多个权重应用于多个输入激活,以为每组乘法器生成多个输出;并行地将来自每组乘法器的多个输出相加,以从每组乘法器生成部分和。

根据一个方面,提供了一种系统,包括:多个乘法器,该多个乘法器布置成多个相等大小的组;多个加法器,多个加法器的每一个可操作地耦合到多组乘法器中的一个;一种计算机可读存储介质,其上包含程序指令,该程序指令可执行以执行一种方法,包括:通过多个乘法器的每一个,并行地对输入激活施加权重以产生输出;通过多个加法器的每一个,并行地将乘法器的输出加到其相关组,以产生部分和。

附图说明

现在将仅通过示例的方式,参考附图来描述本发明的实施例,其中:

图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所示:使用(

Figure BDA0002643434690000111

的一个补码)而不是-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

Figure BDA0002643434690000131

·然后执行: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)。在该示例性实施例中,可以如下使用向量矩阵乘法单元:

·将激活函数设置为标识函数。

·使用标识矩阵

Figure BDA0002643434690000141

·使用反馈路径,使用逐元素最大值运算将当前的部分和(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),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

35页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于基于硬件的池化的系统和方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!