专用神经网络训练芯片

文档序号:1661754 发布日期:2019-12-27 浏览:12次 >En<

阅读说明:本技术 专用神经网络训练芯片 (Special neural network training chip ) 是由 托马斯·诺里 奥利弗·特马姆 安德鲁·埃弗里特·菲尔普 诺曼·保罗·约皮 于 2018-05-17 设计创作,主要内容包括:描述了包括用于训练神经网络的专用硬件芯片的方法,系统和装置。专用硬件芯片可以包括标量处理器,被配置为控制专用硬件芯片的计算操作。芯片还包括矢量处理器,被配置为具有矢量处理单元的二维阵列,矢量处理单元全部以单指令多数据方式执行相同的指令,并且通过矢量处理器的加载和存储指令彼此通信。芯片可以另外包括矩阵乘法单元,其耦合到矢量处理器,矩阵乘法单元被配置为将至少一个二维矩阵与另一个一维矢量或二维矩阵相乘以便获得乘法结果。(Methods, systems, and apparatus are described that include a dedicated hardware chip for training a neural network. The dedicated hardware chip may include a scalar processor configured to control computing operations of the dedicated hardware chip. The chip also includes a vector processor configured as a two-dimensional array having vector processing units that all execute the same instructions in a single instruction multiple data manner and communicate with each other through load and store instructions of the vector processor. The chip may additionally include a matrix multiplication unit coupled to the vector processor, the matrix multiplication unit configured to multiply at least one two-dimensional matrix with another one-dimensional vector or two-dimensional matrix to obtain a multiplication result.)

专用神经网络训练芯片

背景技术

本说明书涉及在硬件中执行神经网络计算。神经网络是机器学习模型,每个模型采用一个或多个模型层来为接收的输入生成例如分类的输出。除了输出层之外,一些神经网络还包括一个或多个隐藏层。每个隐藏层的输出用作网络中的下一层(即,网络的下一个隐藏层或输出层)的输入。网络的每个层根据相应参数集的当前值,从接收的输入生成输出。

发明内容

本说明书描述了与专用硬件芯片相关的技术,该专用硬件芯片是针对,特别是训练阶段的机器学习工作负载优化的可编程线性代数加速器。

通常,本说明书中描述的主题的一个创新方面可以体现在专用的硬件芯片中。

该方面的其他实施例包括记录在一个或多个计算机存储设备上的相应计算机系统,装置和计算机程序,每个计算机系统,装置和计算机程序被配置为执行方法的动作。对于要配置为执行特定操作或动作的一个或多个计算机的系统,意味着系统已在其上安装了软件,固件,硬件或它们的组合,在操作中使系统执行操作或动作。对于要配置为执行特定操作或动作的一个或多个计算机程序,意味着一个或多个程序包括当由数据处理装置执行时使装置执行操作或动作的指令。

前述和其他实施方案可以各自任选地包括一个或多个以下特征,单独或组合。特别地,一个实施例包括组合的所有以下特征。

一种用于训练神经网络的专用硬件芯片,专用硬件芯片包括:标量处理器,被配置为控制所述专用硬件芯片的计算操作;矢量处理器,被配置为具有矢量处理单元的二维阵列,所述矢量处理单元全部以单指令、多数据方式执行相同的指令,并且通过所述矢量处理器的加载和存储指令彼此通信;以及矩阵乘法单元,被耦合到所述矢量处理器,所述矩阵乘法单元被配置为将至少一个二维矩阵与另一个一维矢量或二维矩阵相乘,以便获得乘法结果。

向量存储器,被配置为向所述向量处理器提供快速专用存储器。标量存储器,被配置为向所述标量处理器提供快速专用存储器。转置单元,被配置为进行矩阵的转置操作。归约和置换单元,被配置为进行数的归约并且对向量阵列的不同通道之间的数进行置换。高带宽存储器,被配置为存储所述专用硬件芯片的数据。专用硬件芯片还包括稀疏计算核。

