CN116644790A - 专用神经网络训练芯片 - Google Patents
专用神经网络训练芯片 Download PDFInfo
- Publication number
- CN116644790A CN116644790A CN202310655432.5A CN202310655432A CN116644790A CN 116644790 A CN116644790 A CN 116644790A CN 202310655432 A CN202310655432 A CN 202310655432A CN 116644790 A CN116644790 A CN 116644790A
- Authority
- CN
- China
- Prior art keywords
- vector
- matrix
- dimensional
- hardware chip
- activation
- 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.)
- Pending
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 63
- 238000012549 training Methods 0.000 title claims abstract description 30
- 239000013598 vector Substances 0.000 claims abstract description 163
- 239000011159 matrix material Substances 0.000 claims abstract description 114
- 230000004913 activation Effects 0.000 claims abstract description 68
- 238000000034 method Methods 0.000 claims abstract description 32
- 230000015654 memory Effects 0.000 claims description 73
- 238000012545 processing Methods 0.000 claims description 59
- 230000009467 reduction Effects 0.000 claims description 17
- 238000004364 calculation method Methods 0.000 claims description 8
- 230000017105 transposition Effects 0.000 claims description 8
- 230000001105 regulatory effect Effects 0.000 claims 1
- 238000001994 activation Methods 0.000 description 20
- 238000004590 computer program Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 230000009471 action Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- 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
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30141—Implementation provisions of register files, e.g. ports
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/08—Learning methods
-
- 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Nonlinear Science (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Magnetic Resonance Imaging Apparatus (AREA)
- Apparatus For Radiation Diagnosis (AREA)
- Rehabilitation Tools (AREA)
- Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
Abstract
描述了一种使用专用硬件芯片训练神经网络的方法,包括:由专用硬件芯片的矢量处理器接收表示激活输入的多个二维矩阵的数据,每个激活输入的二维矩阵具有特定形状并且包括神经网络的相应网络层的输入激活矩阵的一部分激活输入,由矩阵乘法单元为多个二维矩阵中的每一个生成相应的乘法结果;和基于相应的乘法结果,通过反向传播来更新神经网络的权重值。
Description
相关申请的交叉引用
本申请是申请日为2018年5月17日、申请号为201880018006.8、发明名称为“专用神经网络训练芯片”的发明专利申请的分案申请,其要求2017年5月17日提交的题为“专用神经网络训练芯片”的美国专利申请No.62/507,771的优先权,在此将其全文引入作为参考。
背景技术
本说明书涉及在硬件中执行神经网络计算。神经网络是机器学习模型,每个模型采用一个或多个模型层来为接收的输入生成例如分类的输出。除了输出层之外,一些神经网络还包括一个或多个隐藏层。每个隐藏层的输出用作网络中的下一层(即,网络的下一个隐藏层或输出层)的输入。网络的每个层根据相应参数集的当前值,从接收的输入生成输出。
发明内容
本说明书描述了与专用硬件芯片相关的技术,该专用硬件芯片是针对,特别是训练阶段的机器学习工作负载优化的可编程线性代数加速器。
通常,本说明书中描述的主题的一个创新方面可以体现在专用的硬件芯片中。
该方面的其他实施例包括记录在一个或多个计算机存储设备上的相应计算机系统,装置和计算机程序,每个计算机系统,装置和计算机程序被配置为执行方法的动作。对于要配置为执行特定操作或动作的一个或多个计算机的系统,意味着系统已在其上安装了软件,固件,硬件或它们的组合,在操作中使系统执行操作或动作。对于要配置为执行特定操作或动作的一个或多个计算机程序,意味着一个或多个程序包括当由数据处理装置执行时使装置执行操作或动作的指令。
前述和其他实施方案可以各自任选地包括一个或多个以下特征,单独或组合。特别地,一个实施例包括组合的所有以下特征。
一种用于训练神经网络的专用硬件芯片,专用硬件芯片包括:标量处理器,被配置为控制所述专用硬件芯片的计算操作;矢量处理器,被配置为具有矢量处理单元的二维阵列,所述矢量处理单元全部以单指令、多数据方式执行相同的指令,并且通过所述矢量处理器的加载和存储指令彼此通信;以及矩阵乘法单元,被耦合到所述矢量处理器,所述矩阵乘法单元被配置为将至少一个二维矩阵与另一个一维矢量或二维矩阵相乘,以便获得乘法结果。
矢量存储器,被配置为向所述矢量处理器提供快速专用存储器。标量存储器,被配置为向所述标量处理器提供快速专用存储器。转置单元,被配置为进行矩阵的转置操作。归约和置换单元,被配置为进行数的归约并且对矢量阵列的不同通道之间的数进行置换。高带宽存储器,被配置为存储所述专用硬件芯片的数据。专用硬件芯片还包括稀疏计算核。
专用硬件芯片还包括:接口;以及芯片间互连,用于将所述专用硬件芯片上的所述接口或资源连接到其他专用硬件芯片或资源。
专用硬件芯片还包括高带宽存储器。芯片间互连将所述接口和所述高带宽存储器连接到其他专用硬件芯片。该接口可以是主计算机的主机接口。该接口可以是主计算机网络的标准网络接口。
本说明书中描述的主题可以在特定实施例中实施,以便实现以下优点中的一个或多个。专用硬件芯片包含除了传统的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 BROADCAST OPERATIONS ONLARGE DATASETS 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任一项所述的专用硬件芯片,所述接口是主计算机的网络的标准网络接口。
虽然本说明书包含许多具体实现细节,但是这些不应被解释为对任何特征或可要求保护的范围的限制,而是作为特定于特定实施例的特征的描述。在本说明书中在分离的实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以分离地或以任何合适的子组合在多个实施例中实现。此外,尽管上面的特征可以描述为以某些组合起作用并且甚至最初如此声明,但是在某些情况下可以从组合中切除来自所要求保护的组合的一个或多个特征,并且所要求保护的组合可以指子组合或子组合的变形。
类似地,尽管在附图中以特定顺序描绘了操作,但是这不应该被理解为需要以所示的特定顺序或按顺序执行这样的操作,或者执行所有示出的操作,以实现期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。此外,上述实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这种分离,并且应该理解,所描述的程序组件和系统通常可以集成在单个软件产品中或打包成多种软件产品。
因此,已经描述了主题的特定实施例。其他实施例在以下权利要求的范围内。例如,权利要求中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或顺序次序来实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
Claims (38)
1.一种使用专用硬件芯片训练神经网络的方法,其特征在于,所述方法包括:
由所述专用硬件芯片的矢量处理器接收表示激活输入的多个二维矩阵的数据,每个激活输入的二维矩阵具有特定形状并且包括神经网络的相应网络层的输入激活矩阵的一部分激活输入,其中所述矢量处理器包括:
以二维结构设置的多个矢量处理单元,其中,所述二维结构包括多个通道和用于所述多个通道中的每个通道的多个子通道,位于所述多个子通道中的每个子通道中的相应矢量处理单元;以及
一个或多个矢量寄存器,每个所述矢量寄存器被配置为存储所述激活输入的多个二维矩阵中的一个;
由矩阵乘法单元为所述多个二维矩阵中的每一个生成相应的乘法结果,包括:
在多个时钟周期的每个时钟周期中,将所述激活输入的二维矩阵中的所述激活输入的相应行的至少一部分加载到所述专用硬件芯片的所述矩阵乘法单元中,其中所述激活输入的二位矩阵存储在一个或多个所述矢量寄存器中的对应矢量寄存器中;
在所述多个时钟周期的最后一个时钟周期结束之前,将权重值的二维矩阵加载到所述矩阵乘法单元中,其中所述权重值的二维矩阵中的所述权重值对应于所述激活输入的二维矩阵中的所述激活输入;和
由所述矩阵乘法单元将所述激活输入的二维矩阵和所述权重值的二维矩阵相乘,以获得相应的乘法结果;和
基于所述相应的乘法结果,通过反向传播来更新神经网络的所述权重值。
2.根据权利要求1所述的方法,其特征在于,将所述激活输入的二维矩阵中的所述激活输入的相应行的至少一部分加载到所述矩阵乘法单元,还包括:至少将所述激活输入的相应行的部分从第一浮点格式转换为具有比第一浮点格式更小的比特数的第二浮点格式。
3.根据权利要求1所述的方法,其特征在于,还包括:将相应的乘法结果存储在所述一个或多个矢量寄存器中的矢量寄存器中。
4.根据权利要求1所述的方法,其特征在于,所述相应的乘法结果是二维矩阵,其中,存储所述相应的乘法结果包括:
在另一组时钟周期中的每个时钟周期内,将所述相应的乘法结果的相应行的值临时存储到所述一个或多个矢量寄存器之一中的先进先出队列中。
5.根据权利要求1所述的方法,其特征在于,进一步包括:
由所述矢量处理器从所述专用硬件芯片的矢量存储器中接收表示所述激活输入的多个二维矩阵的数据,所述矢量存储器被配置为向所述矢量处理器提供快速专用存储器。
6.根据权利要求1所述的方法,其特征在于,进一步包括:
通过所述专用硬件芯片的转置单元执行所述激活输入的二维矩阵或所述权值的二维矩阵的转置操作。
7.根据权利要求1所述的方法,其特征在于,进一步包括:
由所述专用硬件芯片的规约单元对所述相应的乘法结果的数量进行规约,以及
通过所述专用硬件芯片的排列单元,在所述多个矢量处理单元中的矢量处理单元的不同通道中排列所述数量。
8.根据权利要求1所述的方法,其特征在于,进一步包括:
将各个乘法结果存储到所述专用硬件芯片的高带宽存储器中。
9.根据权利要求1所述的方法,其特征在于,进一步包括:
通过所述专用硬件芯片的稀疏计算核心使用预先构建的查找表将稀疏的高维数据映射为密集的低维数据。
10.根据权利要求1所述的方法,其特征在于,进一步包括:
使用所述专用硬件芯片的芯片间互连来将所述专用硬件芯片的接口或资源连接到其他专用硬件芯片或资源。
11.根据权利要求10所述的方法,其特征在于,所述芯片间互连将所述专用硬件芯片的所述接口和高带宽存储器连接到其他专用硬件芯片。
12.根据权利要求10所述的方法,其特征在于,所述接口是到主机计算机的主机接口,或者到主机计算机网络的标准网络接口。
13.根据权利要求1所述的方法,其特征在于,所述一个或多个矢量寄存器包括32个矢量寄存器。
14.根据权利要求1所述的方法,其中所述多个矢量处理单元中的每个矢量处理单元被配置为在每个时钟周期中执行两个相应的算术逻辑单元ALU的指令、相应的加载指令和相应的存储指令。
15.根据权利要求14所述的方法,其特征在于,所述多个矢量处理单元中的每个矢量处理单元被配置为计算用于在每个时钟周期中执行所述相应的加载指令和所述存储指令所需的相应的存储器偏移地址。
16.根据权利要求1所述的方法,其特征在于,位于同一通道中的所述多个矢量处理单元中的矢量处理单元被配置为通过相应的加载和存储指令彼此通信。
17.一种系统,其特征在于,包括一个或多个计算机和一个或多个存储设备,在所述存储设备上存储可执行的指令,当所述指令由所述一个或多个计算机执行时,使得所述一个或多个计算机通过专用硬件芯片来执行训练神经网络的操作,所述操作包括:
由所述专用硬件芯片的矢量处理器接收表示激活输入的多个二维矩阵的数据,每个激活输入的二维矩阵具有特定形状并且包括神经网络的相应网络层的输入激活矩阵的一部分激活输入,其中所述矢量处理器包括:
以二维结构设置的多个矢量处理单元,其中,所述二维结构包括多个通道和用于所述多个通道中的每个通道的多个子通道,位于所述多个子通道中的每个子通道中的相应矢量处理单元;以及
一个或多个矢量寄存器,每个所述矢量寄存器被配置为存储所述激活输入的多个二维矩阵中的一个;
由矩阵乘法单元为所述多个二维矩阵中的每一个生成相应的乘法结果,包括:
在多个时钟周期的每个时钟周期中,将所述激活输入的二维矩阵中的所述激活输入的相应行的至少一部分加载到所述专用硬件芯片的所述矩阵乘法单元中,其中所述激活输入的二位矩阵存储在一个或多个所述矢量寄存器中的对应矢量寄存器中;
在所述多个时钟周期的最后一个时钟周期结束之前,将权重值的二维矩阵加载到所述矩阵乘法单元中,其中所述权重值的二维矩阵中的所述权重值对应于所述激活输入的二维矩阵中的所述激活输入;和
由所述矩阵乘法单元将所述激活输入的二维矩阵和所述权重值的二维矩阵相乘,以获得相应的乘法结果;和
基于所述相应的乘法结果,通过反向传播来更新神经网络的所述权重值。
18.根据权利要求17所述的系统,其特征在于,将所述激活输入的二维矩阵中的所述激活输入的相应行的至少一部分加载到所述矩阵乘法单元,还包括:至少将所述激活输入的相应行的部分从第一浮点格式转换为具有比第一浮点格式更小的比特数的第二浮点格式。
19.存储有指令的一个或多个非暂时性计算机可读存储介质,其特征在于,所述指令在由一个或多个计算机执行时,使得所述一个或多个计算机通过专用硬件芯片来执行训练神经网络的操作,所述操作包括:
由所述专用硬件芯片的矢量处理器接收表示激活输入的多个二维矩阵的数据,每个激活输入的二维矩阵具有特定形状并且包括神经网络的相应网络层的输入激活矩阵的一部分激活输入,其中所述矢量处理器包括:
以二维结构设置的多个矢量处理单元,其中,所述二维结构包括多个通道和用于所述多个通道中的每个通道的多个子通道,位于所述多个子通道中的每个子通道中的相应矢量处理单元;以及
一个或多个矢量寄存器,每个所述矢量寄存器被配置为存储所述激活输入的多个二维矩阵中的一个;
由矩阵乘法单元为所述多个二维矩阵中的每一个生成相应的乘法结果,包括:
在多个时钟周期的每个时钟周期中,将所述激活输入的二维矩阵中的所述激活输入的相应行的至少一部分加载到所述专用硬件芯片的所述矩阵乘法单元中,其中所述激活输入的二位矩阵存储在一个或多个所述矢量寄存器中的对应矢量寄存器中;
在所述多个时钟周期的最后一个时钟周期结束之前,将权重值的二维矩阵加载到所述矩阵乘法单元中,其中所述权重值的二维矩阵中的所述权重值对应于所述激活输入的二维矩阵中的所述激活输入;和
由所述矩阵乘法单元将所述激活输入的二维矩阵和所述权重值的二维矩阵相乘,以获得相应的乘法结果;和
基于所述相应的乘法结果,通过反向传播来更新神经网络的所述权重值。
20.根据权利要求19所述的一个或多个非暂时性计算机可读存储介质,其特征在于,将所述激活输入的二维矩阵中的所述激活输入的相应行的至少一部分加载到所述矩阵乘法单元还包括至少将所述激活输入的相应行的部分从第一浮点格式转换为具有比第一浮点格式更小的比特数的第二浮点格式。
21.一种用于训练神经网络的专用硬件芯片,所述专用硬件芯片包括:
标量处理器,所述标量处理器被配置为控制所述专用硬件芯片的计算操作;
矢量处理器,所述矢量处理器具有矢量处理单元的二维阵列;和
矩阵乘法单元,所述矩阵乘法单元耦合到所述矢量处理器并且被配置为将至少第一二维矩阵与第一一维矢量或第二二维矩阵相乘以获得乘法结果。
22.根据权利要求21所述的专用硬件芯片,还包括:
矢量存储器,被配置为向所述矢量处理器提供快速专用存储器。
23.根据权利要求21所述的专用硬件芯片,还包括:
标量存储器,所述标量存储器被配置为向所述标量处理器提供快速专用存储器。
24.根据权利要求21所述的专用硬件芯片,还包括:
转置单元,被配置为执行矩阵的转置运算。
25.根据权利要求21所述的专用硬件芯片,还包括:
规约和排列单元,被配置为对数量执行规约并在矢量阵列的不同通道之间排列所述数量。
26.根据权利要求21所述的专用硬件芯片,还包括:
高带宽存储器,被配置为存储所述专用硬件芯片的数据。
27.根据权利要求21所述的专用硬件芯片,还包括稀疏计算核心。
28.根据权利要求21所述的专用硬件芯片,还包括:
接口;和
芯片间互连,将专用硬件芯片上的接口或资源连接到其他专用硬件芯片或资源。
29.根据权利要求28所述的专用硬件芯片,还包括:高带宽存储器;其中所述芯片间互连将所述接口和所述高带宽存储器连接到其他专用硬件芯片。
30.根据权利要求28所述的专用硬件芯片,其中所述接口是到主机计算机的主机接口。
31.根据权利要求28所述的专用硬件芯片,其中,所述接口是到主机计算机网络的标准网络接口。
32.根据权利要求28所述的专用硬件芯片,还包括标量存储器和矢量存储器。
33.根据权利要求28所述的专用硬件芯片,其中,所述指令的标量指令集包括在地址计算、加载/存储指令和分支指令中使用的算术运算,并且其中所述指令中的剩余指令对所述矢量处理器和所述矩阵乘法单元的指令进行编码。
34.根据权利要求28所述的专用硬件芯片,其中,所述矢量处理单元的二维阵列中的每个矢量处理单元包括32个寄存器。
35.根据权利要求28所述的专用硬件芯片,其中,所述矢量处理单元的二维阵列中的每个矢量处理单元被配置为执行浮点运算或整数运算中的至少一个。
36.根据权利要求28所述的专用硬件芯片,其中,所述矢量处理单元的二维阵列中的每个矢量处理单元被配置为在每个时钟周期中执行两个相应的算术逻辑单元ALU指令、相应的加载指令和相应的存储指令。
37.根据权利要求36所述的专用硬件芯片,其中所述矢量处理单元的二维阵列中的每一矢量处理单元经配置以计算用于在每一时钟周期中执行所述相应加载及存储指令的相应偏移存储器地址。
38.根据权利要求21所述的专用硬件芯片,其中所述矢量处理器包括多个通道;其中所述矢量处理器中的矢量处理单元的二维阵列的每个矢量处理单元位于所述多个通道中的相应通道中;其中位于同一通道中的矢量处理单元的二维阵列的一个或多个矢量处理单元被配置为通过各自的加载和存储指令彼此通信。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762507771P | 2017-05-17 | 2017-05-17 | |
US62/507,771 | 2017-05-17 | ||
CN201880018006.8A CN110622134B (zh) | 2017-05-17 | 2018-05-17 | 专用神经网络训练芯片 |
PCT/US2018/033215 WO2018213598A1 (en) | 2017-05-17 | 2018-05-17 | Special purpose neural network training chip |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880018006.8A Division CN110622134B (zh) | 2017-05-17 | 2018-05-17 | 专用神经网络训练芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116644790A true CN116644790A (zh) | 2023-08-25 |
Family
ID=62784215
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310655432.5A Pending CN116644790A (zh) | 2017-05-17 | 2018-05-17 | 专用神经网络训练芯片 |
CN201880018006.8A Active CN110622134B (zh) | 2017-05-17 | 2018-05-17 | 专用神经网络训练芯片 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880018006.8A Active CN110622134B (zh) | 2017-05-17 | 2018-05-17 | 专用神经网络训练芯片 |
Country Status (9)
Country | Link |
---|---|
US (2) | US11275992B2 (zh) |
EP (3) | EP3568756B1 (zh) |
JP (3) | JP6938661B2 (zh) |
KR (4) | KR20240056801A (zh) |
CN (2) | CN116644790A (zh) |
DK (2) | DK3568756T3 (zh) |
FI (1) | FI4083789T3 (zh) |
TW (3) | TWI769810B (zh) |
WO (1) | WO2018213598A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118227948A (zh) * | 2024-05-24 | 2024-06-21 | 北京壁仞科技开发有限公司 | 人工智能芯片、操作方法和机器可读存储介质 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10853070B1 (en) * | 2017-10-23 | 2020-12-01 | Habana Labs Ltd. | Processor suspension buffer and instruction queue |
US11645358B2 (en) * | 2019-01-29 | 2023-05-09 | Hewlett Packard Enterprise Development Lp | Generation of executable files corresponding to neural network models |
US10997116B2 (en) * | 2019-08-06 | 2021-05-04 | Microsoft Technology Licensing, Llc | Tensor-based hardware accelerator including a scalar-processing unit |
KR102496734B1 (ko) * | 2019-10-22 | 2023-02-06 | 에스앤즈 주식회사 | 분산환경 패킷 전송 기반의 스트리밍 데이터 딥러닝 처리 가속화 시스템 및 이를 이용한 멀티 로케이션 멀티 스트리밍 이상상태 탐지 시스템 |
CN111047036B (zh) * | 2019-12-09 | 2023-11-14 | Oppo广东移动通信有限公司 | 神经网络处理器、芯片和电子设备 |
US11054998B1 (en) * | 2019-12-12 | 2021-07-06 | Facebook, Inc. | High bandwidth memory system with distributed request broadcasting masters |
US11755683B2 (en) | 2019-12-23 | 2023-09-12 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors (FAST) in machine learning |
US11462003B2 (en) | 2020-03-25 | 2022-10-04 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors in convolutional neural networks |
US11797830B2 (en) | 2020-03-25 | 2023-10-24 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors in convolutional neural networks |
US12073310B2 (en) * | 2020-04-01 | 2024-08-27 | Microsoft Technology Licensing, Llc | Deep neural network accelerator with independent datapaths for simultaneous processing of different classes of operations |
CN113867788A (zh) * | 2020-06-30 | 2021-12-31 | 上海寒武纪信息科技有限公司 | 一种计算装置、芯片、板卡、电子设备和计算方法 |
CN112148453A (zh) * | 2020-09-29 | 2020-12-29 | 深圳致星科技有限公司 | 用于隐私计算的计算芯片及网络计算系统 |
CN112416433B (zh) * | 2020-11-24 | 2023-01-17 | 中科寒武纪科技股份有限公司 | 一种数据处理装置、数据处理方法及相关产品 |
EP4012623A1 (en) * | 2020-12-10 | 2022-06-15 | Toyota Jidosha Kabushiki Kaisha | Efficient and stable training of a neural network in compressed form |
WO2022133623A1 (en) * | 2020-12-24 | 2022-06-30 | Intel Corporation | Accelerated scale-out performance of deep learning training workload with embedding tables |
CN112860318A (zh) * | 2021-01-29 | 2021-05-28 | 成都商汤科技有限公司 | 一种数据传输方法、芯片、设备和存储介质 |
EP4315089A1 (en) | 2021-03-29 | 2024-02-07 | Google LLC | On-chip interconnect for memory channel controllers |
US11782871B2 (en) | 2021-04-27 | 2023-10-10 | Microchip Technology Inc. | Method and apparatus for desynchronizing execution in a vector processor |
TWI808000B (zh) * | 2022-09-20 | 2023-07-01 | 創鑫智慧股份有限公司 | 矩陣裝置及其操作方法 |
CN115713103B (zh) * | 2022-11-24 | 2023-08-18 | 辉羲智能科技(上海)有限公司 | 片上-片间互连的神经网络芯片联合性能预测方法及系统 |
TWI830669B (zh) * | 2023-02-22 | 2024-01-21 | 旺宏電子股份有限公司 | 編碼方法及編碼電路 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5841071B2 (ja) | 1981-10-13 | 1983-09-09 | 東北電子産業株式会社 | 生体誘導加熱装置 |
JPH04290155A (ja) * | 1991-03-19 | 1992-10-14 | Fujitsu Ltd | 並列データ処理方式 |
CA2040903C (en) | 1991-04-22 | 2003-10-07 | John G. Sutherland | Neural networks |
US5872988A (en) * | 1992-06-17 | 1999-02-16 | U.S. Philips Corporation | Parallel data processing device having a concatenated data path between elementary processors |
US5423051A (en) * | 1992-09-24 | 1995-06-06 | International Business Machines Corporation | Execution unit with an integrated vector operation capability |
WO2002084451A2 (en) * | 2001-02-06 | 2002-10-24 | Victor Demjanenko | Vector processor architecture and methods performed therein |
US7305540B1 (en) | 2001-12-31 | 2007-12-04 | Apple Inc. | Method and apparatus for data processing |
US7219085B2 (en) | 2003-12-09 | 2007-05-15 | Microsoft Corporation | System and method for accelerating and optimizing the processing of machine learning techniques using a graphics processing unit |
US8396582B2 (en) * | 2008-03-08 | 2013-03-12 | Tokyo Electron Limited | Method and apparatus for self-learning and self-improving a semiconductor manufacturing tool |
US20140164733A1 (en) | 2011-12-30 | 2014-06-12 | Ashish Jha | Transpose instruction |
US9785565B2 (en) * | 2014-06-30 | 2017-10-10 | Microunity Systems Engineering, Inc. | System and methods for expandably wide processor instructions |
US9589443B2 (en) | 2014-09-02 | 2017-03-07 | At&T Intellectual Property I, L.P. | Method and apparatus for providing an emergency notification for an allergic reaction |
KR102277439B1 (ko) * | 2014-10-21 | 2021-07-14 | 삼성전자주식회사 | 재구성 가능 프로세서 및 그 동작 방법 |
US9772852B2 (en) | 2015-04-23 | 2017-09-26 | Google Inc. | Energy efficient processor core architecture for image processor |
US9965824B2 (en) | 2015-04-23 | 2018-05-08 | Google Llc | Architecture for high performance, power efficient, programmable image processing |
US9747546B2 (en) | 2015-05-21 | 2017-08-29 | Google Inc. | Neural network processor |
US10192162B2 (en) | 2015-05-21 | 2019-01-29 | Google Llc | Vector computation unit in a neural network processor |
US20160378465A1 (en) * | 2015-06-23 | 2016-12-29 | Intel Corporation | Efficient sparse array handling in a processor |
GB2543554B (en) | 2015-10-22 | 2019-01-23 | Advanced Risc Mach Ltd | Handling exceptional conditions for vector arithmetic instruction |
US9904874B2 (en) * | 2015-11-05 | 2018-02-27 | Microsoft Technology Licensing, Llc | Hardware-efficient deep convolutional neural networks |
US9898441B2 (en) | 2016-02-05 | 2018-02-20 | Google Llc | Matrix processing apparatus |
CN107615389B (zh) * | 2016-02-25 | 2021-04-13 | 慧与发展有限责任合伙企业 | 忆阻乘法器件、用于复数乘法累加运算的方法及忆阻阵列 |
PL3812900T3 (pl) * | 2016-12-31 | 2024-04-08 | Intel Corporation | Systemy, sposoby i aparaty do obliczania heterogenicznego |
-
2018
- 2018-05-17 US US15/983,056 patent/US11275992B2/en active Active
- 2018-05-17 KR KR1020247013765A patent/KR20240056801A/ko active Application Filing
- 2018-05-17 EP EP18735433.7A patent/EP3568756B1/en active Active
- 2018-05-17 TW TW110117076A patent/TWI769810B/zh active
- 2018-05-17 KR KR1020217031994A patent/KR102481428B1/ko active IP Right Grant
- 2018-05-17 DK DK18735433.7T patent/DK3568756T3/da active
- 2018-05-17 KR KR1020227045015A patent/KR102661910B1/ko active IP Right Grant
- 2018-05-17 FI FIEP22171943.8T patent/FI4083789T3/fi active
- 2018-05-17 EP EP24163748.7A patent/EP4361832A3/en active Pending
- 2018-05-17 TW TW107116869A patent/TWI728247B/zh active
- 2018-05-17 EP EP22171943.8A patent/EP4083789B1/en active Active
- 2018-05-17 TW TW111120440A patent/TWI812254B/zh active
- 2018-05-17 CN CN202310655432.5A patent/CN116644790A/zh active Pending
- 2018-05-17 CN CN201880018006.8A patent/CN110622134B/zh active Active
- 2018-05-17 DK DK22171943.8T patent/DK4083789T3/da active
- 2018-05-17 JP JP2019549507A patent/JP6938661B2/ja active Active
- 2018-05-17 KR KR1020197026557A patent/KR102312264B1/ko active IP Right Grant
- 2018-05-17 WO PCT/US2018/033215 patent/WO2018213598A1/en unknown
-
2021
- 2021-09-01 JP JP2021142529A patent/JP7314217B2/ja active Active
-
2022
- 2022-03-14 US US17/694,598 patent/US20220261622A1/en active Pending
-
2023
- 2023-07-12 JP JP2023114361A patent/JP7561925B2/ja active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118227948A (zh) * | 2024-05-24 | 2024-06-21 | 北京壁仞科技开发有限公司 | 人工智能芯片、操作方法和机器可读存储介质 |
CN118227948B (zh) * | 2024-05-24 | 2024-08-06 | 北京壁仞科技开发有限公司 | 人工智能芯片、操作方法和机器可读存储介质 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110622134B (zh) | 专用神经网络训练芯片 | |
US10831862B2 (en) | Performing matrix multiplication in hardware | |
CN109997132B (zh) | 低时延矩阵乘法部件 | |
TWI857742B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40097458 Country of ref document: HK |