CN110073370A - 用于稀疏神经网络的低功率架构 - Google Patents
用于稀疏神经网络的低功率架构 Download PDFInfo
- Publication number
- CN110073370A CN110073370A CN201780076565.XA CN201780076565A CN110073370A CN 110073370 A CN110073370 A CN 110073370A CN 201780076565 A CN201780076565 A CN 201780076565A CN 110073370 A CN110073370 A CN 110073370A
- Authority
- CN
- China
- Prior art keywords
- activation
- label value
- label
- zero
- weight
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
-
- 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
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
- Power Sources (AREA)
- Complex Calculations (AREA)
Abstract
提供了一种用于降低神经网络的功耗的方法、计算机可读介质和装置。该装置可以从标签存储中取回用于神经网络中的权重的第一标签值或者用于神经网络中的激活的第二标签值的至少一个标签值。第一标签值可以指示权重是否为零,而第二标签值可以指示激活是否为零。该权重和激活将作为操作数对被加载到乘法器‑累加器单元的乘法器。该装置可以确定该至少一个标签值是否指示零值。该装置可以在该至少一个标签值指示零值时禁止将该权重和激活加载到该乘法器。该装置可以禁止对零值激活进行更新。
Description
相关申请的交叉引用
本申请要求于2016年12月13日提交的题为“LOW-POWER ARCHITECTURE FORSPARSE NEURAL NETWORK(用于稀疏神经网络的低功率架构)”的美国专利申请No.15/377,858的权益,其通过援引全部明确纳入于此。
背景
领域
本公开一般涉及用于人工神经网络的计算系统,且更具体而言涉及用于深度神经网络的硬件加速器。
背景技术
可包括一群互连的人工神经元的人工神经网络是一种计算设备或者可表示将由计算设备执行的方法。人工神经网络可具有生物学神经网络中的对应的结构和/或功能。然而,人工神经网络可为其中传统计算技术可能是麻烦的、不切实际的、或不胜任的某些应用提供创新且有用的计算技术。由于人工神经网络可以从观察中推断出函数,因此这样的网络在因任务或数据的复杂度使得通过常规技术来设计该函数较为麻烦的应用中可能是特别有用的。
在计算中,硬件加速是使用计算机硬件来比用在较通用的CPU上运行的软件更有可能地更高效地执行某些功能。执行加速的硬件可被称为硬件加速器。硬件加速器可通过允许较大并发性、具有用于算法中的临时性的特定数据路径、以及可能降低指令控制的开销来改进特定算法的执行。
卷积神经网络是一种前馈人工神经网络。卷积神经网络可包括神经元集合,其中每个神经元具有感受野并且共同地拼出一输入空间。卷积神经网络(CNN)具有众多应用。具体而言,CNN已被广泛使用于模式识别和分类领域。
深度卷积神经网络(DCN)已经在分类问题(例如,图像识别)中显示了很好的性能。专用硬件加速器可被构建以启用DCN技术在像移动计算和云计算等领域中的各种应用。DCN中的功率密集操作可以是矩阵-矩阵乘法和卷积。
若干技术可以降低计算开销并改进DCN分类器的质量。然而,此类技术可以导致乘法操作数的增加的稀疏性(例如,由于降低数目的非零操作数导致的较高百分比的零值操作数)。例如,权重修剪可导致DCN中约30-70%的稀疏性。使用经矫正线性单元(ReLU)激活可以引起DCN中约50%的稀疏性。DCN的丢出(仅用于训练)可导致DCN中25-75%的稀疏性。由权重修剪引起的稀疏性可以是静态稀疏性,而由ReLU和丢出引起的稀疏性可以是动态稀疏性。具有高百分比的零值操作数的神经网络可被称为稀疏神经网络。
概述
以下给出了一个或多个方面的简要概述以提供对此类方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在标识出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是以简化形式给出一个或多个方面的一些概念以作为稍后给出的更详细描述之序言。
若干技术可以降低计算开销并改进DCN分类器的质量。然而,这些技术可导致乘法操作数的增加的稀疏性。硬件加速器设计可以将稀疏性纳入考虑以降低功耗。例如,硬件加速器可以被配置成避免取回零值操作数、避免与零值操作数相乘,以及避免累加零值操作数。
在本公开的一方面,提供了一种用于降低神经网络的功耗的方法、计算机可读介质和装置。该装置可包括硬件加速器。该装置可以从标签存储取回用于神经网络中的权重的第一标签值或者用于神经网络中的激活的第二标签值的至少一个标签值。第一标签值可以指示权重是否为零,而第二标签值可以指示激活是否为零。该权重和激活可以作为操作数对被加载到乘法器-累加器(MAC)单元的乘法器。该装置可以确定该至少一个标签值是否指示零值。该装置可以在该至少一个标签值指示零值时禁止将该权重和激活加载到乘法器。该装置可以禁止零值激活的更新。
为了达成前述及相关目的,这一个或多个方面包括在下文充分描述并在权利要求中特别指出的特征。以下描述和附图详细阐述了这一个或多个方面的某些解说性特征。然而,这些特征仅仅是指示了可采用各个方面的原理的各种方式中的若干种,并且本描述旨在涵盖所有此类方面及其等效方案。
附图简述
图1是解说根据本公开的各方面的神经网络的示图。
图2是解说根据本公开的各方面的示例性深度卷积网络(DCN)的框图。
图3是解说降低稀疏神经网络的功耗的设备的示例的示图。
图4是解说阻止操作数存储的输出线翻转的数据选通电路的示例的示图。
图5是解说当给乘法器的操作数中的至少一者为零时绕过乘法器和加法器的经修改的乘法器-累加器单元的示例的示图。
图6是降低神经网络的功耗的方法的流程图。
图7是解说示例性装置中的不同装置/组件之间的数据流的概念性数据流图。
图8是解说采用处理系统的装置的硬件实现的示例的示图。
详细描述
以下结合附图阐述的详细描述旨在作为各种配置的描述,而无意表示可实践本文所描述的概念的仅有配置。本详细描述包括具体细节以提供对各种概念的透彻理解。然而,对于本领域技术人员将显而易见的是,没有这些具体细节也可以实践这些概念。在一些实例中,以框图形式示出众所周知的结构和组件以便避免淡化此类概念。
现在将参照各种装置和方法给出用于人工神经网络的计算系统的若干方面。这些装备和方法将在以下详细描述中进行描述并在附图中由各种框、组件、电路、过程、算法等(统称为“元素”)来解说。这些元素可使用电子硬件、计算机软件、或其任何组合来实现。此类元素是实现成硬件还是软件取决于具体应用和加诸于整体系统上的设计约束。
作为示例,元素、或元素的任何部分、或者元素的任何组合可被实现为包括一个或多个处理器的“处理系统”。处理器的示例包括:微处理器、微控制器、图形处理单元(GPU)、中央处理单元(CPU)、应用处理器、数字信号处理器(DSP)、精简指令集计算(RISC)处理器、片上系统(SoC)、基带处理器、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、状态机、门控逻辑、分立的硬件电路、以及被配置成执行本公开通篇描述的各种功能性的其他合适硬件。处理系统中的一个或多个处理器可以执行软件。软件应当被宽泛地解释成意为指令、指令集、代码、代码段、程序代码、程序、子程序、软件组件、应用、软件应用、软件包、例程、子例程、对象、可执行件、执行的线程、规程、函数等,无论其是用软件、固件、中间件、微代码、硬件描述语言、还是其他术语来述及皆是如此。
相应地,在一个或多个示例实施例中,所描述的功能可以在硬件、软件、或其任何组合中实现。如果在软件中实现,则各功能可作为一条或多条指令或代码存储或编码在计算机可读介质上。计算机可读介质包括计算机存储介质。存储介质可以是可由计算机访问的任何可用介质。作为示例而非限制,此类计算机可读介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、光盘存储、磁盘存储、其他磁性存储设备、上述类型的计算机可读介质的组合、或能够被用于存储可被计算机访问的指令或数据结构形式的计算机可执行代码的任何其他介质。
人工神经网络可以由三种类型的参数来定义:1)不同神经元层之间的互连模式;2)用于更新各互连的权重的学习过程;3)将神经元的经加权输入转换成其输出激活的激活函数。神经网络可被设计成具有各种连通性模式。在前馈网络中,信息从较低层被传递到较高层,其中给定层中的每个神经元向更高层中的神经元进行传达。可在前馈网络的相继层中构建阶层式表示。神经网络还可具有回流或反馈(也被称为自顶向下(top-down))连接。在回流连接中,来自给定层中的神经元的输出可被传达给相同层中的另一神经元。回流架构可有助于识别跨越不止一个按顺序递送给该神经网络的输入数据组块的模式。从给定层中的神经元到较低层中的神经元的连接被称为反馈(或自顶向下)连接。当高层级概念的识别可辅助辨别输入的特定低层级特征时,具有许多反馈连接的网络可能是有助益的。
图1是解说根据本公开的各方面的神经网络的示图。如图1所示,神经网络的各层之间的连接可以是全连接的102或局部连接的104。在全连接网络102中,第一层中的神经元可将它的输出传达给第二层中的每个神经元,从而第二层中的每个神经元将从第一层中的每个神经元接收输入。替换地,在局部连接网络104中,第一层中的神经元可连接至第二层中有限数目的神经元。卷积网络106可以是局部连接的,并且被进一步配置成使得与针对第二层中每个神经元的输入相关联的连接强度被共享(例如,108)。更一般化地,网络的局部连接层可被配置成使得一层中的每个神经元将具有相同或相似的连通性模式,但其连接强度可具有不同的值(例如,110、112、114和116)。局部连接的连通性模式可能在更高层中产生空间上相异的感受野,这是由于给定区域中的更高层神经元可接收到通过训练被调谐为到网络的总输入的受限部分的性质的输入。
局部连接的神经网络可能非常适合于其中输入的空间位置有意义的问题。例如,被设计成识别来自车载摄像机的视觉特征的网络100可发展具有不同性质的高层神经元,这取决于它们与图像下部关联还是与图像上部关联。例如,与图像下部相关联的神经元可学习以识别车道标记,而与图像上部相关联的神经元可学习以识别交通信号灯、交通标志等。
深度卷积网络(DCN)可以用监督式学习来训练。在训练期间,可向DCN呈递图像(诸如限速标志的经裁剪图像126),并且可随后计算“前向传递(forward pass)”以产生输出122。输出122可以是对应于特征(诸如“标志”、“60”、和“100”)的值向量。网络设计者可能希望DCN在输出特征向量中针对其中一些神经元输出高得分,例如与经训练网络100的输出122中所示的“标志”和“60”对应的那些神经元。在训练之前,DCN产生的输出很可能是不正确的,并且由此可计算实际输出与目标输出之间的误差。DCN的权重可随后被调整以使得DCN的输出得分与目标更紧密地对准。
为了调整权重,学习算法可为权重计算梯度向量。该梯度可指示在权重被略微调整情况下误差将增加或减少的量。在顶层,该梯度可直接对应于连接倒数第二层中的活化神经元与输出层中的神经元的权重的值。在较低层,该梯度可取决于权重的值以及所计算出的较高层的误差梯度。权重可随后被调整以减小误差。这种调整权重的方式可被称为“后向传播”,因为其涉及在神经网络中的“后向传递(backward pass)”。
在实践中,权重的误差梯度可能是在少量示例上计算的,从而计算出的梯度近似于真实误差梯度。这种近似方法可被称为随机梯度下降法。随机梯度下降法可被重复,直到整个系统可达成的误差率已停止下降或直到误差率已达到目标水平。
在学习之后,DCN可被呈递新图像126并且在网络中的前向传递可产生输出122,其可被认为是该DCN的推断或预测。
深度卷积网络(DCN)是卷积网络的网络,其配置有附加的池化和归一化层。DCN已在许多任务上达成现有最先进的性能。DCN可使用监督式学习来训练,其中输入和输出目标两者对于许多典范是已知的并被用于通过使用梯度下降法来修改网络的权重。
DCN可以是前馈网络。另外,如上所述,从DCN的第一层中的神经元到下一更高层中的神经元群的连接跨第一层中的神经元被共享。DCN的前馈和共享连接可被利用于进行快速处理。DCN的计算负担可比例如类似大小的包括回流或反馈连接的神经网络的计算负担小得多。
卷积网络的每一层的处理可被认为是空间不变模版或基础投影。如果输入首先被分解成多个通道,诸如彩色图像的红色、绿色和蓝色通道,那么在该输入上训练的卷积网络可被认为是三维的,其具有沿着该图像的轴的两个空间维度以及捕捉颜色信息的第三维度。卷积连接的输出可被认为在后续层118和120中形成特征图,该特征图(例如,120)中的每个元素从先前层(例如,118)中一定范围的神经元以及从该多个通道中的每一个通道接收输入。特征图中的值可以用非线性(诸如矫正max(0,x))进一步处理。来自毗邻神经元的值可被进一步池化(这对应于降采样)并可提供附加的局部不变性以及维度缩减。还可通过特征图中神经元之间的侧向抑制来应用归一化,其对应于白化。
图2是解说示例性深度卷积网络200的框图。深度卷积网络200可包括多个基于连通性和权重共享的不同类型的层。如图2所示,该示例性深度卷积网络200包括多个卷积块(例如,C1和C2)。每个卷积块可配置有卷积层、归一化层(LNorm)、和池化层。卷积层可包括一个或多个卷积滤波器,其可被应用于输入数据以生成特征图。尽管仅示出了两个卷积块,但本公开不限于此,而是,根据设计偏好,任何数目的卷积块可被包括在深度卷积网络200中。归一化层可被用于对卷积滤波器的输出进行归一化。例如,归一化层可提供白化或侧向抑制。池化层可提供在空间上的降采样聚集以实现局部不变性和维度缩减。
例如,深度卷积网络的平行滤波器组可任选地基于高级RISC机(ARM)指令集被加载到SOC的CPU或GPU上以达成高性能和低功耗。在替换实施例中,平行滤波器组可被加载到SOC的DSP或图像信号处理器(ISP)上。另外,DCN可访问可存在于SOC上的其他处理块,诸如专用于传感器和导航的处理块。
深度卷积网络200还可包括一个或多个全连接层(例如,FC1和FC2)。深度卷积网络200可进一步包括逻辑回归(LR)层。深度卷积网络200的每一层之间是要被更新的权重(未示出)。每一层的输出可以用作深度卷积网络200中后续层的输入以从第一卷积块C1处提供的输入数据(例如,图像、音频、视频、传感器数据和/或其他输入数据)学习阶层式特征表示。
网络100或深度卷积网络200可由通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件(PLD)、分立的门或晶体管逻辑、分立的硬件组件、由处理器执行的软件模块、或其任何组合来仿真。网络100或深度卷积网络200可以被用在大范围的应用中,诸如图像和模式识别、机器学习、电机控制、及类似应用等。神经网络100或深度卷积网络200中的每一神经元可被实现为神经元电路。
在某些方面,网络100或深度卷积网络200可被配置成通过将神经网络中的权重和激活的稀疏性纳入考虑来降低功耗。例如,网络100或深度卷积网络200可以被配置成避免取回零值操作数、避免与零值操作数相乘,以及避免累加零值操作数,如将在下文参考图3-8描述的。
图3是解说降低稀疏神经网络的功耗的设备300的示例的示图。设备300可以是任何计算设备。在一种配置中,设备300可包括硬件加速器,该硬件加速器被配置成避免取回零值操作数、避免与零值操作数相乘,以及避免累加零值操作数。如图3中所解说,设备300可包括若干地址生成器302、若干加载单元304、若干计算单元314、非线性块310、存储单元312、操作数存储308、标签存储306、和三个数据选通电路320、322、324。
计算单元314的每一者可以包括计算两个操作数的乘积并将该乘积添加到累加器的乘法器-累加器(MAC)单元,其中所计算的操作数乘积被累加并储存。在一种配置中,计算单元314可为神经网络执行计算/演算。MAC单元可以包括乘法器,后跟加法器和储存加法器的输出的累加器寄存器。乘法器的输出可被提供给加法器的第一输入。累加器寄存器的输出可以被馈送回加法器的第二输入,使得在每个时钟周期上,乘法器的输出被添加到累加器寄存器。在一种配置中,乘法器可以用组合逻辑来实现。
操作数存储308可以是用于储存要被加载到计算单元314的乘法器的操作数的存储器或高速缓存。在一种配置中,对于每一操作数对,第一操作数可以是神经网络的权重,且第二操作数可以是神经网络的激活。
标签存储306可以是用于储存操作数的标签的存储器或高速缓存。被储存在操作数存储308中的每个操作数可以具有被储存在标签存储306中的对应标签。每个标签可以指示操作数存储308中的对应操作数是否为零。在一种配置中,标签存储306中的每个标签可以占用单个位。该单个位的第一值(例如,“1”)可以指示操作数存储308中的对应操作数是零,并且该单个位的第二值(例如,“0”)可以指示操作数存储308中的对应操作数不为零。在一种配置中,标签存储306和操作数存储308可以驻留在不同的物理存储器或高速缓存中。在一种配置中,标签存储306和操作数存储308可以驻留在相同的物理存储器或高速缓存中。例如,用于储存操作数的一个或多个字节中的一个位可以被保留用于储存对应于该操作数的标签。在一种配置中,操作数存储308中的操作数和标签存储306中的对应标签可以共享同一地址。例如,一个地址可以指向存储器或高速缓存中的一个或多个字节,该一个或多个字节的一个位可被保留用于储存标签,而其余的位可被保留用于储存对应操作数。标签存储306的区域或功率开销可以是低的。例如,每个操作数的标签可占用存储空间的1位。作为结果,访问该标签所消耗的功率可以是低的。
加载单元304可被配置成将操作数从操作数存储308加载到计算单元314。具体而言,加载单元(例如,304a、304b或304c)可以将操作数对从操作数存储308加载到计算单元314内的乘法器。
非线性块310可被配置成接收计算单元314的输出并对计算单元314的输出执行非线性操作。非线性操作可以是其输出不与输入直接成比例的操作。在一种配置中,非线性块310可以是经校正线性单元(ReLU)。在一种配置中,非线性块310可为神经网络的神经元执行激活功能的至少一部分。
存储单元312可以接收非线性块310的输出并将非线性块310的该输出储存到操作数存储308中。在一种配置中,非线性块310的输出可包括神经网络的经更新激活。
地址生成器302可被配置成生成用于访问操作数存储308和/或标签存储306的地址。在一种配置中,地址生成器(例如,302a)可为要被加载到计算单元314内的乘法器的操作数对生成地址,并将这些地址发送到加载单元(例如,304a),加载单元可基于这些地址从操作数存储308加载该操作数对。在一种配置中,地址生成器(例如,302a)还可以为与操作数对相对应的一对标签生成地址,并且基于这些地址从标签存储306读取该对标签。在一种配置中,地址生成器(例如,302d)可为非线性块310的输出生成地址,并将该地址发送给存储单元312,存储单元312可以基于该地址将非线性块310的输出储存到操作数存储308。
数据选通电路320、322、324中的每一者可以被放置在操作数存储308的输出与加载单元(例如,304a、304b或304c)的输入之间。每个数据选通电路(例如,320)可以被配置成在操作数对的至少一个操作数为零的情况下阻止操作数存储308的用于该操作数对的两个操作数的输出线进行翻转。为了确定操作数对的至少一个操作数是否为零,标签存储306中与该操作数对相对应的两个标签中的一者或两者可以在该操作数对在操作数存储308中被访问之前被访问。如果与操作数对相对应的两个标签中的至少一者指示零值,则数据选通电路(例如,320)可以阻止用于这两个操作数的输出线进行翻转,从而节省这些输出线上以及该操作数对本应被加载到的MAC单元上的功率。
在一种配置中,对于要由加载单元(例如,304a)加载到计算单元314内的乘法器的每个操作数对,数据选通电路(例如,320)可以在操作数对从操作数存储308中被取回之前从标签存储306读取与该操作数对相对应的两个标签中的一者或两者。如果与操作数对相对应的两个标签中的至少一者指示零值(这意味着该操作数对的至少一者为零),则数据选通电路(例如,320)可以阻止用于该操作数对的这两个操作数的输出线进行翻转,从而节省用于将该操作数对从操作数存储308取到计算单元的功率/能量。
此外,计算单元可以在先前累加的值从MAC单元的累加器寄存器(未示出)中被取回之前从标签存储306读取与该操作数对相对应的这两个标签中的一者或两者。如果与操作数对相对应的这两个标签中的至少一者指示零值,则MAC单元可以阻止该累加器寄存器的输出线或该累加器寄存器的输出进行翻转,从而节省用于从累加器寄存器中取回先前累加的值的功率/能量。MAC单元还可以在与操作数对相对应的这两个标签中的至少一者指示零值的情况下丢弃MAC单元的加法器的输出。替代地,MAC单元可以在与操作数对相对应的这两个标签中的至少一者指示零值时使用先前累加的值作为新的累加值。在一种配置中,MAC单元可以在与操作数对相对应的这两个标签中的至少一者指示零值的情况下绕过乘法器和加法器,从而节省执行这些计算的功率。MAC单元的细节将在下文参考图5更详细地描述。
在一种配置中,当操作数在操作数存储308中被储存或更新时,对应标签可以在标签存储306中被确定并储存或被更新。对应标签可指示操作数是否为零。在一种配置中,如果操作数为零,则与该操作数相对应的标签可以在标签存储306中被储存或更新以指示该操作数为零,而该操作数的值可以不在操作数存储308中被储存或更新,从而节省用于在操作数存储308中储存或更新该操作数的功率。在一种配置中,在操作数对的第一操作数在操作数存储308中被储存或更新之前,该操作数对的第二操作数的对应标签可以从标签存储306被读取。如果第二操作数的对应标签指示第二操作数为零,则第一操作数的值可以不在操作数存储308中被储存或更新,从而节省用于在操作数存储308中储存或更新第一操作数的功率。
例如,当存储单元312接收非线性块310的输出时,存储单元312可以确定非线性块310的输出为零。如果非线性块310的输出为零,则存储单元312可以在标签存储306中储存或更新用于与非线性块310的输出相对应的第一操作数的第一标签,同时绕过在操作数存储308中储存或更新第一操作数。如果非线性块310的输出不为零,则存储单元312可以确定与第一操作数配对的第二操作数的第二标签是否指示第二操作数是零。如果第二操作数为零,则存储单元312可以在标签存储306中储存或更新用于与非线性块310的输出相对应的第一操作数的第一标签,同时绕过在操作数存储308中储存或更新第一操作数。如果第一操作数和第二操作数两者都不为零,则存储单元312可以在标签存储306中储存或更新用于与非线性块310的输出相对应的第一操作数的第一标签,并且在操作数存储308中储存或更新第一操作数。
图4是解说阻止操作数存储406的输出线进行翻转的数据选通电路402的示例的示图400。在一种配置中,操作数存储406可以是上面参考图3描述的操作数存储308,并且数据选通电路402可以是上面参考图3描述的数据选通电路320、322或324。在一种配置中,数据选通电路402可以是寄存器(例如,触发器)。在一种配置中,数据选通电路402可以是三态缓冲器。
如所解说的,数据选通电路402可以从操作数存储406接收操作数Rm。操作数Rm可以通过数据选通电路402传播,并且作为经选通操作数Rm’输出。数据选通电路402还可以接收使能信号408。操作数Rm和另一个操作数Rn可以形成要被加载到MAC单元的乘法器的操作数对。使能信号408可以取决于这两个操作数Rm和Rn是否都是非零的。在一种配置中,如果这两个操作数Rm和Rn都是非零的,则使能信号408可被设置为“1”,从而使经选通操作数Rm’能够翻转(例如,通过使选通电路输出能够翻转)。如果操作数Rm和Rn中的至少一者为零,则使能信号408可以被设置为“0”,从而阻止经选通操作数Rm’进行翻转。
在一种配置中,为了确定这两个操作数Rm和Rn是否都是非零的,与操作数Rm和Rn相对应的这两个标签中的一者或两者从标签存储306被读取,如上面参考图3所描述。在一种配置中,如果操作数Rm和Rn中的至少一者为零,则经选通操作数Rm’可以不翻转,从而节省用于取回操作数Rm的功率。
图5是解说当给乘法器的至少一个操作数为零时绕过乘法器和加法器的经修改的乘法器-累加器单元500的示例的示图。在该示例中,MAC单元500可以包括乘法器502、加法器504、选通电路506、和复用器510。
乘法器502可以接收两个操作数Rm’和Rn’。在一种配置中,操作数Rm’和Rn’中的每一者可以是上面参考图4描述的数据选通电路402的输出。在这样的配置中,操作数Rm’和Rn’可以是操作数Rm和Rn的经选通值。乘法器502可以输出操作数Rm’和Rn’的乘积。
在一种配置中,选通电路506可以是寄存器(例如,触发器)。在一种配置中,选通电路506可以是三态缓冲器。如所解说的,选通电路506可以从累加器寄存器(未示出)接收先前累加的值Rd。先前累加的值Rd可以通过选通电路506传播并且作为经选通累加值Rd’输出。选通电路506还可以接收使能信号508。使能信号508可以取决于这两个操作数Rm和Rn是否都是非零的。在一种配置中,如果这两个操作数Rm和Rn都是非零的,则使能信号508可被设置为“1”,从而使经选通累加值Rd’能够进行翻转或传播。如果操作数Rm和Rn中的至少一者为零,则使能信号508可以被设置为“0”,从而阻止经选通累加值Rd’进行翻转或传播。在一种配置中,使能信号508可以等效于上面参考图4所描述的使能信号408。
在一种配置中,为了确定这两个操作数Rm和Rn是否都是非零的,与操作数Rm和Rn相对应的这两个标签中的一者或两者从标签存储306被读取,如上面参考图3所描述。在一种配置中,如果操作数Rm和Rn中的至少一者为零,则经选通累加值Rd’可以不进行翻转或传播,从而节省用于取回先前累加的值Rd的功率。
加法器504从乘法器502的输出接收一个输入并且从选通电路506的输出接收另一输入,并且输出经选通累加值Rd’与操作数Rm’和Rn’的乘积之和。
复用器510可以接收先前累加的值Rd作为第一输入,并且接收加法器504的输出作为第二输入。复用器510可以接收使能信号508作为控制信号。在一种配置中,如果使能信号508为“1”(这意味着操作数Rm和Rn两者是非零的),则复用器510可以选择加法器504的输出作为复用器510的输出。如果使能信号508为“0”(这意味着操作数Rm和Rn中的至少一者为零),则复用器510可以选择先前累加的值Rd作为复用器510的输出。复用器510的输出可以作为新的累加值被储存在累加器寄存器(未示出)中。因此,如果操作数Rm和Rn中的至少一者为零,则MAC单元500可以绕过乘法器502和加法器504,并且选择先前累加的值Rd作为新的累加值。
图6是降低神经网络的功耗的方法的流程图600。在一种配置中,该神经网络可以是深度卷积神经网络(DCN)。该方法可由计算设备(例如,设备300或设备702/702')执行。在602处,设备可以任选地确定用于神经网络中的权重的第一标签值和用于神经网络中的激活的第二标签值。第一标签值可以指示权重是否为零,而第二标签值可以指示激活是否为零。权重和激活可以形成要被加载到MAC(例如,MAC单元500,其可以在计算单元314内)的乘法器(例如,乘法器502)的操作数对。在一种配置中,为了确定权重或激活是否为零,可将该权重或激活与零值进行比较。在一种配置中,标签可以被设置为1以指示零值,并且被设置为0以指示非零值。在一种配置中,标签可以被设置为0以指示零值,并且被设置为1以指示非零值。在一种配置中,权重和激活可被储存在操作数存储(例如,操作数存储308)中。
在604处,设备可以任选地将第一标签值和第二标签值储存在标签存储(例如,标签存储306)中。在一种配置中,当激活被更新时,设备可以更新标签存储处的第二标签值。在一种配置中,当第二标签值指示激活为零时,设备可以禁止对操作数存储中的激活进行的更新。在一种配置中,即使第二标签值可以指示激活不为零,设备也可以在第一标签值指示权重为零时禁止对操作数存储中的激活进行的更新。
在606处,设备可以从标签存储中取回第一标签值或第二标签值的至少一个标签值。在一种配置中,设备可以首先取回一个标签值(例如,第一标签值或第二标签值)。如果取回的标签值指示非零值,则设备可以取回另一标签值。
在608处,设备可以确定该至少一个标签值是否指示权重或激活的零值。如果该至少一个标签值指示权重或激活的零值,则设备可以行进到612。如果该至少一个标签值指示权重或激活不为零,则设备可以行进到610。
在612处,设备可以禁止将权重和激活加载到MAC的乘法器。在一种配置中,为了禁止将权重和激活加载到乘法器,设备可以阻止操作数存储的用于输出权重和激活的输出线进行翻转。在一种配置中,设备可以使用数据选通电路(例如,数据选通电路320、322、324或402)来禁止将权重和激活加载到乘法器。
在614处,设备可以任选地禁止将先前累加的值从存储加载到MAC的加法器(例如,加法器504)。在一种配置中,为了禁止将先前累加的值从存储加载到加法器,设备可以阻止储存先前累加的值的存储(例如,累加器寄存器)的输出线进行翻转。在一种配置中,设备可以使用选通电路(例如,存储和加法器之间的选通电路506)来禁止将先前累加的值从存储加载到加法器。
在616处,设备可以任选地由复用器(例如,复用器510)选择先前累加的值作为新的累加值。在一种配置中,复用器的第一输入可以是先前累加的值,并且复用器的第二输入可以是加法器的输出。例如,当权重或激活中的至少一者为零时,复用器可以接收被设置为0的控制信号,该控制信号可以选择复用器的第一输入作为复用器的输出。作为结果,先前累加的值被选择作为复用器的输出并且作为新的累加值被储存到累加器寄存器。
在610处,设备可以任选地确定权重和激活是否都是非零的。如果权重和激活两者是非零的,则设备可以行进到618。如果权重和激活之一非零但另一个为零,则设备可以行进到612。
在618处,设备可以任选地将权重和激活加载到MAC的乘法器。在一种配置中,乘法器可以计算权重和激活的乘积,并且将权重和激活的乘积作为输入提供给加法器。
在620处,设备可以任选地将先前累加的值加载到MAC的加法器。在一种配置中,加法器可以计算先前累加的值与权重和激活的乘积之和,并且将该总和作为输入提供给复用器。
在622处,设备可以任选地由复用器选择加法器的输出作为新的累加值。例如,当权重和激活两者非零时,复用器可以接收被设置为1的控制信号,该控制信号可以选择复用器的第二输入作为复用器的输出。作为结果,加法器的输出被选择作为复用器的输出,并且作为新的累加值被储存到累加器寄存器。
图7是解说示例性装置702中的不同装置/组件之间的数据流的概念性数据流图700。装置702可以是计算设备(例如,设备300)。装置702可以包括存储组件710,存储组件710储存要被加载到MAC单元的乘法器的操作数。在一种配置中,存储组件710可包括以上所描述的操作数存储308。
装备702可以包括标签生成组件704,标签生成组件704为被储存在存储组件710中的操作数生成零标签。每个零标签可以指示对应的操作数是否为零。在一种配置中,零标签可以被储存在标签存储(例如,标签存储306)中。在一种配置中,标签生成组件704可执行以上参考图6的602或604所描述的操作。在一种配置中,可以为每个操作数储存标签值,每个标签值可以基于对应操作数的初始值来被初始化。
装置702可以包括零值检测组件706,该零值检测组件706基于对应的零标签来检测操作数对中是否至少一个操作数为零。该操作数对可包括神经网络的权重和神经网络的激活。在一种配置中,零值检测组件706可以执行以上参考图6中的606、608、或610所描述的操作。
装置702可以包括为每个操作数对计算乘积的计算组件712。在一种配置中,计算组件712可包括以上参考图3描述的计算单元314。
装置702可以包括数据选通组件708,该数据选通组件708基于从零值检测组件706接收的零值检测来启用或禁止将操作数从存储组件710向计算组件712的加载。在一种配置中,数据选通组件708可以包括以上所描述的数据选通电路320、322、324或402。在一种配置中,数据选通组件708可执行以上参考图6中的612或618所描述的操作。
该装备可包括执行图6的前述流程图中的算法的每个框的附加组件。如此,图6的前述流程图中的每个框可由一组件执行且该装备可包括这些组件中的一个或多个组件。这些组件可以是专门配置成执行所述过程/算法的一个或多个硬件组件、由配置成执行所述过程/算法的处理器实现、存储在计算机可读介质中以供由处理器实现、或其某种组合。
图8是解说采用处理系统814的装备702'的硬件实现的示例的示图800。处理系统814可以用由总线824一般化地表示的总线架构来实现。取决于处理系统814的具体应用和总体设计约束,总线824可包括任何数目的互连总线和桥接器。总线824将各种电路链接在一起,包括一个或多个处理器和/或硬件组件(由处理器804、组件704、706、708、710、712以及计算机可读介质/存储器806表示)。总线824还可链接各种其他电路,诸如定时源、外围设备、稳压器和功率管理电路,这些电路在本领域中是众所周知的,且因此将不再进一步描述。
处理系统814可被耦合到收发机810。收发机810可耦合到一个或多个天线820。收发机810提供用于通过传输介质与各种其他装置通信的手段。收发机810从一个或多个天线820接收信号,从接收到的信号中提取信息,并向处理系统814提供所提取的信息。另外,收发机810从处理系统814接收信息,并基于接收到的信息来生成将被施加给一个或多个天线820的信号。处理系统814包括耦合到计算机可读介质/存储器806的处理器804。处理器804负责一般性处理,包括对存储在计算机可读介质/存储器806上的软件的执行。软件在由处理器804执行时使得处理系统814执行上文针对任何特定装备描述的各种功能。计算机可读介质/存储器806还可被用于存储由处理器804在执行软件时操纵的数据。处理系统814进一步包括组件704、706、708、710、712中的至少一者。这些组件可以是在处理器804中运行的软件组件、驻留/存储在计算机可读介质/存储器806中的软件组件、耦合到处理器804的一个或多个硬件组件、或其某种组合。
在一种配置中,设备702/702'可以包括用于取回用于神经网络中的权重的第一标签值或者用于神经网络中的激活的第二标签值的至少一个标签值的装置。在一种配置中,用于取回第一标签值或第二标签值的至少一个标签值的装置可以执行上面参考图6中的606描述的操作。在一种配置中,用于取回第一标签值或第二标签值的至少一个标签值的装置可以包括地址生成器302、加载单元304、或处理器804。
在一种配置中,设备702/702'可以包括用于确定该至少一个标签值是否指示零值的装置。在一种配置中,用于确定该至少一个标签值是否指示零值的装置可以执行上面参考图6中的608描述的操作。在一种配置中,用于确定该至少一个标签值是否指示零值的装置可以包括零值检测组件706或处理器804。
在一种配置中,设备702/702'可以包括用于在该至少一个标签值指示零值时禁止将权重和激活加载到乘法器的装置。在一种配置中,用于禁止将权重和激活加载到乘法器的装置可以执行上面参考图6中的612描述的操作。在一种配置中,用于禁止将权重和激活加载到乘法器的装置可以包括数据选通电路320、322、324、或402、或数据选通组件708。在一种配置中,用于禁止将权重和激活加载到乘法器的装置可以被配置成阻止操作数存储的用于输出权重和激活的输出线进行翻转。
在一种配置中,装置702/702'可以包括用于在激活被更新时更新标签存储处的第二标签值的装置。在一种配置中,用于在激活被更新时更新标签存储处的第二标签值的装置可以包括存储单元312、地址生成器302、或处理器804。
在一种配置中,设备702/702'可以包括用于当第二标签值指示激活为零时禁止对操作数存储中的激活进行更新的装置。在一种配置中,用于禁止对操作数存储中的激活进行更新的装置可以包括存储单元312或处理器804。
在一种配置中,设备702/702'可以包括用于在该至少一个标签值指示零值时禁止将先前累加的值加载到MAC的加法器的装置。在一种配置中,用于禁止将先前累加的值加载到MAC的加法器的装置可以执行上面参考图6中的614描述的操作。在一种配置中,用于禁止将先前累加的值加载到MAC的加法器的装置可以包括选通电路506。在一种配置中,用于禁止将先前累加的值加载到加法器的装置可以被配置成阻止储存先前累加的值的存储的输出线进行翻转。
在一种配置中,设备702/702'可以包括用于在该至少一个标签值指示零值时选择先前累加的值作为新的累加值的装置。在一种配置中,用于选择先前累加的值作为新的累加值的装置可以执行上面参考图6中的616描述的操作。在一种配置中,用于选择先前累加的值作为新的累加值的装置可包括复用器510、计算组件712、或处理器804。
在一种配置中,设备702/702'可以包括用于当第一标签值和第二标签值指示权重和激活两者都非零时选择加法器的输出作为新的累加值的装置。在一种配置中,用于选择加法器的输出作为新的累加值的装置可以执行上面参考图6中的622描述的操作。在一种配置中,用于选择加法器的输出作为新的累加值的装置可以包括复用器510、计算组件712、或处理器804。
在一种配置中,设备702/702'可以包括用于确定用于权重的第一标签值的装置。在一种配置中,用于确定用于权重的第一标签值的装置可以执行上面参考图6中的602描述的操作。在一种配置中,用于确定用于权重的第一标签值的装置可以包括标签生成组件704或处理器804。
在一种配置中,装备702/702'可包括用于确定用于激活的第二标签值的装置。在一种配置中,用于确定用于激活的第二标签值的装置可以执行上面参考图6中的602描述的操作。在一种配置中,用于确定用于激活的第二标签值的装置可以包括标签生成组件704或处理器804。
在一种配置中,设备702/702'可以包括用于将第一标签值和第二标签值储存在标签存储中的装置。在一种配置中,用于将第一标签值和第二标签值储存在标签存储中的装置可以执行上面参考图6中的604描述的操作。在一种配置中,用于将第一标签值和第二标签值储存在标签存储中的装置可以包括标签生成组件704或处理器804。
前述装置可以是设备702的前述组件和/或设备702'的处理系统814中被配置成执行由前述装置叙述的功能的一个或多个组件。
应理解,所公开的过程/流程图中的各个框的具体次序或层次是示例性办法的解说。应理解,基于设计偏好,可以重新编排这些过程/流程图中的各个框的具体次序或层次。此外,一些框可被组合或被略去。所附方法权利要求以范例次序呈现各种框的要素,且并不意味着被限定于所呈现的具体次序或层次。
提供之前的描述是为了使本领域任何技术人员均能够实践本文中所描述的各种方面。对这些方面的各种修改将容易为本领域技术人员所明白,并且在本文中所定义的普适原理可被应用于其他方面。因此,权利要求并非旨在被限定于本文中所示的各方面,而是应被授予与语言上的权利要求相一致的全部范围,其中对要素的单数形式的引述除非特别声明,否则并非旨在表示“有且仅有一个”,而是“一个或多个”。措辞“示例性”在本文中用于意指“用作示例、实例、或解说”。本文中描述为“示例性”的任何方面不必被解释为优于或胜过其他方面。除非特别另外声明,否则术语“一些”指代一个或多个。诸如“A、B或C中的至少一者”、“A、B或C中的一者或多者”、“A、B和C中的至少一者”、“A、B和C中的一者或多者”、以及“A、B、C或其任何组合”之类的组合包括A、B和/或C的任何组合,并且可包括多个A、多个B或者多个C。具体地,诸如“A、B或C中的至少一者”、“A、B或C中的一者或多者”、“A、B和C中的至少一者”、“A、B和C中的一者或多者”、以及“A、B、C或其任何组合”之类的组合可以是仅A、仅B、仅C、A和B、A和C、B和C、或者A和B和C,其中任何此类组合可包含A、B或C中的一个或多个成员。本公开通篇描述的各个方面的要素为本领域普通技术人员当前或今后所知的所有结构上和功能上的等效方案通过引述被明确纳入于此,且旨在被权利要求所涵盖。此外,本文中所公开的任何内容都并非旨在贡献给公众,无论这样的公开是否在权利要求书中被显式地叙述。措辞“模块”、“机制”、“元素”、“设备”等等可以不是措辞“装置”的代替。如此,没有任何权利要求元素应被解释为装置加功能,除非该元素是使用短语“用于……的装置”来明确叙述的。
Claims (30)
1.一种降低神经网络的功耗的方法,包括:
从标签存储中取回用于所述神经网络中的权重的第一标签值或者用于所述神经网络中的激活的第二标签值的至少一个标签值,所述第一标签值指示所述权重是否为零,并且所述第二标签值指示所述激活是否为零,其中所述权重和所述激活将作为操作数对被加载到乘法器-累加器(MAC)的乘法器;
确定所述至少一个标签值是否指示零值;以及
当所述至少一个标签值指示所述零值时,禁止将所述权重和所述激活加载到所述乘法器。
2.根据权利要求1所述的方法,其特征在于,所述权重和所述激活被储存在操作数存储中。
3.根据权利要求2所述的方法,其特征在于,禁止将所述权重和所述激活加载到所述乘法器包括阻止所述操作数存储的用于输出所述权重和所述激活的输出线进行翻转。
4.根据权利要求2所述的方法,其特征在于,进一步包括:
当所述激活被更新时更新所述标签存储处的所述第二标签值;以及
当所述第二标签值指示所述激活为零时,禁止对所述操作数存储中的所述激活进行更新。
5.根据权利要求1所述的方法,其特征在于,所述神经网络是深度卷积神经网络(DCN)。
6.根据权利要求1所述的方法,其特征在于,进一步包括:
当所述至少一个标签值指示所述零值时,禁止将先前累加的值加载到所述MAC的加法器。
7.根据权利要求6所述的方法,其特征在于,禁止将所述先前累加的值加载到所述加法器包括阻止储存所述先前累加的值的存储的输出线进行翻转。
8.根据权利要求6所述的方法,其特征在于,进一步包括当所述至少一个标签值指示所述零值时,由复用器选择所述先前累加的值作为新的累加值,所述复用器的第一输入是所述先前累加的值,所述复用器的第二输入是所述加法器的输出。
9.根据权利要求8所述的方法,其特征在于,进一步包括当所述第一标签值和所述第二标签值指示所述权重和所述激活两者都非零时,由所述复用器选择所述加法器的输出作为所述新的累加值。
10.根据权利要求1所述的方法,其特征在于,进一步包括:
确定用于所述权重的所述第一标签值;
确定用于所述激活的所述第二标签值;以及
将所述第一标签值和所述第二标签值储存在所述标签存储中。
11.一种用于降低神经网络的功耗的设备,包括:
用于从标签存储中取回用于所述神经网络中的权重的第一标签值或者用于所述神经网络中的激活的第二标签值的至少一个标签值的装置,所述第一标签值指示所述权重是否为零,并且所述第二标签值指示所述激活是否为零,其中所述权重和所述激活将作为操作数对被加载到乘法器-累加器(MAC)的乘法器;
用于确定所述至少一个标签值是否指示零值的装置;以及
用于在所述至少一个标签值指示所述零值时禁止将所述权重和所述激活加载到所述乘法器的装置。
12.根据权利要求11所述的设备,其特征在于,所述权重和所述激活被储存在操作数存储中。
13.根据权利要求12所述的设备,其特征在于,用于禁止将所述权重和所述激活加载到所述乘法器的装置被配置成阻止所述操作数存储的用于输出所述权重和所述激活的输出线进行翻转。
14.根据权利要求12所述的设备,其特征在于,进一步包括:
用于在所述激活被更新时更新所述标签存储处的所述第二标签值的装置;以及
用于在所述第二标签值指示所述激活为零时禁止对所述操作数存储中的所述激活进行更新的装置。
15.根据权利要求11所述的设备,其特征在于,所述神经网络是深度卷积神经网络(DCN)。
16.根据权利要求11所述的设备,其特征在于,进一步包括:
用于在所述至少一个标签值指示所述零值时禁止将先前累加的值加载到所述MAC的加法器的装置。
17.根据权利要求16所述的设备,其特征在于,用于禁止将所述先前累加的值加载到所述加法器的装置被配置成阻止储存所述先前累加的值的存储的输出线进行翻转。
18.根据权利要求16所述的设备,其特征在于,进一步包括用于在所述至少一个标签值指示所述零值时选择所述先前累加的值作为新的累加值的装置。
19.根据权利要求18所述的设备,其特征在于,进一步包括用于在所述第一标签值和所述第二标签值指示所述权重和所述激活两者都非零时选择所述加法器的输出作为所述新的累加值的装置。
20.根据权利要求11所述的设备,其特征在于,进一步包括:
用于确定用于所述权重的所述第一标签值的装置;
用于确定用于所述激活的所述第二标签值的装置;以及
用于将所述第一标签值和所述第二标签值储存在所述标签存储中的装置。
21.一种用于降低神经网络的功耗的装置,包括:
标签存储;
至少一个处理器,其被配置成:
从所述标签存储中取回用于所述神经网络中的权重的第一标签值或者用于所述神经网络中的激活的第二标签值的至少一个标签值,所述第一标签值指示所述权重是否为零,并且所述第二标签值指示所述激活是否为零,其中所述权重和所述激活将作为操作数对被加载到乘法器-累加器(MAC)的乘法器;以及
确定所述至少一个标签值是否指示零值;以及
选通电路,其被配置成在所述至少一个标签值指示所述零值时禁止将所述权重和所述激活加载到所述乘法器。
22.根据权利要求21所述的装置,其特征在于,所述权重和所述激活被储存在操作数存储中。
23.根据权利要求22所述的装置,其特征在于,为了禁止将所述权重和所述激活加载到所述乘法器,所述选通电路被配置成阻止所述操作数存储的用于输出所述权重和所述激活的输出线进行翻转。
24.根据权利要求22所述的装置,其特征在于,所述至少一个处理器被进一步配置成:
当所述激活被更新时更新所述标签存储处的所述第二标签值;以及
当所述第二标签值指示所述激活为零时,禁止对所述操作数存储中的所述激活进行更新。
25.根据权利要求21所述的装置,其特征在于,进一步包括第二选通电路,其被配置成:
当所述至少一个标签值指示所述零值时,禁止将先前累加的值加载到所述MAC的加法器。
26.根据权利要求25所述的装置,其特征在于,为了禁止将所述先前累加的值加载到所述加法器,所述第二选通电路被配置成阻止储存所述先前累加的值的存储的输出线进行翻转。
27.根据权利要求25所述的装置,其特征在于,进一步包括复用器,其被配置成当所述至少一个标签值指示所述零值时选择所述先前累加的值作为新的累加值,所述复用器的第一输入是所述先前累加的值,所述复用器的第二输入是所述加法器的输出。
28.根据权利要求27所述的装置,其特征在于,所述复用器被进一步配置成在所述第一标签值和所述第二标签值指示所述权重和所述激活两者都非零时选择所述加法器的输出作为所述新的累加值。
29.根据权利要求21所述的装置,其特征在于,所述至少一个处理器被进一步配置成:
确定用于所述权重的所述第一标签值;
确定用于所述激活的所述第二标签值;以及
将所述第一标签值和所述第二标签值储存在所述标签存储中。
30.一种存储计算机可执行代码的计算机可读介质,包括用于以下操作的代码:
从标签存储中取回用于神经网络中的权重的第一标签值或者用于所述神经网络中的激活的第二标签值的至少一个标签值,所述第一标签值指示所述权重是否为零,并且所述第二标签值指示所述激活是否为零,其中所述权重和所述激活将作为操作数对被加载到乘法器-累加器(MAC)的乘法器;
确定所述至少一个标签值是否指示零值;以及
当所述至少一个标签值指示所述零值时,禁止将所述权重和所述激活加载到所述乘法器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/377,858 | 2016-12-13 | ||
US15/377,858 US20180164866A1 (en) | 2016-12-13 | 2016-12-13 | Low-power architecture for sparse neural network |
PCT/US2017/061310 WO2018111477A1 (en) | 2016-12-13 | 2017-11-13 | A low-power architecture for sparse neural network |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110073370A true CN110073370A (zh) | 2019-07-30 |
Family
ID=60543707
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780076565.XA Pending CN110073370A (zh) | 2016-12-13 | 2017-11-13 | 用于稀疏神经网络的低功率架构 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20180164866A1 (zh) |
CN (1) | CN110073370A (zh) |
TW (1) | TW201824094A (zh) |
WO (1) | WO2018111477A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110458285A (zh) * | 2019-08-14 | 2019-11-15 | 北京中科寒武纪科技有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN111882028A (zh) * | 2020-06-08 | 2020-11-03 | 北京大学深圳研究生院 | 用于卷积神经网络的卷积运算装置 |
CN113626761A (zh) * | 2020-05-07 | 2021-11-09 | 脸谱公司 | 旁路硬件乘法器中的零值乘法 |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10795836B2 (en) * | 2017-04-17 | 2020-10-06 | Microsoft Technology Licensing, Llc | Data processing performance enhancement for neural networks using a virtualized data iterator |
US11164071B2 (en) * | 2017-04-18 | 2021-11-02 | Samsung Electronics Co., Ltd. | Method and apparatus for reducing computational complexity of convolutional neural networks |
US10372416B2 (en) | 2017-04-28 | 2019-08-06 | Intel Corporation | Multiply-accumulate “0” data gating |
EP3480748A1 (en) * | 2017-11-06 | 2019-05-08 | Imagination Technologies Limited | Neural network hardware |
US11248930B2 (en) * | 2018-03-02 | 2022-02-15 | International Business Machines Corporation | Microclimate wind forecasting |
US11783167B1 (en) | 2018-04-20 | 2023-10-10 | Perceive Corporation | Data transfer for non-dot product computations on neural network inference circuit |
US10740434B1 (en) | 2018-04-20 | 2020-08-11 | Perceive Corporation | Reduced dot product computation circuit |
US11531868B1 (en) | 2018-04-20 | 2022-12-20 | Perceive Corporation | Input value cache for temporarily storing input values |
US11687759B2 (en) | 2018-05-01 | 2023-06-27 | Semiconductor Components Industries, Llc | Neural network accelerator |
US10817260B1 (en) * | 2018-06-13 | 2020-10-27 | Amazon Technologies, Inc. | Reducing dynamic power consumption in arrays |
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 |
US10747845B2 (en) * | 2018-08-31 | 2020-08-18 | Arm Limited | System, method and apparatus for computationally efficient data manipulation |
US11281974B2 (en) * | 2018-10-25 | 2022-03-22 | GM Global Technology Operations LLC | Activation zero-bypass and weight pruning in neural networks for vehicle perception systems |
US11995533B1 (en) | 2018-12-05 | 2024-05-28 | Perceive Corporation | Executing replicated neural network layers on inference circuit |
KR20200072307A (ko) | 2018-12-12 | 2020-06-22 | 삼성전자주식회사 | 뉴럴 네트워크에서의 부하 균형을 위한 장치 및 방법 |
CN109740754B (zh) * | 2018-12-29 | 2020-04-14 | 中科寒武纪科技股份有限公司 | 神经网络计算装置、神经网络计算方法及相关产品 |
US11347297B1 (en) | 2019-01-23 | 2022-05-31 | Perceive Corporation | Neural network inference circuit employing dynamic memory sleep |
CN113853616A (zh) * | 2019-02-19 | 2021-12-28 | 瀚博控股公司 | 用于卷积模型多模式硬件加速器的方法和系统 |
KR20200111939A (ko) * | 2019-03-20 | 2020-10-05 | 에스케이하이닉스 주식회사 | 신경망 가속 장치 및 그것의 동작 방법 |
US11494624B2 (en) * | 2019-05-20 | 2022-11-08 | Mipsology SAS | Accelerating neuron computations in artificial neural networks with dual sparsity |
EP3973464A1 (en) * | 2019-05-20 | 2022-03-30 | Mipsology SAS | Accelerating neuron computations in artificial neural networks with dual sparsity |
US11625585B1 (en) | 2019-05-21 | 2023-04-11 | Perceive Corporation | Compiler for optimizing filter sparsity for neural network implementation configuration |
US11507349B2 (en) | 2019-06-26 | 2022-11-22 | Microsoft Technology Licensing, Llc | Neural processing element with single instruction multiple data (SIMD) compute lanes |
US11222092B2 (en) * | 2019-07-16 | 2022-01-11 | Facebook Technologies, Llc | Optimization for deconvolution |
TWI688871B (zh) * | 2019-08-27 | 2020-03-21 | 國立清華大學 | 矩陣乘法裝置及其操作方法 |
US11842169B1 (en) * | 2019-09-25 | 2023-12-12 | Amazon Technologies, Inc. | Systolic multiply delayed accumulate processor architecture |
US20210117799A1 (en) * | 2019-10-17 | 2021-04-22 | EMC IP Holding Company LLC | Monitoring performance of a storage system using paired neural networks |
US11816446B2 (en) | 2019-11-27 | 2023-11-14 | Amazon Technologies, Inc. | Systolic array component combining multiple integer and floating-point data types |
US11467806B2 (en) | 2019-11-27 | 2022-10-11 | Amazon Technologies, Inc. | Systolic array including fused multiply accumulate with efficient prenormalization and extended dynamic range |
US11562047B2 (en) * | 2020-01-31 | 2023-01-24 | Microsoft Technology Licensing, Llc | Accelerator for dense and sparse matrix computations |
US11308027B1 (en) | 2020-06-29 | 2022-04-19 | Amazon Technologies, Inc. | Multiple accumulate busses in a systolic array |
CN112489012A (zh) * | 2020-11-27 | 2021-03-12 | 大连东软教育科技集团有限公司 | 一种用于ct图像识别的神经网络架构方法 |
US11880682B2 (en) | 2021-06-30 | 2024-01-23 | Amazon Technologies, Inc. | Systolic array with efficient input reduction and extended array performance |
US12007885B2 (en) | 2022-04-26 | 2024-06-11 | Microsoft Technology Licensing, Llc | Fetching non-zero data |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104335232A (zh) * | 2012-05-30 | 2015-02-04 | 高通股份有限公司 | 连续时间尖峰神经网络基于事件的模拟 |
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN105488563A (zh) * | 2015-12-16 | 2016-04-13 | 重庆大学 | 面向深度学习的稀疏自适应神经网络、算法及实现装置 |
CN105874477A (zh) * | 2014-01-23 | 2016-08-17 | 高通股份有限公司 | 配置稀疏神经网络 |
-
2016
- 2016-12-13 US US15/377,858 patent/US20180164866A1/en not_active Abandoned
-
2017
- 2017-11-13 CN CN201780076565.XA patent/CN110073370A/zh active Pending
- 2017-11-13 TW TW106139123A patent/TW201824094A/zh unknown
- 2017-11-13 WO PCT/US2017/061310 patent/WO2018111477A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104335232A (zh) * | 2012-05-30 | 2015-02-04 | 高通股份有限公司 | 连续时间尖峰神经网络基于事件的模拟 |
CN105874477A (zh) * | 2014-01-23 | 2016-08-17 | 高通股份有限公司 | 配置稀疏神经网络 |
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN105488563A (zh) * | 2015-12-16 | 2016-04-13 | 重庆大学 | 面向深度学习的稀疏自适应神经网络、算法及实现装置 |
Non-Patent Citations (1)
Title |
---|
韩松等: ""EIE: Efficient Inference Engine on Compressed Deep Neural Network"", 《2016 ACM/IEEE 43RD ANNUAL INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110458285A (zh) * | 2019-08-14 | 2019-11-15 | 北京中科寒武纪科技有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN113626761A (zh) * | 2020-05-07 | 2021-11-09 | 脸谱公司 | 旁路硬件乘法器中的零值乘法 |
CN111882028A (zh) * | 2020-06-08 | 2020-11-03 | 北京大学深圳研究生院 | 用于卷积神经网络的卷积运算装置 |
Also Published As
Publication number | Publication date |
---|---|
TW201824094A (zh) | 2018-07-01 |
US20180164866A1 (en) | 2018-06-14 |
WO2018111477A1 (en) | 2018-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110073370A (zh) | 用于稀疏神经网络的低功率架构 | |
US10871964B2 (en) | Architecture for sparse neural network acceleration | |
EP3685319B1 (en) | Direct access, hardware acceleration in neural network | |
US20230185532A1 (en) | Exploiting activation sparsity in deep neural networks | |
US11263526B2 (en) | Gradient-based training engine for quaternion-based machine-learning systems | |
Yonekawa et al. | On-chip memory based binarized convolutional deep neural network applying batch normalization free technique on an FPGA | |
CN107657263A (zh) | 一种用于实现ann的深度处理单元 | |
CN107209871A (zh) | 具有回调的卷积矩阵相乘以用于深度卷积神经网络的深度瓦片化 | |
US9412064B2 (en) | Event-based communication in spiking neuron networks communicating a neural activity payload with an efficacy update | |
US20180322384A1 (en) | Post synaptic potential-based learning rule | |
CN106875013A (zh) | 用于多核优化循环神经网络的系统和方法 | |
WO2018067258A1 (en) | Neural network for image processing | |
CN107578098A (zh) | 基于脉动阵列的神经网络处理器 | |
CN104685516A (zh) | 用于在尖峰神经元网络中实现基于事件的更新的装置和方法 | |
US20200073636A1 (en) | Multiply-accumulate (mac) operations for convolutional neural networks | |
US20190087710A1 (en) | Apparatus and method for executing recurrent neural network and lstm computations | |
WO2017058479A1 (en) | Selective backpropagation | |
TWI417797B (zh) | A Parallel Learning Architecture and Its Method for Transferred Neural Network | |
CN107766935B (zh) | 多层人造神经网络 | |
CN111401547B (zh) | 一种面向乘客流分析的基于循环学习单元的htm设计方法 | |
CN110163333A (zh) | 卷积神经网络的并行优化方法 | |
Geng et al. | CQNN: a CGRA-based QNN framework | |
CN108805277A (zh) | 基于多fpga的深度信念网络加速平台及其设计方法 | |
Que | Reconfigurable acceleration of recurrent neural networks | |
KR102090109B1 (ko) | 학습 및 추론 장치 및 그 방법 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190730 |
|
WD01 | Invention patent application deemed withdrawn after publication |