专用硬件芯片还包括:接口;以及芯片间互连,用于将所述专用硬件芯片上的所述接口或资源连接到其他专用硬件芯片或资源。

专用硬件芯片还包括高带宽存储器。芯片间互连将所述接口和所述高带宽存储器连接到其他专用硬件芯片。该接口可以是主计算机的主机接口。该接口可以是主计算机网络的标准网络接口。

本说明书中描述的主题可以在特定实施例中实施,以便实现以下优点中的一个或多个。专用硬件芯片包含除了传统的0维和1维张量计算之外本身支持更高维度张量(即2维和更高)的处理器,同时还针对机器学习的32位或更低精度计算进行了优化。

在附图和以下描述中阐述了本说明书的主题的一个或多个实施例的细节。根据说明书,附图和权利要求,本主题的其他特征,方面和优点将变得显而易见。

附图说明

图1示出了连接专用硬件芯片的示例组合的高速连接的示例拓扑,专用硬件芯片在板上以环形拓扑连接。

图2示出了用于训练神经网络的示例专用硬件芯片的高级图。

图3示出了计算核的高级示例。

图4示出了进行神经网络训练的芯片的更详细的图。

各种附图中相同的附图标记和名称表示相同的元件。

具体实施方式

可以训练具有多个层的神经网络,然后将神经网络用于计算推理。通常,神经网络的一些或所有层具有在神经网络训练期间被调整的参数。例如,一些或所有层可以将层的也称为权重的参数矩阵与层的输入相乘,作为生成层输出的一部分。在训练神经网络期间调整矩阵中的参数值。

特别地,在训练期间,训练系统进行神经网络训练过程,以调整神经网络的参数值,例如,以便从参数的初始值确定训练的参数值。训练系统使用称为反向传播的误差反向传播,结合优化方法来计算关于神经网络的每个参数的目标函数的梯度,并使用该梯度来调整参数的值。

然后,训练的神经网络可以使用正向传播来计算推断,即,处理通过神经网络的层的输入以生成用于输入的神经网络输出。

例如,给定输入,神经网络可以计算输入的推断。神经网络通过处理经过神经网络的每个层的输入来计算该推断。在一些实施方式中,神经网络的层按序列排列。

因此,为了从接收的输入计算推断,神经网络接收输入,并通过序列中的每个神经网络层来进行处理,以产生推断,其中,来自一个神经网络层的输出作为输入提供给下一个神经网络层。神经网络层的数据输入可以被称为层的激活输入,数据输入例如为神经网络的输入或到神经网络层的序列中的层下面的层的输出。

在一些实施方式中,神经网络的层布置在有向图中。也就是说,任何特定层都可以接收多个输入,多个输出或两者。还可以布置神经网络的层,使得层的输出可以作为输入被发送回先前层。

示例系统是高性能多芯片张量计算系统,该系统针对多维阵列的矩阵乘法和其他计算进行了优化。这些操作对于训练神经网络是重要的,以及可选地,对于使用神经网络来计算推断是重要的。

在示例系统内,布置多个专用芯片以分发操作,以便系统有效地进行训练和推断计算。在一个实施方式中,板上有四个芯片,以及在较大的系统中,许多板在机架中彼此相邻或者在其他情况下许多板彼此进行数据通信。

图1示出了连接专用硬件芯片101a-101d的示例性组合的高速连接的示例拓扑,专用硬件芯片101a-101d在板上以环形拓扑连接。每个芯片包含两个处理器(102a-h)。该拓扑是一维(1D)环面;在1D环面中,每个芯片直接连接到两个相邻芯片。如图所示,在一些实施方式中,芯片包含微处理器核,微处理器核已经用软件或固件指令编程以进行操作。在图1中,所有芯片都在单个模块100上。图中所示的处理器之间的线表示高速数据通信链路。处理器有利地在一个集成电路板上制造,但是它们也可以在多个板上制造。越过芯片边界,链路是芯片间网络链路;同一芯片上的处理器通过芯片内接口链路进行通信。链路可以是半双工链路或者全双工链路,在半双工链路上,一次只有一个处理器可以发送数据,在全双工链路上,可以同时在两个方向上发送数据。使用该示例拓扑等的并行处理在2017年2月21日提交的,题为“PARALLEL PROCESSING OF REDUCTION AND BROADCASTOPERATIONS ON LARGEDATASETS OF NON-SCALAR DATA”的第62/461,758号美国专利申请中详细描述,并通过引用结合于此。

