CN108009626B - 利用神经网络计算单元中的输入数据稀疏 - Google Patents
利用神经网络计算单元中的输入数据稀疏 Download PDFInfo
- Publication number
- CN108009626B CN108009626B CN201710908258.5A CN201710908258A CN108009626B CN 108009626 B CN108009626 B CN 108009626B CN 201710908258 A CN201710908258 A CN 201710908258A CN 108009626 B CN108009626 B CN 108009626B
- Authority
- CN
- China
- Prior art keywords
- input
- activation
- input activation
- zero
- controller
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 39
- 230000004913 activation Effects 0.000 claims abstract description 294
- 238000001994 activation Methods 0.000 claims abstract description 294
- 230000015654 memory Effects 0.000 claims abstract description 154
- 238000000034 method Methods 0.000 claims abstract description 42
- 238000012545 processing Methods 0.000 claims description 30
- 238000004364 calculation method Methods 0.000 claims description 25
- 230000004044 response Effects 0.000 claims description 15
- 238000013507 mapping Methods 0.000 claims description 6
- 239000011159 matrix material Substances 0.000 description 20
- 230000008569 process Effects 0.000 description 11
- 230000000903 blocking effect Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 6
- 238000010801 machine learning Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000013527 convolutional neural network Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000005291 magnetic effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 240000005561 Musa balbisiana Species 0.000 description 1
- 235000018290 Musa x paradisiaca Nutrition 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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
-
- 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/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- 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
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- 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/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/10—Machine learning using kernel methods, e.g. support vector machines [SVM]
-
- 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/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
- 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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- 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)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Image Analysis (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Storage Device Security (AREA)
Abstract
本申请涉及利用神经网络计算单元中的输入数据稀疏。一种计算机实现的方法包括由计算设备接收输入激活并且由所述计算设备的控制器确定每个输入激活具有零值还是非零值。所述方法进一步包括在所述计算设备的存储器组中存储至少一个输入激活。存储至少一个输入激活包括生成索引,所述索引包括一个或多个存储器地址位置,该存储器地址位置具有非零值的输入激活值。所述方法仍进一步包括由控制器从存储器组提供至少一个输入激活到数据总线上,所述数据总线可由计算阵列的一个或多个单元来访问。激活至少部分从与索引相关联的存储器地址位置提供。
Description
技术领域
本申请涉及利用神经网络计算单元中的输入数据稀疏。
背景技术
本说明书涉及使用专用计算单元执行机器学习计算。
神经网络是利用模型的一个或多个层来生成对于接收到的输入的例如分类的输出的机器学习模型。一些神经网络除了输出层之外还包括一个或多个隐藏层。每个隐藏层的输出被用作对网络中下一层的输入,即网络的下一隐藏层或输出层。网络的每一层根据相应的参数集的当前值从接收到输入生成输出。
一些神经网络包括一个或多个卷积神经网络层。每个卷积神经网络层具有相关联的内核集。每个内核包括由用户创建的神经网络模型所建立的值。在一些实现中,内核识别特定图像轮廓、形状或颜色。内核可以被表示为权重输入的矩阵结构。每个卷积层还可以处理激活输入集。所述激活输入集也可以被表示为矩阵结构。
发明内容
计算卷积计算的一种方式需要在大维度空间中的许多矩阵乘法。计算单元的处理器或控制器设备可以通过强力法计算矩阵乘法。例如,尽管计算密集且时间密集,处理器可以为卷积计算重复地计算各自的和与积。处理器并行化计算的程度由于其架构而受限。
本说明书中所述的主题的创新方面可以体现在一种计算机实现的方法。所述方法包括由计算设备接收多个输入激活,所述多个输入激活的至少部分从所述计算设备外部的源提供,以及由所述计算设备的控制器确定所述多个输入激活中的每个是否具有零值或非零值之一。所述方法进一步包括在所述计算设备的存储器组中存储至少一个所述输入激活,其中,存储至少一个所述输入激活包括由所述控制器生成索引,所述索引包括一个或多个存储器地址位置,该存储器地址位置具有非零值的输入激活值。所述方法还进一步包括由所述控制器从所述存储器组提供至少一个输入激活到数据总线上,所述数据总线能够由计算阵列的一个或多个单元访问,其中,所述激活至少部分从与所述索引相关联的存储器地址位置提供。
在一些实现中,所述索引基于包括多个位的位图来创建,其中,所述位图的每个位指示非零输入激活值或零输入激活值中的至少一个。在一些实现中,所述方法进一步包括,提供具有非零值的第一输入激活以由至少一个单元使用所述非零值执行计算,并且随后提供具有零值的第二输入激活,以及在至少一个单元中阻止否则将使用所述零值来执行的计算。
在一些实现中,响应于所述控制器确定所述输入激活从不与所述索引相关联的存储器地址位置提供而发生阻止。在一些实现中,所述方法进一步包括,由所述控制器检测所述输入激活从不与所述索引相关联的存储器地址位置提供,以及响应于检测,提供控制信号给所述计算阵列的至少一个单元以阻止与所述零输入激活值相关联的乘法操作。
在一些实现中,所述方法进一步包括,由所述控制器向第一单元映射使用第一输入激活的张量计算的第一部分以及向与所述第一单元不同的第二单元映射也使用所述第一输入激活的所述张量计算的第二部分。在一些实现中,所述方法进一步包括,顺序地提供单个输入激活到所述数据总线上,所述单个输入激活从与所述索引相关联的存储器地址位置访问和选择。在一些实现中,提供进一步包括,不提供具有零值的输入激活。
本说明书中所述的主题的另一创新方面可以体现为存储指令的一个或多个机器可读存储设备,所述指令能够由一个或多个处理设备执行以执行操作,所述操作包括:由计算设备接收多个输入激活,所述多个输入激活的至少部分从所述计算设备外部的源提供,以及由所述计算设备的控制器确定所述多个输入激活中的每个是否具有零值或非零值之一。所述操作进一步包括在所述计算设备的存储器组中存储至少一个所述输入激活,其中,存储至少一个所述输入激活包括由所述控制器生成索引,所述索引包括一个或多个存储器地址位置,该存储器地址位置具有非零值的输入激活值。所述操作还进一步包括由所述控制器从所述存储器组提供至少一个输入激活到数据总线上,所述数据总线能够由计算阵列的一个或多个单元访问,其中,所述激活至少部分从与所述索引相关联的存储器地址位置提供。
本说明书中所述的主题的另一创新方面可以体现为一种电子系统,包括:置于计算设备中的控制器,所述控制器包括一个或多个处理设备;以及用于存储指令的一个或多个机器可读存储设备,所述指令能够由所述一个或多个处理设备执行以执行操作,所述操作包括:由所述计算设备接收多个输入激活,所述输入激活至少部分从所述计算设备外部的源提供;以及由所述控制器确定所述多个输入激活中每个是否具有零值或非零值之一。所述操作进一步包括,在所述计算设备的存储器组中存储至少一个所述输入激活,其中,存储至少一个所述输入激活包括由所述控制器生成索引,所述索引包括一个或多个存储器地址位置,该存储器地址位置具有非零值的输入激活值。所述操作还进一步包括,由所述控制器从所述存储器组提供至少一个输入激活到数据总线上,所述数据总线能够由计算阵列的一个或多个单元访问,其中,所述激活至少部分从与所述索引相关联的存储器地址位置提供。
本说明书中所述的主题可以在特定实施例中实现,从而实现下面一个或多个优点。在单个计算系统中,可从第一存储器访问的激活和可从第二存储器访问的权重可以基于从寄存器中检索到的存储器地址值而遍历。计算系统的控制器可以通过只在第一存储器中存储非零值而压缩激活数据,由此节省了存储空间及对应带宽。在计算系统至少部分基于主要提供非零输入激活而发生矩阵乘法。而且,当计算系统使用主要包括非零激活值的通信方案时,通过用零来消除乘法,计算效率可以提高或加速。
本方面及其他方面的其他实现包括对应系统、装置和计算机程序,所述计算机程序被配置为执行所述方法的动作,所述计算机程序被编码在计算机存储设备上。一个或多个计算机的系统可以利用安装在系统上且在操作中使得系统执行动作的软件、固件、硬件或它们的组合来进行这样的配置。一个或多个计算机程序可以通过利用具有当被数据处理装置执行时使得装置执行动作的指令而进行这样的配置。
本说明书中所述的主题还涉及图像识别和/或分类方法/系统。当硬件计算系统的计算单元处理对于神经网络层的输入以执行推理计算时,可以使用所公开的用于利用输入数据稀疏的技术来实现系统。
本说明书中所述的主题的一个或多个实现的细节在附图和下面的描述中阐述。通过说明书、附图和权利要求书,主题的其他潜在特征、方面和优点将变得显然。
附图说明
图1图示说明包括激活和参数的示例计算结构。
图2图示说明包括输出深度大于一的激活和多个参数结构的示例计算结构。
图3图示说明用于馈送输入激活到一个或多个参数的示例计算系统。
图4图示说明包括提供输入激活给一个或多个乘法累加(MAC)运算器的存储器单元的示例架构。
图5是用于降低参数计算以及利用输入数据稀疏的过程的示例流程图。
各个附图中的相同的附图标记和名称指示相同的元素。
具体实施方式
本说明书中所述的主题涉及降低在示例神经网络硬件计算系统的计算单元或模组(tile)内发生的计算。通常,作为计算神经网络推理的一部分,输入激活与参数或权重值相乘以产生输出激活。这里,输入和输入激活可以指包括在诸如张量、矩阵和/或数据阵列的在神经网络中公共使用的多维数据结构中的数据元素。由于用于深度神经网络的计算推理的算法属性,大部分的输入激活是零。换句话说,当前计算单元执行大量不必要的计算,包括一个数(例如权重)乘零(输入激活值)。
本说明书部分地描述了更有效的激活存储和通信方案以及用于深度神经网络处理的定制架构设计,尤其用于处理神经网络的卷积层。不像随着时间执行稠密矩阵乘法的常规硬件加速器,本说明书描述可以实现以下动作的架构:1)在看到零输入值时跳过或绕过计算;以及2)通过存储只包括非零值的压缩的输入激活而降低计算单元中的存储器使用。整体上,通过本说明书的教导,用于神经网络推理计算的计算单元性能得到改善且通过跳过不必要的计算而使得能量节省得以实现。
图1图示说明包括激活结构102和参数结构104的示例计算结构100。激活结构102可以包括第一数据结构102a,包括对应于第一输入深度(标为下标0)的多个数据元素。类似地,激活结构102还可以包括第二数据结构102b,包括对应于第二输入深度(标为下标1)的多个数据元素。数据结构102a和102b中所示的多个数据元素被分别指示为a0,b0,c0,d0和a1,b1,c1,d1。数据结构102a/b的每个数据元素(a0,a1,b0,b1,c0,d0等等)是输入激活值且每个输入深度对应于输入到神经网络层的深度。在一些实现中,神经网络层可以具有为一的输入深度,而在其他实现中,神经网络层可以具有的大于一的输入深度。
参数结构104可以以类似方式被描述为激活结构102。参数结构104包括第一数据结构104a和第二数据结构104b。每个数据结构104a/b可以包括多个数据元素,其中每个都包含内核值。如图1中所示,对应于数据结构104a和104b的多个数据元素被分别指示为x0,y0,z0和x1,y1,z1。
如上所讨论的,神经网络的每一层根据相应的操作数集的值从接收到的输入生成输出。如同其他神经网络层,每个卷积层可以处理可以表示为矩阵结构的激活输入集。卷积神经网络层也将具有相关联的包括值的内核集,且内核也可以被表示为权重的矩阵结构。在图1中,激活结构102可以对应于具有一个或多个激活输入的矩阵结构且参数结构104可以对应于具有一个或多个内核或权重参数的矩阵结构。
如下更详细所述,神经网络的各个层通过执行包括矩阵乘法的大量计算来处理机器学习推理。在神经网络层(例如卷积层)内执行的计算过程可以包括在一个或多个周期上输入激活(即第一操作数)乘以权重(即第二操作数)且在许多周期上执行乘积的累加。基于对这两个操作数执行的乘法和累加操作而生成输出激活。
如所示,等式106提供示例基于级数序列的数学运算,其可以在与激活结构102的特定数据元素相关联的输入激活乘以与参数结构104的特定数据元素相关联的内核值或权重/参数时执行。例如,在等式106中,当索引“i”等于0时,与激活结构102的数据元素a0相关联的输入激活乘以与参数结构104的数据元素x0相关联的权重/参数。而且,因为等式106部分是基于级数的等式,附加的乘法运算将发生在对应于激活结构102和参数结构104的其他数据元素的操作数集之间。在一些实现中,操作数集的乘法可以产生用于特定输入特征或激活的部分和106a/b。因此,如等式106中所示,部分和可以被添加以产生输出特征。
神经网络可以体现为一个或多个硬件计算系统,其包括被配置为加速网络层的机器学习推理工总量的多个计算单元。每个计算单元可以处理用于给定层的计算子集。在一些实现中,结构100可以体现为一个或多个计算单元,每个包括至少两个存储器,以及一个或多个乘法累加(MAC)cell,其可以统合形成MAC阵列(下面描述)。
在一个示例中,示例计算单元的第一存储器组108存储与激活结构102相关联的数据并且可以被配置为接收和写入输入激活值到存储器组108内的存储器地址位置。类似地,示例计算单元的第二存储器组110存储与参数结构104相关联的数据并且可以被配置为接收和写入权重值到存储器组110内的存储器地址位置。在这个示例中,数据元素102a中的每个元素(例如a0,b0,c0,d0)可以存储在第一存储器组108的相应的存储器地址处。类似地,数据元素104a的每个元素(例如x0,y0,z0)可以存储在第二存储器110的相应的存储器地址。
在一些实现中,第一存储器组108和第二存储器组110每个都是易失性存储器单元。在一些其他实现中,存储器组108和存储器组110每个都是非易失性存储器单元。存储器组108、110还可以是另一形式的计算机可读存储介质,诸如软盘设备、硬盘设备、光盘设备或磁带设备、闪速存储器或其他类似固态存储器设备、或者设备阵列,包括在存储区域网络或其他配置中的设备。
通常,硬件计算系统的计算单元可以包括一个或多个寄存器来保持跟踪存储器地址值。对应于激活结构102的矩阵结构的数据元素可以从第一存储器组108访问而对应于参数结构104的矩阵结构的数据元素可以从第二存储器组110访问。计算模组/计算单元的示例控制设备可以基于从这一个或多个寄存器访问得到的地址值而访问和/或遍历矩阵结构的数据元素。包括示例控制设备、激活结构102、参数结构104、第一存储器组108和第二存储器组110的示例计算单元/模组在下面结合图3中被更详细描述。
而且,关于用于加速神经网络张量计算和用于神经网络推理工作量的矩阵乘法的硬件计算系统的附加细节和描述在2016年10月27日提交的题为“Neural Network ComputeTile”的美国专利申请No.15/335,769中进行了描述。美国专利申请No.15/335,769的全部公开内容通过引用合并于此。
图2图示说明包括输出特征深度大于一的激活结构和多个参数结构示例计算结构200。在一些实现中,神经网络可以具有多个层,所述多个层生成具有多个输出特征深度的输出。在一些实现中,每个参数结构可以负责输出深度中相应的一个。因此,计算结构200描绘了可缩放计算结构,其中附加参数结构104a/b/c被添加以促进与N个输出深度相关联的计算。N是变量且可以具有范围从例如1到5的整数值,或者可替换地,1到N取决于计算系统设计者的偏好或需要。
如数据路径105所示,用于与数据结构102a相关联的元素的各个输入激活值可以馈送到每个参数结构104a/b/c以用于由与相应的参数结构104相关联的乘法运算器所执行的计算。每个参数结构104可以随后以流水线形式将从其左邻居接收到的激活值传递到其右邻居。可替换地,激活可以由每个参数结构104同时提供和消费。
矩阵202可以表示对应于激活102的示例矩阵结构。更具体地,元素行202a可以对应于数据结构102a而元素行202b可以对应于数据结构102b。通常,并且举例来说,第一参数结构104(1)被访问以执行与空间206相关联的计算而第二参数结构104(2)被访问以执行与空间208相关联的计算。尽管未示出,还可以执行对应于z维度的附加的计算。作为示例,元素行202a可以在RGB图像的R平面中而元素行202b可以在相同RGB图像的G平面中。神经网络的示例卷积层通常产生多个输出特征。示例输出特征可以包括用于对苹果分类的输出特征,另一输出特征用于对香蕉分类。关于数据结构204,空间206和208可以表示用于不同分类的不同平面。
图3图示说明用于馈送输入激活到一个或多个参数结构的示例计算系统300。计算系统300通常包括控制器302,其提供一个或多个控制信号310以使得用于激活结构102的输入激活被存储到存储器组108的存储器地址或者从存储器组108的存储器地址被检索出。类似地,控制器302还提供一个或多个控制信号310以使得用于参数结构104a/b/c的权重被存储到存储器组110的存储器地址或者从存储器组118的存储器地址被检索出。计算系统300进一步包括一个或多个乘法累加(MAC)cell/单元(unit)304、输入激活总线306和输出激活总线308。控制信号310可以例如使得存储器组108提供一个或多个输入激活到输入激活总线306,使得存储器组110提供一个或多个权重到参数结构104a/b/c,和/或使得MAC单元304执行产生被提供到输出激活总线308的输出激活的计算。
控制器302可以包括一个或多个处理单元和存储器。在一些实施例中,控制器302的处理单元可以包括一个或多个处理器(例如微处理器或中央处理单元(CPU))、图形处理单元(GPU)、专用集成电路(ASIC)或者不同处理器的组合。在替换实施例中,控制器302可以包括其他存储或计算资源/设备(例如,缓冲、寄存器、控制电路等等),提供附加处理选项以便执行本说明书中所述的确定和计算中的一个或多个。
在一些实现中,控制器302的处理单元执行在存储器中存储的编程的指令以使得控制器302和计算系统300执行本说明书中所述的一个或多个功能。控制器302的存储器可以包括一个或多个非暂时性机器可读存储介质。非暂时性机器可读存储介质可以包括固态存储器、磁盘和光盘、便携计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦写可编程只读存储器(例如EPROM、EEPROM或闪速存储器)、或者能够存储信息的任何其他有形介质。
通常,计算系统300是示例计算单元或模组且能够包括附加硬件结构来执行与诸如张量、矩阵和/或数据阵列的多维数据结构相关联的计算。在一些实现中,输入激活值可以预先加载到用于激活结构102的存储器组108且权重值可以使用由计算系统300接收到的从与神经网络硬件计算系统相关联的外部或更高级控制设备到达计算系统300的数据值而预先加载到第二存储器组110。
指令、输入或输入激活和权重可以从诸如与神经网络硬件计算系统相关联的外部输入/输出(I/O)设备或高级控制设备的外部源提供给系统300。在一些实现中,一个或多个数据总线提供外部源(例如控制设备)和系统300之间的数据通信。数据总线用于从示例I/O设备向多个系统300中每个或在包括在用于神经网络的硬件计算系统的多个计算模组(例如多个系统300)之间提供指令、输入或激活和权重。
系统300能够接收指令,所述指令定义要由系统300执行的特定计算操作。而且
,控制器302能够执行编程的指令以例如分析与接收到的输入激活相关联的数据流。分析输入激活数据流能够使得控制器302能够检测或确定与每个输入激活相关联的值是零值还是非零值。在一些实现中,控制器302分析示例输入激活数据流并将每个检测到的零激活值和每个检测到的非零激活值映射到位向量或位图303。
如图3中所示,位图303可以使用二进制值来映射检测到的零值输入激活和检测到的非零值输入激活。例如,二进制值“0”可以对应于检测到的零输入激活值而二进制值“1”可以对应于检测到的非零输入激活值。例如,位图303可以是8位位图,其中包括二进制“1”的奇数位位置对应于非零激活值且包括二进制“0”的偶数位位置对应于零激活值。
控制器302可以使得输入激活存储在存储器组108中。通常,存储在存储器组108中的数据值通常每个都写入到相应的存储器地址位置。存储器组108中的地址位置可以随后在需要诸如输入激活的数据值执行特定计算操作时由示例控制设备(例如控制器302)来访问。
在一些实现中,控制器302使用位图303来确定哪些输入激活要写入到存储器组108。例如,位图303的分析可以指示只有对应于位图位置1、3、5、7的激活值(非零值)应该写入存储器组108中的地址位置。而且与位图位置2、4、6、8相关联的数据值(零值)可以或被丢弃或被写入存储器地址位置,当激活值被提供给输入总线306时其可以被或可以不被控制器302访问。因此,位图303可以被用作基础来压缩零激活值,其中压缩发生在零值输入激活不写入存储器地址位置时,由此降低整体存储器使用并释放用于存储其他数据值的地址位置。
控制器302可以提供一个或多个控制信号310给存储器组108以从存储器组108加载输入激活到输入激活总线306并提供值给包括MAC 304的计算单元的阵列。在一些实现中,位图303,或对应于位图303的非零存储器地址索引,可以由控制器302引用以便确定哪些存储器地址值应该被访问以提供非零激活值。激活值由控制器302从存储器组108提供到数据总线306。
在一些实现中,输入激活至少部分从与索引或位图303相关联的存储器地址位置提供。在其他实现中,控制器302可以基于位图303或索引之一来检测或确定提供的输入激活是否具有零值。响应于进行这样的确定,控制器302可以随后提供控制信号给计算阵列中的单元或MAC 304以防止、中止或禁止不必要的乘法运算(例如乘以零)的发生。在计算系统300内,通过提供零激活值并且之后或同时禁用与该激活相关联的计算操作,使得能量节省可以得以实现。
如上所讨论的,索引包括具有非零值的输入激活的所有存储器地址位置。数据总线306可由计算阵列的一个或多个单元访问。计算阵列的单元可以从数据总线306接收一个或多个非零激活值以基于接收到的激活值来执行关于矩阵乘法的计算。在一些实现中,计算系统300将只从对应于索引地址的存储器地址位置提供输入激活。因此,将不提供任何零激活给输入总线306并且因此,将不禁用计算操作或者防止其发生。当计算系统300使用该计算方案时,通过消除零乘法,计算效率可以得到提高或加速。
对于给定计算周期,计算系统300可以要求访问激活结构102和参数结构104的元素以执行与用于神经网络层的推理计算相关联的乘法运算。如上所注释的,用于存储器组108和存储器组110的特定存储器地址值可以分别对应于激活结构102和参数结构104的元素。
对于执行计算的周期,控制器302将一次提供一个输入激活值且包括MAC cell304的计算单元的阵列将用激活乘以权重以对于给定输入激活产生不同输出激活。计算单元的阵列的每个元素(以上被描述为参数结构)或MACcell 304可以负责神经网络层的不同输出深度。通常,无论控制器302何时检测到零激活值,控制器302可以:1)不在存储器组108中存储激活值;2)不提供激活值,或者3)提供值并提供控制信号给特定计算单元以使得单元不执行对应于该零激活值的乘法运算。
计算单元的阵列完全由控制器302控制,其可以基于零激活值的检测而确定何时需要跳过或阻止特定计算。因此,不需要计算单元的阵列内的附加复杂硬件结构来跳过特定计算。而且,输入激活值可以在到达计算系统300时进行分析以便在存储器组108中存储。响应于分析输入激活,控制器302可以执行指令以通过只在存储器108中存储非零值而有效压缩激活数据,由此节省存储器存储空间和对应的带宽。
当计算系统300接收到输入激活和权重时,控制器302可以例如执行一个或多个直接存储器存取操作。这些存储器存取操作的执行包括在存储器组108的地址位置中存储对应于激活结构102的维度元素的输入激活。类似地,控制器302还可以在存储器组110的地址位置中存储对应于参数结构104的维度元素的参数。除了位图303,控制器302可以进一步包括一个或多个地址寄存器来保持将预取特定输入激活(例如,具有零值或非零值)的存储器地址。而且,这一个或多个寄存器还将存储预取要与特定输入激活相乘的对应权重的存储器地址。
如上讨论的,控制器302部分基于位图303识别用于非零激活值的存储器地址。在一些实现中,控制器302读取位图303并且例如确定具有非零激活值的至少两个存储器地址。如果控制器302被配置为提供零激活值,随后跳过或禁用对于零激活值的计算,则控制器302还可以确定具有零激活值的至少一个存储器地址。在这个实现中,控制器302可以引用上面提到的寄存器来确定用于第一输入激活的对应权重(以及存储器地址)以及确定用于第二输入激活的对应权重(以及存储器地址)。
如上所注释的,控制器302在存储器中保持一个或多个地址寄存器。因此,为了减轻或防止操作数(输入激活和权重)的任何潜在不一致,一旦检测到零值输入激活,控制器302可以禁用对应的计算单元、跳过加载特定权重、以及检索用于下一非零输入激活的适当的对应权重(以及存储器地址)以恢复计算用于给定神经网络层的输出激活。
在一些实现中,在第一神经网络层计算的输出激活被用作网络中接下来的第二层,例如网络的接下来的隐藏层或输出层的输入激活。通常,神经网络的每层根据相应的参数集的当前值从接收到的输入生成输出。在一些情形中,控制器302可以执行编程的指令(即输出逻辑)以分析与提供给输出激活总线308的输出激活相关联的数据流。分析输出激活数据流可以使得控制器302能够检测或确定与每个输出激活相关联的值是零值还是非零值。控制器302可以分析示例输出激活数据流并且将每个检测到的非零激活值映射到位图305。在位图305中的映射的非零激活值可以用于仅供应非零值作为对负责与网络中接下来的第二层相关联的计算的随后的计算系统300的输入激活。
在可替换实现中,可能存在一些计算操作,其中单个非零输入激活被用作覆盖用于参数结构104的给定维度元素(即迭代“x”或“y”维度)的各种权重的用于若干乘法运算的操作数。例如,当控制器302使得存储器组108提供第一输入激活(例如非零值)时,参数结构104a接收激活且在给定地址的对应权重也被加载到参数结构104a。参数结构104a将进行更新特定数量的部分和(例如,由变量“K”来表示),第一输入激活在K个计算周期上影响该部分和。结果,对于这K个周期,参数结构104a将接收不到任何附加输入激活。控制器302可以随后提供控制信号给存储器组108以使得接下来的输入激活被提供给输入激活总线306。
图4图示说明包括经由输入总线306提供激活404给一个或多个乘法累加(MAC)运算器的存储器组108的示例架构。移位寄存器404可以提供移位功能,由此激活404一次发出一个到输入总线306上以便在MACcell 304中由一个或多个MAC操作符接收。如所示,在一个实现中,激活406可具有零激活值且因此可能不被MACcell 304所消费。
通常,包括MAC运算器的MACcell 304被定义为计算单元,其计算部分和,并且在一些实现中,被配置为写入部分和数据到输出总线308。如所示,cell 304可以由一个或多个MAC运算器构成。在一个实现中,MACcell 304中的MAC运算器的数量被称为cell的发射宽度(issue width)。作为示例,双发射cell指的是具有两个MAC运算器的cell,能够计算两个激活值(来自存储器组108)与两个参数(来自存储器110)的乘法并且执行两个乘法器的结果和当前部分和之间的相加。
如上所述,输入总线306是通信总线,其提供输入激活给线性单元(即MAC阵列304)的MAC运算器。在一些实现中,相同输入在所有MAC运算器之间共享。输入总线306的宽度必须宽到足以供应输入激活给用于给定MAC阵列304的对应数量的cell。考虑下面的示例来图示说明输入总线306的结构。当线性单元中cell的数量等于四而激活宽度等于八位时,输入总线306可以被配置为每个周期提供多达四个输入激活。在这个示例中,MAC阵列304中每个cell将不访问所提供的四个激活之外的数据。
在一些示例中,指令数据312可以指示MAC阵列304的cell将需要使用相同输入激活来执行计算。这可以被称为在MAC阵列304的cell内的Zout划分。类似地,当MAC阵列304需要不同激活来执行计算时发生cell内的Zin划分。在前者的例子中,单个输入激活被重复四次且在四个周期上提供从存储器组108读取的四个激活。在后者的例子中,每个周期都需要存储器组108的读取。
图5是用于减少参数计算并利用输入数据稀疏的过程的示例流程图。在块502,计算系统300接收具有零激活值或非零激活值的输入激活。如上所讨论的,在一些实现中,计算系统300可以从示例神经网络硬件系统的主机接口设备或更高级控制器接收输入激活。
在块504,控制器302确定每个输入激活是零值或非零值。在一些实现中,控制器302分析输入激活数据流并且将每个检测到的零值和非零值映射到包括对应于零输入激活值(“0”)和非零输入激活值(“1”)的二进制值的位图303。
在块506,控制器302在存储器组108中存储接收到的输入激活。存储输入激活可以包括控制器302生成具有包括非零值的输入激活的一个或多个存储器地址位置的索引。在一些实现中,索引基于位图303来创建。例如,因为位图303的每个位指示非零激活值或零激活值,位图303可以由控制器302来引用以创建在将输入激活写入存储器组108时具有非零值的存储器地址位置的索引。
在块508,控制器302从存储器组108提供至少一个输入激活到数据总线306上。在一些实现中,输入激活至少部分从在索引中识别的存储器组位置提供。如上所讨论的,索引识别存储具有非零值的输入激活的所有存储器地址位置。数据总线306可由计算阵列的一个或多个单元访问。计算阵列的单元从数据总线306接收一个或多个非零激活值以执行关于矩阵乘法的计算。在一些实现中,计算系统300将只从对应于索引地址的存储器地址提供输入激活。当计算系统300使用该通信方案时,通过消除零乘法,计算效率可以得以提高。
在块510,在所有激活值被提供而不是只有来自索引地址的输入激活被提供的实现中,控制器302检测到输入激活从不与包括非零激活值的任何索引地址相关联的存储器地址提供。响应于该检测步骤,控制器302可以随后提供控制信号给计算阵列的至少一个单元以防止与零输入相关联的乘法运算。当计算系统300使用该通信方案时,通过防止不生成有用结果(例如,有用结果包括部分和或输出激活的计算)的不必要或浪费的计算,能量节省可以得以实现。
本说明书中所述的主题和功能操作的实施例可以用数字电子电路、以有形体现的计算机软件或固件、计算机硬件,包括在本说明书中公开的结构及其结构等价物,或者以上述一个或多个的组合来实现。本说明书中所述的主题的实施例可以被实现为在有形非暂时性程序载体上编码的情况以便由数据处理装置执行或控制数据处理装置的操作。可替换地或此外,程序指令可以在人工生成的传播信号上编码,例如机器生成的电、光或电磁信号,其被生成以编码信息用来传输到合适的接收机装置以便由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储衬底、随机或串行存取存储器设备、或者以上一个或多个的组合。
本说明书中所述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机来执行以通过对输入数据操作并生成输出而执行功能。过程和逻辑流程还可以由专用逻辑电路来执行,且装置还可以被实现为专用逻辑电路,例如FPGA(现场可编程门阵列)、ASIC(专用集成电路)、GPGPU(通用图形处理单元)或者一些其他处理单元。
适合于计算机程序的执行的计算机包括例如可以基于通用或专用微处理器或二者,或者任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或二者接收指令和数据。计算机的必要元件是用于进行或执行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括一个或多个大容量存储设备用来存储数据,例如磁、磁光盘、或光盘,或者操作耦合以从中接收数据或向其传送数据。但是,计算机不需要具有这样的设备。
适合存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM以及闪速存储器设备;磁盘,例如内部硬盘或可移动磁盘。处理器和存储器可以由专用逻辑电路来补充,或者并入专用逻辑电路中。
尽管本说明书包含许多具体实现细节,但这些不应该被解释为对可能要求保护的任何发明的范围的限制,而应被解释为对可能具体针对特定发明的特定实施例的特征的描述。在本说明书中所述的在各个独立实施例的场境中的特定特征还可以在单个实施例中组合而实现。反之,在单个实施例的场境中描述的各种特征也可以独立在多个实施例中实现或以任何合适的子组合的方式而实现。而且,尽管特征可以在上面被描述为在特定组合中行动,甚至最初就是这样要求保护的,来自所要求保护的组合的一个或多个特征在一些情况下可以从组合中除去,而所要求保护的组合可以针对子组合或子组合的变型。
类似地,尽管在附图中以特定次序描述了操作,其不应该被理解为要求这样的操作以所示的特定次序或者以顺序的次序来执行,或者所有说明的操作都被执行,以获取所需结果。在特定环境中,多任务和并行处理可能是有利的。而且,上面所述实施例中的各种系统模块和组件的分离不应该被理解为需要在所有实施例中这样分离,应该被理解的是,所述程序组件和系统通常能够在单个软件产品中集成在一起或者被封装到多个软件产品中。
进一步实现被总结为以下示例:
示例1:一种计算机实现的方法,包括:由计算设备接收多个输入激活,所述输入激活至少部分从所述计算设备外部的源提供;由所述计算设备的控制器确定所述多个输入激活中每个是否具有零值或非零值之一;在所述计算设备的存储器组中存储至少一个所述输入激活;由所述控制器生成索引,所述索引包括一个或多个存储器地址位置,该存储器地址位置具有非零值的输入激活值;以及由所述控制器从所述存储器组提供至少一个输入激活到数据总线上,所述数据总线能够由计算阵列的一个或多个单元访问,其中,所述激活至少部分从与所述索引相关联的存储器地址位置提供。
示例2:如示例1所述的方法,其中,所述索引基于包括多个位的位图来创建,其中,所述位图的每个位指示非零输入激活值或零输入激活值中的至少一个。
示例3:如示例1或2所述的方法,进一步包括,提供具有非零值的第一输入激活以由至少一个单元使用所述非零值执行计算,并且随后提供具有零值的第二输入激活,以及在至少一个单元中阻止否则将使用所述零值来执行的计算。
示例4:如示例3所述的方法,其中,响应于所述控制器确定所述输入激活从不与所述索引相关联的存储器地址位置提供而发生阻止。
示例5:如示例4所述的方法,进一步包括,由所述控制器检测所述输入激活从不与所述索引相关联的存储器地址位置提供,以及响应于检测,提供控制信号给所述计算阵列的至少一个单元以阻止与所述零输入激活值相关联的乘法操作。
示例6:如示例1到5之一所述的方法,其中,所述方法进一步包括,由所述控制器向第一单元映射使用第一输入激活的张量计算的第一部分以及向与所述第一单元不同的第二单元映射也使用所述第一输入激活的所述张量计算的第二部分。
示例7:如示例1到6之一所述的方法,进一步包括,顺序地提供单个输入激活到所述数据总线上,所述单个输入激活从与所述索引相关联的存储器地址位置访问和选择。
示例8:如示例1到7之一所述的方法,其中,提供进一步包括,不提供具有零值的输入激活。
示例9:存储指令的一个或多个机器可读存储设备,所述指令能够由一个或多个处理设备执行以执行操作,所述操作包括:由计算设备接收多个输入激活,所述输入激活至少部分从所述计算设备外部的源提供;由所述计算设备的控制器确定所述多个输入激活中每个是否具有零值或非零值之一;在所述计算设备的存储器组中存储至少一个所述输入激活;由所述控制器生成索引,所述索引包括一个或多个存储器地址位置,该存储器地址位置具有非零值的输入激活值;以及由所述控制器从所述存储器组提供至少一个输入激活到数据总线上,所述数据总线能够由计算阵列的一个或多个单元访问,其中,所述激活至少部分从与所述索引相关联的存储器地址位置提供。
示例10:如示例9所述的机器可读存储设备,其中,所述索引基于包括多个位的位图来创建,其中,所述位图的每个位指示非零输入激活值或零输入激活值中的至少一个。
示例11:如示例9或10所述的机器可读存储设备,进一步包括,提供具有非零值的第一输入激活以由至少一个单元使用所述非零值执行计算,并且随后提供具有零值的第二输入激活,以及在至少一个单元中阻止否则将使用所述零值来执行的计算。
示例12:如示例11所述的机器可读存储设备,其中,响应于所述控制器确定所述输入激活从不与所述索引相关联的存储器地址位置提供而发生阻止。
示例13:如示例12所述的机器可读存储设备,进一步包括,由所述控制器检测所述输入激活从不与所述索引相关联的存储器地址位置提供,以及响应于检测,提供控制信号给所述计算阵列的至少一个单元以阻止与所述零输入激活值相关联的乘法操作。
示例14:如示例9到13之一所述的机器可读存储设备,其中,所述操作进一步包括,由所述控制器向第一单元映射使用第一输入激活的张量计算的第一部分以及向与所述第一单元不同的第二单元映射也使用所述第一输入激活的所述张量计算的第二部分。
示例15:一种电子系统,包括:置于计算设备中的控制器,所述控制器包括一个或多个处理设备;以及用于存储指令的一个或多个机器可读存储设备,所述指令能够由所述一个或多个处理设备执行以执行操作,所述操作包括:由所述计算设备接收多个输入激活,所述输入激活至少部分从所述计算设备外部的源提供;由所述控制器确定所述多个输入激活中每个是否具有零值或非零值之一;在所述计算设备的存储器组中存储至少一个所述输入激活;由所述控制器生成索引,所述索引包括一个或多个存储器地址位置,该存储器地址位置具有非零值的输入激活值;以及由所述控制器从所述存储器组提供至少一个输入激活到数据总线上,所述数据总线能够由计算阵列的一个或多个单元访问,其中,所述激活至少部分从与所述索引相关联的存储器地址位置提供。
示例16:如示例15所述的电子系统,其中,所述索引基于包括多个位的位图来创建,其中,所述位图的每个位指示非零输入激活值或零输入激活值中的至少一个。
示例17:如示例15或16所述的电子系统,进一步包括,提供具有非零值的第一输入激活以由至少一个单元使用所述非零值执行计算,并且随后提供具有零值的第二输入激活,以及在至少一个单元中阻止否则将使用所述零值来执行的计算。
示例18:如示例17所述的电子系统,其中,响应于所述控制器确定所述输入激活从不与所述索引相关联的存储器地址位置提供而发生阻止。
示例19:如示例17或18所述的电子系统,进一步包括,由所述控制器检测所述输入激活从不与所述索引相关联的存储器地址位置提供,以及响应于检测,提供控制信号给所述计算阵列的至少一个单元以阻止与所述零输入激活值相关联的乘法操作。
示例20:如示例15到19之一所述的电子系统,其中,所述操作进一步包括,由所述控制器向第一单元映射使用第一输入激活的张量计算的第一部分以及向与所述第一单元不同的第二单元映射也使用所述第一输入激活的所述张量计算的第二部分。
已经描述了主题的特定实施例。其他实施例在所附权利要求的范围内。例如,权利要求中所述的动作可以以不同次序来执行且仍旧获取所需结果。作为一个示例,在附图中描绘的过程不必要求所示出的特定次序,或顺序的次序,来获取所需结果。在一些情况下,多任务和并行处理可能是有利的。
Claims (15)
1.一种用于处理神经网络层的输入激活的计算机实现的方法,包括:
由计算设备接收多个输入激活,所述多个输入激活至少部分从所述计算设备外部的源提供;
由所述计算设备的控制器确定所述多个输入激活中的每个输入激活是否具有零值或非零值;
在所述计算设备的存储器组中存储所述多个输入激活中的至少一个;
由所述控制器生成索引,所述索引仅识别所述存储器组中的存储非零输入激活值的存储器地址位置;以及
由所述控制器从所述存储器组提供至少一个输入激活到数据总线上,所述数据总线能够由计算阵列的一个或多个单元访问以用于基于所述至少一个输入激活来执行计算,其中,所述至少一个激活至少部分从与所述索引相关联的存储器地址位置提供。
2.如权利要求1所述的方法,其中,所述索引基于包括多个位的位图来生成,并且其中,所述位图的每个位指示非零输入激活值和零输入激活值中的至少一个。
3.如权利要求1所述的方法,进一步包括:
提供具有非零值的第一输入激活以使得所述计算阵列的至少一个单元能够使用所述非零值执行计算;
随后提供具有零值的第二输入激活;以及
阻止在所述计算阵列的至少一个单元中否则将使用所述零值来执行的计算。
4.如权利要求3所述的方法,其中,所述阻止是响应于所述控制器确定所述第二输入激活是从不与所述索引相关联的存储器地址位置提供而发生的。
5.如权利要求3所述的方法,进一步包括:由所述控制器检测所述第二输入激活是从不与所述索引相关联的存储器地址位置提供的,以及响应于所述检测,提供控制信号给所述计算阵列的至少一个单元以阻止与所述第二输入激活的所述零值相关联的乘法操作。
6.如权利要求1所述的方法,进一步包括:由所述控制器向所述计算阵列的第一单元映射使用第一输入激活的张量计算的第一部分以及向与所述第一单元不同的所述计算阵列的第二单元映射也使用所述第一输入激活的所述张量计算的第二部分。
7.如权利要求1所述的方法,进一步包括,一次提供一个输入激活到所述数据总线上,所述一个输入激活从与所述索引相关联的存储器地址位置被访问和被选择。
8.如权利要求1所述的方法,其中,所述提供进一步包括:不提供具有零值的输入激活。
9.存储用于处理神经网络层的输入激活的指令的一个或多个机器可读存储设备,所述指令在由计算设备的一个或多个处理设备执行时使所述一个或多个处理设备执行操作,所述操作包括:
接收多个输入激活,所述多个输入激活至少部分从所述计算设备外部的源提供;
确定所述多个输入激活中的每个输入激活是否具有零值或非零值之一;
在所述计算设备的存储器组中存储所述多个输入激活中的至少一个;
由所述计算设备的控制器生成索引,所述索引仅识别所述存储器组中的存储非零输入激活值的存储器地址位置;以及
由所述控制器从所述存储器组提供至少一个输入激活到数据总线上,所述数据总线能够由计算阵列的一个或多个单元访问以用于基于所述至少一个输入激活来执行计算,其中,所述至少一个输入激活至少部分从与所述索引相关联的存储器地址位置提供。
10.如权利要求9所述的一个或多个机器可读存储设备,其中,所述索引基于包括多个位的位图来生成,并且其中,所述位图的每个位指示非零输入激活值和零输入激活值中的一个。
11.如权利要求9所述的一个或多个机器可读存储设备,所述操作进一步包括:
提供具有非零值的第一输入激活以使得所述计算阵列的至少一个单元能够使用所述非零值执行计算;随后提供具有零值的第二输入激活;以及
阻止在所述计算阵列的至少一个单元中否则将使用所述零值来执行的计算。
12.如权利要求11所述的一个或多个机器可读存储设备,其中,所述阻止是响应于所述控制器确定所述第二输入激活是从不与所述索引相关联的存储器地址位置提供而发生的。
13.如权利要求11所述的一个或多个机器可读存储设备,所述操作进一步包括:由所述控制器检测所述第二输入激活是从不与所述索引相关联的存储器地址位置提供的,以及响应于所述检测,提供控制信号给所述计算阵列的至少一个单元以阻止与所述第二输入激活的所述零值相关联的乘法操作。
14.如权利要求9所述的一个或多个机器可读存储设备,其中,所述操作进一步包括:向所述计算阵列的第一单元映射使用第一输入激活的张量计算的第一部分、以及向与所述计算阵列的所述第一单元不同的所述计算阵列的第二单元映射也使用所述第一输入激活的所述张量计算的第二部分。
15.一种电子系统,包括:
置于计算设备中的控制器,所述控制器包括一个或多个处理设备;以及
根据权利要求9至14中的任一项所述的一个或多个机器可读存储设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210121408.9A CN114595803A (zh) | 2016-10-27 | 2017-09-29 | 利用神经网络计算单元中的输入数据稀疏 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/336,066 US10360163B2 (en) | 2016-10-27 | 2016-10-27 | Exploiting input data sparsity in neural network compute units |
US15/336,066 | 2016-10-27 | ||
US15/465,774 US9818059B1 (en) | 2016-10-27 | 2017-03-22 | Exploiting input data sparsity in neural network compute units |
US15/465,774 | 2017-03-22 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210121408.9A Division CN114595803A (zh) | 2016-10-27 | 2017-09-29 | 利用神经网络计算单元中的输入数据稀疏 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108009626A CN108009626A (zh) | 2018-05-08 |
CN108009626B true CN108009626B (zh) | 2022-03-01 |
Family
ID=60256363
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710908258.5A Active CN108009626B (zh) | 2016-10-27 | 2017-09-29 | 利用神经网络计算单元中的输入数据稀疏 |
CN202210121408.9A Pending CN114595803A (zh) | 2016-10-27 | 2017-09-29 | 利用神经网络计算单元中的输入数据稀疏 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210121408.9A Pending CN114595803A (zh) | 2016-10-27 | 2017-09-29 | 利用神经网络计算单元中的输入数据稀疏 |
Country Status (9)
Country | Link |
---|---|
US (5) | US10360163B2 (zh) |
EP (2) | EP3533003B1 (zh) |
JP (3) | JP7134955B2 (zh) |
KR (4) | KR102679563B1 (zh) |
CN (2) | CN108009626B (zh) |
DE (2) | DE202017105363U1 (zh) |
HK (1) | HK1254700A1 (zh) |
SG (1) | SG11201903787YA (zh) |
WO (1) | WO2018080624A1 (zh) |
Families Citing this family (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10360163B2 (en) | 2016-10-27 | 2019-07-23 | Google Llc | Exploiting input data sparsity in neural network compute units |
US10175980B2 (en) | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
US9959498B1 (en) | 2016-10-27 | 2018-05-01 | Google Llc | Neural network instruction set architecture |
US10685285B2 (en) * | 2016-11-23 | 2020-06-16 | Microsoft Technology Licensing, Llc | Mirror deep neural networks that regularize to linear networks |
CN108205700B (zh) * | 2016-12-20 | 2021-07-30 | 上海寒武纪信息科技有限公司 | 神经网络运算装置和方法 |
US11328037B2 (en) * | 2017-07-07 | 2022-05-10 | Intel Corporation | Memory-size- and bandwidth-efficient method for feeding systolic array matrix multipliers |
TWI680409B (zh) * | 2017-07-08 | 2019-12-21 | 英屬開曼群島商意騰科技股份有限公司 | 適用於人工神經網路之矩陣及向量相乘的方法 |
US10879904B1 (en) | 2017-07-21 | 2020-12-29 | X Development Llc | Application specific integrated circuit accelerators |
US10790828B1 (en) | 2017-07-21 | 2020-09-29 | X Development Llc | Application specific integrated circuit accelerators |
US10725740B2 (en) * | 2017-08-31 | 2020-07-28 | Qualcomm Incorporated | Providing efficient multiplication of sparse matrices in matrix-processor-based devices |
US10902318B2 (en) | 2017-11-06 | 2021-01-26 | Neuralmagic Inc. | Methods and systems for improved transforms in convolutional neural networks |
CN110059811B (zh) | 2017-11-06 | 2024-08-02 | 畅想科技有限公司 | 权重缓冲器 |
US11715287B2 (en) | 2017-11-18 | 2023-08-01 | Neuralmagic Inc. | Systems and methods for exchange of data in distributed training of machine learning algorithms |
US10936942B2 (en) | 2017-11-21 | 2021-03-02 | Google Llc | Apparatus and mechanism for processing neural network tasks using a single chip package with multiple identical dies |
US10553207B2 (en) * | 2017-12-29 | 2020-02-04 | Facebook, Inc. | Systems and methods for employing predication in computational models |
EP3750113A1 (en) * | 2018-02-09 | 2020-12-16 | DeepMind Technologies Limited | Contiguous sparsity pattern neural networks |
JP7349438B2 (ja) * | 2018-02-16 | 2023-09-22 | 三星電子株式会社 | ニューラル・ネットワーク・アクセラレータ |
US10572568B2 (en) | 2018-03-28 | 2020-02-25 | Intel Corporation | Accelerator for sparse-dense matrix multiplication |
US11449363B2 (en) | 2018-05-31 | 2022-09-20 | Neuralmagic Inc. | Systems and methods for improved neural network execution |
US10963787B2 (en) | 2018-05-31 | 2021-03-30 | Neuralmagic Inc. | Systems and methods for generation of sparse code for convolutional neural networks |
US10832133B2 (en) | 2018-05-31 | 2020-11-10 | Neuralmagic Inc. | System and method of executing neural networks |
WO2021054990A1 (en) * | 2019-09-16 | 2021-03-25 | Neuralmagic Inc. | Systems and methods for generation of sparse code for convolutional neural networks |
US11216732B2 (en) | 2018-05-31 | 2022-01-04 | Neuralmagic Inc. | Systems and methods for generation of sparse code for convolutional neural networks |
US10599429B2 (en) * | 2018-06-08 | 2020-03-24 | Intel Corporation | Variable format, variable sparsity matrix multiplication instruction |
CN112437930A (zh) * | 2018-07-12 | 2021-03-02 | 华为技术有限公司 | 以熟练的推理速度和功耗,生成神经网络的压缩表示 |
US20200019836A1 (en) * | 2018-07-12 | 2020-01-16 | International Business Machines Corporation | Hierarchical parallelism in a network of distributed neural network cores |
CN110796244B (zh) * | 2018-08-01 | 2022-11-08 | 上海天数智芯半导体有限公司 | 用于人工智能设备的核心计算单元处理器及加速处理方法 |
CN109344964B (zh) * | 2018-08-08 | 2020-12-29 | 东南大学 | 一种适用于神经网络的乘加计算方法和计算电路 |
CN110826707B (zh) * | 2018-08-10 | 2023-10-31 | 北京百度网讯科技有限公司 | 应用于卷积神经网络的加速方法和硬件加速器 |
US20200065659A1 (en) * | 2018-08-24 | 2020-02-27 | Samsung Electronics Co., Ltd. | Method of accelerating training process of neural network and neural network device thereof |
JP6985997B2 (ja) * | 2018-08-27 | 2021-12-22 | 株式会社日立製作所 | 機械学習システムおよびボルツマンマシンの計算方法 |
US10846588B2 (en) * | 2018-09-27 | 2020-11-24 | Deepmind Technologies Limited | Scalable and compressive neural network data storage system |
US11586417B2 (en) * | 2018-09-28 | 2023-02-21 | Qualcomm Incorporated | Exploiting activation sparsity in deep neural networks |
WO2020072274A1 (en) | 2018-10-01 | 2020-04-09 | Neuralmagic Inc. | Systems and methods for neural network pruning with accuracy preservation |
CN111026440B (zh) * | 2018-10-09 | 2022-03-29 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
JP7115211B2 (ja) * | 2018-10-18 | 2022-08-09 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
CN111126081B (zh) * | 2018-10-31 | 2023-07-21 | 深圳永德利科技股份有限公司 | 全球通用语言终端及方法 |
US10768895B2 (en) * | 2018-11-08 | 2020-09-08 | Movidius Limited | Dot product calculators and methods of operating the same |
KR20200057814A (ko) * | 2018-11-13 | 2020-05-27 | 삼성전자주식회사 | 뉴럴 네트워크를 이용한 데이터 처리 방법 및 이를 지원하는 전자 장치 |
US11361050B2 (en) | 2018-11-20 | 2022-06-14 | Hewlett Packard Enterprise Development Lp | Assigning dependent matrix-vector multiplication operations to consecutive crossbars of a dot product engine |
US10769527B2 (en) | 2018-12-11 | 2020-09-08 | Mipsology SAS | Accelerating artificial neural network computations by skipping input values |
EP3895071A1 (en) * | 2018-12-11 | 2021-10-20 | Mipsology SAS | Accelerating artificial neural network computations by skipping input values |
JP7189000B2 (ja) * | 2018-12-12 | 2022-12-13 | 日立Astemo株式会社 | 情報処理装置、車載制御装置、車両制御システム |
US11551069B2 (en) * | 2018-12-31 | 2023-01-10 | SK Hynix Inc. | Processing system |
US11544559B2 (en) | 2019-01-08 | 2023-01-03 | Neuralmagic Inc. | System and method for executing convolution in a neural network |
US11604958B2 (en) | 2019-03-13 | 2023-03-14 | Samsung Electronics Co., Ltd. | Method and apparatus for processing computation of zero value in processing of layers in neural network |
AU2020241262A1 (en) * | 2019-03-15 | 2021-11-04 | Intel Corporation | Sparse optimizations for a matrix accelerator architecture |
KR20200111939A (ko) * | 2019-03-20 | 2020-10-05 | 에스케이하이닉스 주식회사 | 신경망 가속 장치 및 그것의 동작 방법 |
US20210026686A1 (en) * | 2019-07-22 | 2021-01-28 | Advanced Micro Devices, Inc. | Chiplet-integrated machine learning accelerators |
WO2021026225A1 (en) | 2019-08-08 | 2021-02-11 | Neuralmagic Inc. | System and method of accelerating execution of a neural network |
US12061971B2 (en) | 2019-08-12 | 2024-08-13 | Micron Technology, Inc. | Predictive maintenance of automotive engines |
US11635893B2 (en) * | 2019-08-12 | 2023-04-25 | Micron Technology, Inc. | Communications between processors and storage devices in automotive predictive maintenance implemented via artificial neural networks |
KR20210024865A (ko) | 2019-08-26 | 2021-03-08 | 삼성전자주식회사 | 데이터를 처리하는 방법 및 장치 |
KR20210045225A (ko) * | 2019-10-16 | 2021-04-26 | 삼성전자주식회사 | 뉴럴 네트워크에서 연산을 수행하는 방법 및 장치 |
JP7462140B2 (ja) * | 2019-10-29 | 2024-04-05 | 国立大学法人 熊本大学 | ニューラルネットワーク回路及びニューラルネットワーク演算方法 |
US11244198B2 (en) | 2019-11-21 | 2022-02-08 | International Business Machines Corporation | Input partitioning for deep learning of large image data |
FR3105659B1 (fr) * | 2019-12-18 | 2022-06-24 | Commissariat Energie Atomique | Procédé et dispositif de codage binaire de signaux pour implémenter des opérations MAC numériques à précision dynamique |
KR102268817B1 (ko) * | 2019-12-19 | 2021-06-24 | 국민대학교산학협력단 | 분산 클라우드 환경에서의 기계 학습 성능 평가 방법 및 장치 |
KR20210086233A (ko) * | 2019-12-31 | 2021-07-08 | 삼성전자주식회사 | 완화된 프루닝을 통한 행렬 데이터 처리 방법 및 그 장치 |
TWI727641B (zh) * | 2020-02-03 | 2021-05-11 | 華邦電子股份有限公司 | 記憶體裝置及其操作方法 |
US11586601B2 (en) * | 2020-02-05 | 2023-02-21 | Alibaba Group Holding Limited | Apparatus and method for representation of a sparse matrix in a neural network |
US11604975B2 (en) | 2020-04-09 | 2023-03-14 | Apple Inc. | Ternary mode of planar engine for neural processor |
CN111445013B (zh) * | 2020-04-28 | 2023-04-25 | 南京大学 | 一种针对卷积神经网络的非零探测器及其方法 |
KR102418794B1 (ko) * | 2020-06-02 | 2022-07-08 | 오픈엣지테크놀로지 주식회사 | 하드웨어 가속기를 위한 파라미터를 메모리로부터 액세스하는 방법 및 이를 이용한 장치 |
CN113835675A (zh) * | 2020-06-23 | 2021-12-24 | 深圳市中兴微电子技术有限公司 | 数据处理装置及数据处理方法 |
KR20220010362A (ko) | 2020-07-17 | 2022-01-25 | 삼성전자주식회사 | 뉴럴 네트워크 장치 및 그의 동작 방법 |
JPWO2022014500A1 (zh) * | 2020-07-17 | 2022-01-20 | ||
CA3186225A1 (en) * | 2020-07-21 | 2022-01-27 | Mostafa MAHMOUD | System and method for using sparsity to accelerate deep learning networks |
US11928176B2 (en) * | 2020-07-30 | 2024-03-12 | Arm Limited | Time domain unrolling sparse matrix multiplication system and method |
US20220075669A1 (en) * | 2020-09-08 | 2022-03-10 | Technion Research And Development Foundation Ltd. | Non-Blocking Simultaneous MultiThreading (NB-SMT) |
DE112021005190T5 (de) | 2020-09-30 | 2023-09-14 | Sony Semiconductor Solutions Corporation | Signalverarbeitungsvorrichtung, bildaufnahmevorrichtung und signalverarbeitungsverfahren |
KR20220049325A (ko) * | 2020-10-14 | 2022-04-21 | 삼성전자주식회사 | 가속기 및 이를 포함한 전자 장치 |
US11861327B2 (en) * | 2020-11-11 | 2024-01-02 | Samsung Electronics Co., Ltd. | Processor for fine-grain sparse integer and floating-point operations |
US11861328B2 (en) * | 2020-11-11 | 2024-01-02 | Samsung Electronics Co., Ltd. | Processor for fine-grain sparse integer and floating-point operations |
US11556757B1 (en) | 2020-12-10 | 2023-01-17 | Neuralmagic Ltd. | System and method of executing deep tensor columns in neural networks |
KR102541461B1 (ko) | 2021-01-11 | 2023-06-12 | 한국과학기술원 | 저전력 고성능 인공 신경망 학습 가속기 및 가속 방법 |
US20220222386A1 (en) * | 2021-01-13 | 2022-07-14 | University Of Florida Research Foundation, Inc. | Decommissioning and erasing entropy in microelectronic systems |
US11853717B2 (en) * | 2021-01-14 | 2023-12-26 | Microsoft Technology Licensing, Llc | Accelerating processing based on sparsity for neural network hardware processors |
US11940907B2 (en) * | 2021-06-25 | 2024-03-26 | Intel Corporation | Methods and apparatus for sparse tensor storage for neural network accelerators |
US11669489B2 (en) * | 2021-09-30 | 2023-06-06 | International Business Machines Corporation | Sparse systolic array design |
US11960982B1 (en) | 2021-10-21 | 2024-04-16 | Neuralmagic, Inc. | System and method of determining and executing deep tensor columns in neural networks |
CN116804973B (zh) * | 2022-03-18 | 2024-06-18 | 深圳鲲云信息科技有限公司 | 地址生成装置、方法、数据缓存器和人工智能芯片 |
Family Cites Families (65)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3754128A (en) | 1971-08-31 | 1973-08-21 | M Corinthios | High speed signal processor for vector transformation |
JPS4874139A (zh) * | 1971-12-29 | 1973-10-05 | ||
JPS5364439A (en) * | 1976-11-20 | 1978-06-08 | Agency Of Ind Science & Technol | Linear coversion system |
JPS58134357A (ja) | 1982-02-03 | 1983-08-10 | Hitachi Ltd | ベクトルプロセッサ |
EP0156648B1 (en) | 1984-03-29 | 1992-09-30 | Kabushiki Kaisha Toshiba | Convolution arithmetic circuit for digital signal processing |
US5267185A (en) | 1989-04-14 | 1993-11-30 | Sharp Kabushiki Kaisha | Apparatus for calculating matrices |
US5138695A (en) | 1989-10-10 | 1992-08-11 | Hnc, Inc. | Systolic array image processing system |
JPH03167664A (ja) | 1989-11-28 | 1991-07-19 | Nec Corp | マトリクス演算回路 |
WO1991019248A1 (en) | 1990-05-30 | 1991-12-12 | Adaptive Solutions, Inc. | Neural network using virtual-zero |
WO1991019267A1 (en) | 1990-06-06 | 1991-12-12 | Hughes Aircraft Company | Neural network processor |
US5287464A (en) | 1990-10-24 | 1994-02-15 | Zilog, Inc. | Semiconductor multi-device system with logic means for controlling the operational mode of a set of input/output data bus drivers |
JP3318753B2 (ja) | 1991-12-05 | 2002-08-26 | ソニー株式会社 | 積和演算装置および積和演算方法 |
AU658066B2 (en) * | 1992-09-10 | 1995-03-30 | Deere & Company | Neural network based control system |
JPH06139218A (ja) | 1992-10-30 | 1994-05-20 | Hitachi Ltd | ディジタル集積回路を用いて神経回路網を完全に並列にシミュレートするための方法及び装置 |
US6067536A (en) * | 1996-05-30 | 2000-05-23 | Matsushita Electric Industrial Co., Ltd. | Neural network for voice and pattern recognition |
US5742741A (en) | 1996-07-18 | 1998-04-21 | Industrial Technology Research Institute | Reconfigurable neural network |
US5905757A (en) | 1996-10-04 | 1999-05-18 | Motorola, Inc. | Filter co-processor |
US6243734B1 (en) | 1998-10-30 | 2001-06-05 | Intel Corporation | Computer product and method for sparse matrices |
JP2001117900A (ja) | 1999-10-19 | 2001-04-27 | Fuji Xerox Co Ltd | ニューラルネットワーク演算装置 |
US20020044695A1 (en) * | 2000-05-05 | 2002-04-18 | Bostrom Alistair K. | Method for wavelet-based compression of video images |
JP2003244190A (ja) | 2002-02-19 | 2003-08-29 | Matsushita Electric Ind Co Ltd | データフロー制御スイッチ用プロセッサ及びデータフロー制御スイッチ |
US7016529B2 (en) * | 2002-03-15 | 2006-03-21 | Microsoft Corporation | System and method facilitating pattern recognition |
US7493498B1 (en) * | 2002-03-27 | 2009-02-17 | Advanced Micro Devices, Inc. | Input/output permission bitmaps for compartmentalized security |
US7426501B2 (en) | 2003-07-18 | 2008-09-16 | Knowntech, Llc | Nanotechnology neural network methods and systems |
US7818729B1 (en) * | 2003-09-15 | 2010-10-19 | Thomas Plum | Automated safe secure techniques for eliminating undefined behavior in computer software |
CA2553452A1 (en) | 2004-01-13 | 2005-07-28 | New York University | Method, system, storage medium, and data structure for image recognition using multilinear independent component analysis |
GB2436377B (en) | 2006-03-23 | 2011-02-23 | Cambridge Display Tech Ltd | Data processing hardware |
CN101441441B (zh) * | 2007-11-21 | 2010-06-30 | 新乡市起重机厂有限公司 | 起重机智能防摇控制系统的设计方法 |
JP4513865B2 (ja) | 2008-01-25 | 2010-07-28 | セイコーエプソン株式会社 | 並列演算装置および並列演算方法 |
US9490848B2 (en) | 2008-05-21 | 2016-11-08 | Nxp B.V. | Data handling system comprising memory banks and data rearrangement |
US8321652B2 (en) * | 2008-08-01 | 2012-11-27 | Infineon Technologies Ag | Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks |
EP2290563B1 (en) * | 2009-08-28 | 2017-12-13 | Accenture Global Services Limited | Accessing content in a network |
US8589600B2 (en) | 2009-12-14 | 2013-11-19 | Maxeler Technologies, Ltd. | Method of transferring data with offsets |
US8595467B2 (en) | 2009-12-29 | 2013-11-26 | International Business Machines Corporation | Floating point collect and operate |
US8676874B2 (en) | 2010-12-06 | 2014-03-18 | International Business Machines Corporation | Data structure for tiling and packetizing a sparse matrix |
US8457767B2 (en) * | 2010-12-31 | 2013-06-04 | Brad Radl | System and method for real-time industrial process modeling |
US8977629B2 (en) | 2011-05-24 | 2015-03-10 | Ebay Inc. | Image-based popularity prediction |
US8806171B2 (en) | 2011-05-24 | 2014-08-12 | Georgia Tech Research Corporation | Systems and methods providing wear leveling using dynamic randomization for non-volatile memory |
US8812414B2 (en) | 2011-05-31 | 2014-08-19 | International Business Machines Corporation | Low-power event-driven neural computing architecture in neural networks |
US8909576B2 (en) | 2011-09-16 | 2014-12-09 | International Business Machines Corporation | Neuromorphic event-driven neural computing architecture in a scalable neural network |
JP5501317B2 (ja) | 2011-09-21 | 2014-05-21 | 株式会社半導体理工学研究センター | 時間差増幅回路 |
US9201828B2 (en) | 2012-10-23 | 2015-12-01 | Analog Devices, Inc. | Memory interconnect network architecture for vector processor |
US9606797B2 (en) | 2012-12-21 | 2017-03-28 | Intel Corporation | Compressing execution cycles for divergent execution in a single instruction multiple data (SIMD) processor |
WO2014105057A1 (en) | 2012-12-28 | 2014-07-03 | Intel Corporation | Instruction to reduce elements in a vector register with strided access pattern |
US9477628B2 (en) | 2013-09-28 | 2016-10-25 | Intel Corporation | Collective communications apparatus and method for parallel systems |
US9323525B2 (en) | 2014-02-26 | 2016-04-26 | Intel Corporation | Monitoring vector lane duty cycle for dynamic optimization |
CN106471526B (zh) * | 2014-08-29 | 2019-03-08 | 谷歌有限责任公司 | 用于处理图像的方法和系统 |
CN104463209B (zh) * | 2014-12-08 | 2017-05-24 | 福建坤华仪自动化仪器仪表有限公司 | 一种基于bp神经网络的pcb板上数字代码识别方法 |
US9666257B2 (en) | 2015-04-24 | 2017-05-30 | Intel Corporation | Bitcell state retention |
US10013652B2 (en) * | 2015-04-29 | 2018-07-03 | Nuance Communications, Inc. | Fast deep neural network feature transformation via optimized memory bandwidth utilization |
US10489703B2 (en) | 2015-05-20 | 2019-11-26 | Nec Corporation | Memory efficiency for convolutional neural networks operating on graphics processing units |
US10353860B2 (en) | 2015-10-08 | 2019-07-16 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with neural processing units dynamically configurable to process multiple data sizes |
US9875104B2 (en) | 2016-02-03 | 2018-01-23 | Google Llc | Accessing data in multi-dimensional tensors |
US10552119B2 (en) | 2016-04-29 | 2020-02-04 | Intel Corporation | Dynamic management of numerical representation in a distributed matrix processor architecture |
CN106023065B (zh) * | 2016-05-13 | 2019-02-19 | 中国矿业大学 | 一种基于深度卷积神经网络的张量型高光谱图像光谱-空间降维方法 |
CN106127297B (zh) | 2016-06-02 | 2019-07-12 | 中国科学院自动化研究所 | 基于张量分解的深度卷积神经网络的加速与压缩方法 |
US9959498B1 (en) | 2016-10-27 | 2018-05-01 | Google Llc | Neural network instruction set architecture |
US10360163B2 (en) | 2016-10-27 | 2019-07-23 | Google Llc | Exploiting input data sparsity in neural network compute units |
US10175980B2 (en) | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
US10733505B2 (en) | 2016-11-10 | 2020-08-04 | Google Llc | Performing kernel striding in hardware |
US10037490B2 (en) | 2016-12-13 | 2018-07-31 | Google Llc | Performing average pooling in hardware |
CN106529511B (zh) | 2016-12-13 | 2019-12-10 | 北京旷视科技有限公司 | 图像结构化方法及装置 |
US20180189675A1 (en) | 2016-12-31 | 2018-07-05 | Intel Corporation | Hardware accelerator architecture and template for web-scale k-means clustering |
US11164071B2 (en) | 2017-04-18 | 2021-11-02 | Samsung Electronics Co., Ltd. | Method and apparatus for reducing computational complexity of convolutional neural networks |
US10572409B1 (en) | 2018-05-10 | 2020-02-25 | Xilinx, Inc. | Sparse matrix processing circuitry |
-
2016
- 2016-10-27 US US15/336,066 patent/US10360163B2/en active Active
-
2017
- 2017-03-22 US US15/465,774 patent/US9818059B1/en active Active
- 2017-08-22 KR KR1020237014253A patent/KR102679563B1/ko active IP Right Grant
- 2017-08-22 JP JP2019523062A patent/JP7134955B2/ja active Active
- 2017-08-22 EP EP17761665.3A patent/EP3533003B1/en active Active
- 2017-08-22 KR KR1020247021189A patent/KR20240105502A/ko active Search and Examination
- 2017-08-22 EP EP22153266.6A patent/EP4044071A1/en active Pending
- 2017-08-22 SG SG11201903787YA patent/SG11201903787YA/en unknown
- 2017-08-22 WO PCT/US2017/047992 patent/WO2018080624A1/en active Search and Examination
- 2017-08-22 KR KR1020227015590A patent/KR102528517B1/ko active Application Filing
- 2017-08-22 KR KR1020197012085A patent/KR102397415B1/ko active IP Right Grant
- 2017-09-06 DE DE202017105363.6U patent/DE202017105363U1/de active Active
- 2017-09-06 DE DE102017120452.0A patent/DE102017120452A1/de not_active Ceased
- 2017-09-29 CN CN201710908258.5A patent/CN108009626B/zh active Active
- 2017-09-29 CN CN202210121408.9A patent/CN114595803A/zh active Pending
-
2018
- 2018-10-25 HK HK18113685.3A patent/HK1254700A1/zh unknown
-
2019
- 2019-07-17 US US16/514,562 patent/US11106606B2/en active Active
-
2021
- 2021-08-24 US US17/410,071 patent/US11816045B2/en active Active
-
2022
- 2022-08-31 JP JP2022138360A patent/JP7469407B2/ja active Active
-
2023
- 2023-11-09 US US18/505,662 patent/US20240289285A1/en active Pending
-
2024
- 2024-04-04 JP JP2024060830A patent/JP2024096786A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2018080624A1 (en) | 2018-05-03 |
US20220083480A1 (en) | 2022-03-17 |
EP4044071A1 (en) | 2022-08-17 |
US20200012608A1 (en) | 2020-01-09 |
US20180121377A1 (en) | 2018-05-03 |
CN114595803A (zh) | 2022-06-07 |
US20240289285A1 (en) | 2024-08-29 |
US9818059B1 (en) | 2017-11-14 |
KR20240105502A (ko) | 2024-07-05 |
EP3533003A1 (en) | 2019-09-04 |
DE202017105363U1 (de) | 2017-12-06 |
US10360163B2 (en) | 2019-07-23 |
CN108009626A (zh) | 2018-05-08 |
US11816045B2 (en) | 2023-11-14 |
KR102397415B1 (ko) | 2022-05-12 |
JP2022172258A (ja) | 2022-11-15 |
KR20220065898A (ko) | 2022-05-20 |
JP2020500365A (ja) | 2020-01-09 |
US11106606B2 (en) | 2021-08-31 |
JP7469407B2 (ja) | 2024-04-16 |
HK1254700A1 (zh) | 2019-07-26 |
DE102017120452A1 (de) | 2018-05-03 |
KR20190053262A (ko) | 2019-05-17 |
KR20230061577A (ko) | 2023-05-08 |
KR102528517B1 (ko) | 2023-05-04 |
KR102679563B1 (ko) | 2024-07-01 |
JP7134955B2 (ja) | 2022-09-12 |
JP2024096786A (ja) | 2024-07-17 |
EP3533003B1 (en) | 2022-01-26 |
SG11201903787YA (en) | 2019-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108009626B (zh) | 利用神经网络计算单元中的输入数据稀疏 | |
Zhang et al. | BoostGCN: A framework for optimizing GCN inference on FPGA | |
US11507382B2 (en) | Systems and methods for virtually partitioning a machine perception and dense algorithm integrated circuit | |
US11880768B2 (en) | Method and apparatus with bit-serial data processing of a neural network | |
EP3528181B1 (en) | Processing method of neural network and apparatus using the processing method | |
US20190258306A1 (en) | Data processing system and method | |
US20210192315A1 (en) | Method and apparatus with neural network convolution operation | |
Roohi et al. | Rnsim: Efficient deep neural network accelerator using residue number systems | |
Kuppannagari et al. | Energy performance of fpgas on perfect suite kernels | |
CN111507456A (zh) | 具有卷积神经网络处理的方法和装置 | |
CN112132254A (zh) | 利用微神经元网络计算中的输入激活数据稀疏 | |
GB2556413A (en) | Exploiting input data sparsity in neural network compute units | |
US20220180187A1 (en) | Method and apparatus for performing deep learning operations | |
US20200311521A1 (en) | Loop-based execution for efficient deep learning | |
TWI842584B (zh) | 電腦實施方法及電腦可讀儲存媒體 | |
Ollivier et al. | FPIRM: Floating-point Processing in Racetrack Memories | |
WO2023224614A1 (en) | Exploiting data sparsity at a machine-learning hardware accelerator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
CB02 | Change of applicant information |
Address after: American California Applicant after: Google limited liability company Address before: American California Applicant before: Google Inc. |
|
CB02 | Change of applicant information | ||
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: 1254700 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |