CN112132254A - 利用微神经元网络计算中的输入激活数据稀疏 - Google Patents

利用微神经元网络计算中的输入激活数据稀疏 Download PDF

Info

Publication number
CN112132254A
CN112132254A CN201910552015.1A CN201910552015A CN112132254A CN 112132254 A CN112132254 A CN 112132254A CN 201910552015 A CN201910552015 A CN 201910552015A CN 112132254 A CN112132254 A CN 112132254A
Authority
CN
China
Prior art keywords
input
activation
input activation
zero
value
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
Application number
CN201910552015.1A
Other languages
English (en)
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangsu Dongyun Cloud Computing Co ltd
Original Assignee
Jiangsu Dongyun Cloud Computing Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jiangsu Dongyun Cloud Computing Co ltd filed Critical Jiangsu Dongyun Cloud Computing Co ltd
Priority to CN201910552015.1A priority Critical patent/CN112132254A/zh
Publication of CN112132254A publication Critical patent/CN112132254A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Memory System (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 NetworkComputeTile″的美国专利申请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提供一4或多个输入激活到输入激活总线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 (10)

1.一种计算机实现的方法,包括:
由计算设备接收多个输入激活,所述多个输入激活至少部分从所述计算设备外部的源提供;
由所述计算设备的控制器确定所述多个输入激活中的每个输入激活是否具有零值或非零值之一;
在所述计算设备的存储器组中存储所述多个输入激活中的至少一个;
由所述控制器生成索引,所述索引包括具有非零值的输入激活值的一个或多个存储器地址位置;以及
由所述控制器从所述存储器组提供至少一个输入激活到数据总线上,所述数据总线能够由计算阵列的一个或多个单元访问,其中,所述至少一个激活至少部分从与所述索引相关联的存储器地址位置提供。
2.如权利要求1所述的方法,其中,所述索引基于包括多个位的位图来创建,并且其中,所述位图的每个位指示非零输入激活值和零输入激活值中的一个。
3.如权利要求1所述的方法,进一步包括:提供具有非零值的第一输入激活以由所述计算阵列的至少一个单元使用所述非零值执行计算,并且随后提供具有零值的第二输入激活,以及阻止在所述计算阵列的至少一个单元中否则将使用所述零值来执行的计算。
4.如权利要求3所述的方法,其中,所述阻止是响应于所述控制器确定所述第二输入激活是从不与所述索引相关联的存储器地址位置提供而发生的。
5.如权利要求4所述的方法,进一步包括:由所述控制器检测所述第二输入激活是从不与所述索引相关联的存储器地址位置提供的,以及响应于所述检测,提供控制信号给所述计算阵列的至少一个单元以阻止与所述第二输入激活的所述零值相关联的乘法操作。
6.如权利要求1所述的方法,进一步包括:由所述控制器向所述计算阵列的第一单元映射使用第一输入激活的张量计算的第一部分以及向与所述第一单元不同的所述计算阵列的第二单元映射也使用所述第一输入激活的所述张量计算的第二部分。
7.如权利要求1所述的方法,进一步包括,顺序地提供单个输入激活到所述数据总线上,所述单个输入激活从与所述索引相关联的存储器地址位置被访问和被选择。
8.如权利要求1所述的方法,其中,所述提供进一步包括:不提供具有零值的输入激活。
9.存储指令的一个或多个机器可读存储设备,所述指令在由计算设备的一个或多个处理设备执行时使所述一个或多个处理设备执行操作,所述操作包括:
接收多个输入激活,所述多个输入激活至少部分从所述计算设备外部的源提供;
确定所述多个输入激活中的每个输入激活是否具有零值或非零值之一;
在所述计算设备的存储器组中存储所述多个输入激活中的至少一个;
由所述计算设备的所述控制器生成索引,所述索引包括具有非零值的输入激活值的一个或多个存储器地址位置;以及
由所述控制器从所述存储器组提供至少一个输入激活到数据总线上,所述数据总线能够由计算阵列的一个或多个单元访问,其中,所述至少一个输入激活至少部分从与所述索引相关联的存储器地址位置提供。
10.如权利要求9所述的一个或多个机器可读存储设备,其中,所述索引基于包括多个位的位图来创建,并且其中,所述位图的每个位指示非零输入激活值和零输入激活值中的一个。
CN201910552015.1A 2019-06-24 2019-06-24 利用微神经元网络计算中的输入激活数据稀疏 Pending CN112132254A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910552015.1A CN112132254A (zh) 2019-06-24 2019-06-24 利用微神经元网络计算中的输入激活数据稀疏

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910552015.1A CN112132254A (zh) 2019-06-24 2019-06-24 利用微神经元网络计算中的输入激活数据稀疏

Publications (1)

Publication Number Publication Date
CN112132254A true CN112132254A (zh) 2020-12-25

Family

ID=73849633

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910552015.1A Pending CN112132254A (zh) 2019-06-24 2019-06-24 利用微神经元网络计算中的输入激活数据稀疏

Country Status (1)

Country Link
CN (1) CN112132254A (zh)

Similar Documents

Publication Publication Date Title
CN108009626B (zh) 利用神经网络计算单元中的输入数据稀疏
US11775313B2 (en) Hardware accelerator for convolutional neural networks and method of operation thereof
US11507382B2 (en) Systems and methods for virtually partitioning a machine perception and dense algorithm integrated circuit
Zhang et al. BoostGCN: A framework for optimizing GCN inference on FPGA
US11880768B2 (en) Method and apparatus with bit-serial data processing of a neural network
US10545559B2 (en) Data processing system and method
EP3528181B1 (en) Processing method of neural network and apparatus using the processing method
Roohi et al. Rnsim: Efficient deep neural network accelerator using residue number systems
CN112132254A (zh) 利用微神经元网络计算中的输入激活数据稀疏
GB2556413A (en) Exploiting input data sparsity in neural network compute units
US20200311521A1 (en) Loop-based execution for efficient deep learning
CN114595811A (zh) 用于执行深度学习操作的方法和设备
Ollivier et al. FPIRM: Floating-point Processing in Racetrack Memories
TWI842584B (zh) 電腦實施方法及電腦可讀儲存媒體
US20230004352A1 (en) Hardware architecture for processing tensors with complementary sparsity
WO2023224614A1 (en) Exploiting data sparsity at a machine-learning hardware accelerator
TW202414279A (zh) 用於整個激發向量之性質之快速估計之學習行權重

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20201225