图2示出了用于训练神经网络的示例专用硬件芯片的高级图。如图所示,单个专用硬件芯片包括两个独立处理器(202a,202b)。每个处理器(202a,202b)包含两种不同的核:(1)计算核,例如,超长指令字(VLIW)机器,(203a,203b)和(2)稀疏计算核,即嵌入层加速器,(205a,205b)。

每个核(203a,b)针对密集线性代数问题进行了优化。单个超长指令字并行控制多个计算核。将参考图3和4更详细地描述计算核。

示例稀疏计算核(205a,b)将非常稀疏的高维数据映射到密集的低维数据中,使得其余层处理密集打包的输入数据。例如,稀疏计算核可以在正在训练的神经网络中进行任何嵌入层的计算。

为了进行这种稀疏到密集的映射,稀疏计算核使用预先构建的查找表,即嵌入表。例如,当存在一系列查询词作为用户输入时,每个查询词被转换为哈希标识符或独热编码矢量。使用标识符作为表索引,嵌入表返回相应的密集向量,该向量可以是下一层的输入激活向量。稀疏计算核还可以跨搜索查询词进行归约操作,以创建一个密集激活矢量。稀疏计算核进行有效的稀疏分布式查找,因为嵌入表可能很大并且不适合于一个专用硬件芯片的有限容量高带宽存储器。关于稀疏计算核功能的更多细节可以在2016年2月5日提交的题为“MATRIX PROCESSING APPARATUS”的第15/016,486号美国专利申请中找到,

并且通过引用并于此。

图3示出了计算核(300)的高级示例。计算核可以是机器,即VLIW机器,其并行地控制若干计算单元。每个计算核(300)包含:标量存储器(304),向量存储器(308),标量处理器(303),向量处理器(306)和扩展向量单元(即矩阵乘法单元(MXU)(313),转置单元(XU)(314),以及归约和置换单元(RPU)(316))。

示例标量处理器进行VLIW指令获取/执行循环,并控制计算核。在获取和解码指令束之后,标量处理器本身仅使用标量处理器(303)和标量存储器(304)的多个多位寄存器,即32个32位寄存器,来执行在束的标量槽中找到的指令。标量指令集包括例如用于地址计算的正常的算术运算,加载/存储指令和分支指令。剩余的指令槽对用于矢量处理器(306)或其他扩展矢量单元(313,314,316)的指令进行编码。经解码的矢量指令被转发到矢量处理器(306)。

标量处理器(303)可以将多达三个标量寄存器的值与向量指令一起转发到其他处理器和单元以进行操作。标量处理器还可以直接从矢量处理器检索计算结果。然而,在一些实施方式中,示例芯片具有从矢量处理器到标量处理器的低带宽

通信路径。

向量指令调度程序位于标量处理器和向量处理器之间。该调度程序从非标量VLIW槽接收解码指令,并将这些指令广播到矢量处理器(306)。矢量处理器(306)由矢量处理单元的二维阵列,即128×8阵列组成,矢量处理单元以单指令多数据(SIMD)方式执行相同的指令。参考图4详细描述矢量处理单元。

示例标量处理器(303)访问小的、快速的私有标量存储器(304),其通过更大但更慢的高带宽存储器(HBM)(310)备份。类似地,示例矢量处理器(306)访问小的、快速的私有向量存储器(306),其也由HBM(310)备份。字-粒度访问发生在标量处理器(303)和标量存储器(304)之间或矢量处理器(306)和矢量存储器(308)之间。向量处理器和向量存储器之间的加载和存储的粒度是128个32位字的向量。在标量存储器(304)和HBM(310)之间以及向量存储器(306)和HBM(310)之间发生直接存储器访问。在一些实施方式中,可以仅通过标量或向量存储器来完成从HBM(310)到处理器(303,306)的存储传输。另外,标量存储器和向量存储器之间可能没有直接的存储传输。

指令可以指定扩展矢量单元操作。与每个执行的向量单元指令一起,存在二维的,即128乘8的向量单元,每个向量单元可以将一个寄存器值作为输入操作数发送到扩展向量单元。每个扩展矢量单元获取输入操作数,进行相应的操作,并将结果返回给矢量处理器(306)。下面将参照图4描述扩展矢量单元。

图4示出了进行神经网络训练的芯片的更详细的图。如上所示和所述,芯片包含两个计算核(480a,480b)和两个稀疏计算核(452a,452b)。

该芯片具有共享区域,该共享区域包括到主计算机(450)或多个主计算机的接口。该接口可以是主计算机的主机接口,也可以是主计算机网络的标准网络接口。共享区域还可以沿底部具有高带宽存储器堆栈(456a-456d),以及将接口和存储器以及来自其他芯片的数据连接在一起的芯片间互连(448)。互连还可以将接口连接到硬件芯片上的计算资源。多个堆栈,即两个高带宽存储器(456a-b,456c-d)与每个计算核(480a,480b)相关联。

芯片将数据存储在高带宽存储器(456c-d)中,将数据读入和读出矢量存储器(446),并处理该数据。计算核(480b)本身包括向量存储器(446),其是被分成两个维度的片上S-RAM。向量存储器具有地址空间,在该地址空间中,地址容纳浮点数,即128个每个32位的数。计算核(480b)还包括计算值的计算单元和控制计算单元的标量单元。计算单元可以包括矢量处理器,并且标量单元可以包括标量处理器。可以形成专用芯片的一部分的计算核还可以包括矩阵乘法单元或另一个扩展操作单元,例如转置单元(422)以及归约和置换单元,转置单元进行矩阵(即128×128矩阵)的转置操作。

矢量处理器(306)由矢量处理单元的二维阵列(即128×8)组成,它们都以单指令多数据(SIMD)方式执行相同的指令。矢量处理器具有通道和子通道,即128个通道和8个子通道。在通道内,矢量单元通过加载和存储指令彼此通信。每个向量单元一次可以访问一个4字节值。不属于同一通道的矢量单元无法直接通信。这些向量单元必须使用下面描述的归约/置换单元。

计算单元包括矢量处理单元(440)中的矢量寄存器,即32个寄存器,矢量寄存器可用于浮点运算和整数运算。计算单元包括两个算术逻辑单元(ALU)(406c-d)来进行计算。一个ALU(406c)进行浮点加法,另一个ALU(406d)进行浮点乘法。两个ALU(406c-d)都可以进行各种其他操作,例如移位,掩码和比较。例如,计算核(480b)可能想要向量寄存器V1加第二向量寄存器V2,并将结果放入第三向量寄存器V3中。为了计算相加,计算核(480b)在一个时钟周期中进行多个操作。使用这些寄存器作为操作数,每个矢量单元可以在每个时钟周期同时执行两个ALU指令,一个加载和一个存储指令。可以在标量处理器中计算加载或存储指令的基地址并将基地址转发到向量处理器。每个子通道中的每个向量单元可以使用诸如跨步和专用索引地址寄存器的各种方法来计算自己的偏移地址。

计算单元还包含扩展一元流水线(EUP)(416),其进行诸如平方根和倒数的运算。计算核(480b)需要三个时钟周期来进行这些运算,因为它们在计算上更复杂。由于EUP处理需要一个以上的时钟周期,因此用先进先出数据存储器来存储结果。运算完成后,结果将存储在FIFO中。计算内核可以在以后使用单独的指令将数据从FIFO中拉出并将数据放入向量寄存器中。随机数发生器(420)允许计算核(480b)每个周期产生多个随机数,即每周期128个随机数。

如上所述,可以作为专用硬件芯片的一部分实施的每个处理器具有三个扩展操作单元:进行矩阵乘法运算的矩阵乘法单元(448);进行矩阵(即128×128矩阵)的转置操作的转置单元(422),以及归约和置换单元(在图4中424,426示为单独的单元)。

矩阵乘法单元在两个矩阵之间进行矩阵乘法。由于计算核需要加载将要乘以的矩阵的一组数字,所以矩阵乘法单元(438)接收数据。如图所示,数据来自向量寄存器(440)。每个向量寄存器包含128×8个数字,即32位数。然而,当数据被发送到矩阵乘法单元(448)以将数字改变为较小的比特大小,即从32比特改变为16比特时,可能发生浮点转换。串行器(440)确保何时从向量寄存器中读出数字,二维阵列,即128×8矩阵被读取为128个数字的集合,对于接下来的八个时钟周期中的每一个时钟周期,该集合被发送到矩阵乘法单元(448)。在矩阵乘法完成计算之后,结果被反序列化(442a,b),这意味着结果矩阵被保持若干个时钟周期。例如,对于128x 8阵列,在8个时钟周期中的每一个时钟周期保持128个数字,然后将128个数字推送到FIFO,以便可以在一个时钟周期内抓取128x 8个数字的二维阵列并存储在矢量中寄存器(440)。

在周期的一段,即128,权重被移位到矩阵乘法单元(448)中,作为要乘以矩阵的数。一旦已经加载了矩阵和权重,计算核(480)就可以向矩阵乘法单元(448)发送数字的集合(即128×8)。该集合中的每一行可以乘以矩阵,以便在每个时钟周期产生数个(即128个)结果。当计算核进行矩阵乘法时,计算核也将后台中的新数字集合移位为计算核将乘以的下一个矩阵,以便当之前的矩阵的计算过程完成时,下一个矩阵可用。矩阵乘法单元(448)在题为“LOW MATRIX MULTIPLY UNIT COMPOSED OF MULTI-BIT CELLS”的第16113-8251001号和题为“MATRIX MULTIPLY UNIT WITH NUMERICS OPTIMIZED FOR NEURAL NETWORKAPPLICATIONS”的第16113-8252001号申请中更详细地描述,两者都通过引用结合于此。

转置单元转置矩阵。转置单元(422)接收数字并对它们进行转置,使得跨越通道的数字与另一维度中的数字一起转置。在一些实施方式中,矢量处理器包括128×8矢量单元。因此,为了转置128×128矩阵,全矩阵转置需要16个单独的转置指令。转置完成后,转置矩阵将可用。但是,需要显式指令将转置矩阵移动到矢量寄存器文件中。

归约/置换单元(或单元424,426)通过支持各种运算(诸如置换,通道旋转,旋转置换,通道归约,置换通道归约和分段置换通道归约)来解决跨通道通信的问题。如图所示,这些计算是分开的,然而,计算核可以使用一个或另一个或一个链接到另一个。归约单元(424)将每行数字中的所有数字相加,并将数字馈送到置换单元(426)。置换单元在不同通道之间移动数据。转置单元,归约单元,置换单元和矩阵乘法单元各自需要大于一个的时钟周期才能完成。因此,每个单元都有一个相关的FIFO,因此可以将计算结果推送到FIFO,并且可以在以后执行单独的指令将数据从FIFO中拉出并进入向量寄存器。通过使用FIFO,计算核不需要在冗长的操作期间保留多个向量寄存器。如图所示,每个单元从向量寄存器(440)获取数据。

计算核使用标量单元来控制计算单元。标量单元有两个主要功能:(1)进行循环计数和寻址;(2)生成直接存储器地址(DMA)请求,以便DMA控制器在后台在高带宽存储器(456c-d)和向量存储器(446)之间的移动数据,然后移动数据到芯片间连接(448),到示例系统中的其他芯片。标量单元包含指令存储器(404),指令解码和发布(402),包含标量寄存器(即32位)的标量处理单元(408),标量存储器(410)以及用于每个时钟周期执行两次操作的两个ALU(406a,b)。标量单元可以将操作数和立即值馈送给向量运算。可以从指令解码和发布(402)发送每个指令,作为包含在向量寄存器(440)上执行的指令的指令束。每个指令束是一个超长指令字(VLIW),每个指令是数个位的宽度,被分成许多指令字段。

芯片400可用于进行神经网络的训练的至少一部分。特别地,当训练神经网络时,系统使用主机接口(450)从主计算机接收标记的训练数据。主机接口还可以接收包括神经网络计算的参数的指令。参数可以包括以下中的至少一个或多个:应该处理多少层,每层的相应的权重输入集,激活输入的初始集,即训练数据,训练数据是神经网络的输入,从神经网络计算推理或进行训练,每层的相应输入和输出的大小,神经网络计算的步幅值,以及要处理的层的类型,例如,卷积层或完全连接的层。

可以将权重输入集和激活输入集发送到计算核的矩阵乘法单元。在将权重输入和激活输入发送到矩阵乘法单元之前,可能存在由系统中的其他组件对输入进行的其他计算。在一些实施方式中,有两种方式将激活从稀疏计算核发送到计算核。第一,稀疏计算核可以通过高带宽存储器发送通信。对于大量数据,稀疏计算核可以使用直接存储器地址(DMA)指令,在高带宽存储器中存储激活,该指令更新计算核中的目标同步标记。计算内核可以使用同步指令等待此同步标志。一旦设置了同步标志,计算核就使用DMA指令将激活从高带宽存储器复制到相应的向量存储器。

其次,稀疏计算核可以直接将通信发送到计算核向量存储器。如果数据量不大(即,适合于计算核向量存储器),则稀疏计算核可以使用DMA指令直接将激活存储在计算核的向量存储器中,同时向计算核通知同步标记。计算核可以在进行取决于激活的计算之前等待此同步标志。

矩阵乘法单元可以处理权重输入和激活输入,并向矢量处理单元提供输出的矢量或矩阵。矢量处理单元可以存储已处理输出的矢量或矩阵。例如,矢量处理单元可以将非线性函数应用于矩阵乘法单元的输出以生成激活值。在一些实施方式中,向量处理单元生成标准化值,合并值或两者。已处理输出的矢量可以用作矩阵乘法单元的激活输入,以用于神经网络中的后续层。

一旦计算出一批训练数据的已处理输出的矢量,就可以将输出与标记的训练数据的预期输出进行比较以确定误差。然后,系统可以进行反向传播以通过神经网络传播错误,以便训练网络。使用片上矢量处理单元的算术逻辑单元计算损耗函数的梯度。

示例系统需要激活梯度以进行通过神经网络的反向传播。为了将激活梯度从计算核发送到稀疏计算核,示例系统可以使用计算核DMA指令来在高带宽存储器中存储激活梯度,同时用同步标记通知目标稀疏计算核。稀疏计算核可以在进行取决于激活梯度的计算之前等待该同步标记。

矩阵乘法单元为反向传播进行两个矩阵乘法运算。一个矩阵乘法将来自网络中的前一层的反向传播误差通过网络沿着反向路径应用于权重,以调整权重并确定神经网络的新权重。第二个矩阵乘法将误差应用于原始激活,作为对神经网络中的先前层的反馈。原始激活在正向传递期间生成,并且可以被存储以在反向传递期间使用。对于计算,可以使用向量处理单元中的通用指令,通用指令包括浮点加,减和乘法。通用指令还可以包括比较,移位,掩码和逻辑运算。虽然矩阵乘法可以被特别好地加速,但是矢量处理单元的算术逻辑单元以每周期每个核128×8×2个运算的速率进行通用计算。

本说明书中描述的主题和功能操作的实施例能够以数字电子电路、以有形体现的计算机软件或固件、以计算机硬件,包括本说明书中公开的结构以及它们的结构等同体、或以它们中一个或多个的组合实施。在本说明书中描述的主题的实施例能够实施为一个或多个计算机程序,即在有形非暂时性程序载体上编码并用于由数据处理装置执行或控制所述数据处理装置的操作的计算机程序指令的一个或多个模块。计算机存储介质能够是机器可读存储设备、机器可读存储基板、随机或串行存取存储设备、或者它们中的一个或多个的组合。备选地,或附加地,程序指令能够在人工生成的传播信号,例如机器生成的电、光或电磁信号上编码,该信号的生成是为了编码信息以传输到合适的接收器装置供数据处理装置执行。

术语“数据处理装置”指的是数据处理硬件并且包括用于处理数据的所有类型的装置,设备和机器,包括例如可编程处理器,计算机或多个处理器或计算机。该装置还可以或者进一步包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件的代码、协议栈、数据库管理系统、操作系统或其中一个或多个的组合。

计算机程序,也称为程序、软件、软件应用、脚本或代码可以用任何形式的编程语言编写,包括编译或解释语言、声明或过程语言,并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序、对象或适用于计算环境的其他单元。计算机程序可以但不必对应于文件系统中的文件。程序可以存储在保存其他程序或数据,例如,存储在标记语言文档中的一个或多个脚本,的文件的一部分中,存储在专用于所讨论的程序的单个文件中,或存储在多个协调文件中,例如,存储一个或多个模块、子程序或代码部分的文件。可以部署计算机程序以在一个计算机上或在位于一个站点或分布在多个站点上并通过通信网络互连的多个计算机上运行。

本说明书中描述的处理和逻辑流能够由执行一个或多个计算机程序的一个或多个可编程计算机来进行,以通过操作输入数据和生成输出来进行功能。处理和逻辑流也能够由专用逻辑电路,例如FPGA(现场可编程门阵列)、ASIC(专用集成电路)或GPGPU(通用图形处理单元),来执行,并且装置也能够实现为专用逻辑电路。

适合于执行计算机程序的计算机包括,例如,能够基于通用或专用微处理器或者两者,或者任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于施行或执行指令的中央处理单元以及一个或多个用于存储指令和数据的存储设备。中央处理单元和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。通常,计算机也将包括一个或多个用于存储数据的大容量存储设备,例如磁盘、磁光盘或光盘,或与之可操作地耦合以从其接收数据或向其传输数据,或两者。然而,计算机不需要具有这样的设备。此外,计算机可以嵌入在另一个设备中,例如移动电话,个人数字助理(PDA),移动音频或视频播放器,游戏控制台,全球定位系统(GPS)接收器或便携式存储设备,例如,通用串行总线(USB)闪存驱动器,仅举几例。

适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;和CD-ROM和DVD-ROM磁盘。

为了提供与用户的交互,本说明书中描述的主题的实施例可以在具有显示设备和键盘以及指示设备的计算机上实现,显示设备例如CRT(阴极射线管)或LCD(液晶显示器)监视器,用于向用户显示信息,指示设备例如,鼠标或轨迹球,用户可通过该指示设备向计算机提供输入。其他类型的设备也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声学、语音或触觉输入。另外,计算机可以通过向用户使用的设备发送文档和从文档接收文档来与用户交互;例如,通过响应于从web浏览器接收的请求,将网页发送到用户的用户设备上的web浏览器。而且,计算机可以通过向个人设备(例如,运行消息收发应用的智能电话)发送文本消息或其他形式的消息、并且从用户接收响应消息,来与用户交互。

本说明书中描述的主题的实施例可以在包括后端组件的计算系统中实现,该后端组件例如作为数据服务器,或者在包括中间件组件的计算系统中实现,中间件组件例如应用服务器,或者在包括前端组件的计算系统中实现,例如,具有图形用户界面或Web浏览器的用户计算机,用户可通过该浏览器与本说明书中描述的主题的实现进行交互,或者一个或多个这样的后端、中间件或前端组件任何组合。系统的组件可以通过任何形式或介质的数字数据通信互连,例如通信网络。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),例如,因特网。

计算系统可包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系借助于在各个计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。在一些实施例中,服务器将数据,例如,HTML页面发送到用户设备,例如,用于向与用作客户端的设备进行交互的用户显示数据和接收来自该用户的用户输入的目的。可以在服务器从设备接收在用户设备处生成的数据,例如,用户交互的结果。

实施例1是一种用于训练神经网络的专用硬件芯片,专用硬件芯片包括:标量处理器,配置为控制所述专用硬件芯片的计算操作;矢量处理器,配置为具有矢量处理单元的二维阵列,所述矢量处理单元全部以单指令、多数据方式执行相同的指令,并且通过所述矢量处理器的加载和存储指令彼此通信;以及矩阵乘法单元,耦合到所述矢量处理器,所述矩阵乘法单元被配置为将至少一个二维矩阵与另一个一维矢量或二维矩阵相乘,以便获得乘法结果。

实施例2是根据实施例1所述的专用硬件芯片,还包括:向量存储器,被配置为向所述向量处理器提供快速专用存储器。

实施例3是根据实施例1或2所述的专用硬件芯片,还包括:标量存储器,被配置为向所述标量处理器提供快速专用存储器。

实施例4是根据实施例1-3任一项所述的专用硬件芯片,还包括:转置单元,被配置为进行矩阵的转置操作。

实施例5是根据实施例1-4任一项所述的专用硬件芯片,还包括:归约和置换单元,被配置为进行数的归约并且对向量阵列的不同通道之间的数进行置换。

实施例6是根据实施例1-5任一项所述的专用硬件芯片,还包括:高带宽存储器,被配置为存储所述专用硬件芯片的数据。

实施例7是根据实施例1-6任一项所述的专用硬件芯片,还包括:稀疏计算核。

实施例8是根据实施例1-7任一项所述的专用硬件芯片,还包括:接口;以及芯片间互连,用于将所述专用硬件芯片上的所述接口或资源连接到其他专用硬件芯片或资源。

实施例9是根据实施例1-8任一项所述的专用硬件芯片,还包括:多个高带宽存储器;其中,所述芯片间互连将所述接口和所述高带宽存储器连接到其他专用硬件芯片。

实施例10是根据实施例1-9任一项所述的专用硬件芯片,所述接口是主计算机的主机接口。

实施例11是根据实施例1-10任一项所述的专用硬件芯片,所述接口是主计算机的网络的标准网络接口。

虽然本说明书包含许多具体实现细节,但是这些不应被解释为对任何特征或可要求保护的范围的限制,而是作为特定于特定实施例的特征的描述。在本说明书中在分离的实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以分离地或以任何合适的子组合在多个实施例中实现。此外,尽管上面的特征可以描述为以某些组合起作用并且甚至最初如此声明,但是在某些情况下可以从组合中切除来自所要求保护的组合的一个或多个特征,并且所要求保护的组合可以指子组合或子组合的变形。

类似地,尽管在附图中以特定顺序描绘了操作,但是这不应该被理解为需要以所示的特定顺序或按顺序执行这样的操作,或者执行所有示出的操作,以实现期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。此外,上述实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这种分离,并且应该理解,所描述的程序组件和系统通常可以集成在单个软件产品中或打包成多种软件产品。

因此,已经描述了主题的特定实施例。其他实施例在以下权利要求的范围内。例如,权利要求中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或顺序次序来实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。

15页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:在涉及欠佳网络条件的情形下提供内容项的系统和方法

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!