CN113392962A - 对神经网络的权重进行解码的方法、设备及电路 - Google Patents
对神经网络的权重进行解码的方法、设备及电路 Download PDFInfo
- Publication number
- CN113392962A CN113392962A CN202110261314.7A CN202110261314A CN113392962A CN 113392962 A CN113392962 A CN 113392962A CN 202110261314 A CN202110261314 A CN 202110261314A CN 113392962 A CN113392962 A CN 113392962A
- Authority
- CN
- China
- Prior art keywords
- weight
- word
- words
- clipped
- index
- 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
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/08—Word line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, for word lines
-
- 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/048—Activation functions
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Neurology (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请涉及对神经网络的权重进行解码的方法、设备及电路。根据一个方面,用于对神经网络的权重进行解码的神经网络电路包括:权重存储器,该权重存储器被配置为存储神经网络的编码权重,其中该编码权重包括索引权重字;和解压缩逻辑电路,该解压缩逻辑电路被配置为从权重存储器检索编码权重,使用索引权重字对该编码权重进行解码,以获得一个或多个非裁剪权重字和一个或多个裁剪权重字的序列,并且将该非裁剪权重字和裁剪权重字的序列提供给多个输入‑权重乘法器。
Description
技术领域
本公开涉及神经网络权重编码。
背景技术
神经网络可用于信号处理。神经网络包括多个层,其中每个层具有多个神经元。在每个层之间,神经元与权重因子相关联。由于权重的数量是两个层中的神经元数量的乘积,因此权重的量可相对较大(从而增加存储这些权重的存储器的量),并且乘法的量可相对较大(从而增加执行乘法的处理能力的量)。
发明内容
根据一个方面,用于对神经网络的权重进行解码的神经网络电路包括:权重存储器,该权重存储器被配置为存储神经网络的编码权重,其中该编码权重包括索引权重字;和解压缩逻辑电路,该解压缩逻辑电路被配置为从权重存储器检索编码权重,使用索引权重字对该编码权重进行解码,以获得一个或多个非裁剪权重字和一个或多个裁剪权重字的序列,并且将该非裁剪权重字和裁剪权重字的序列提供给多个输入-权重乘法器。在一些示例中,裁剪权重字包括零值权重字,并且非裁剪权重字包括非零值权重字。
根据一个方面,神经网络电路可包括以下特征中的一个或多个(或它们的任何组合)。索引权重字包括多个位,其中每个位具有第一位值或第二位值,该第一位值指示序列中的裁剪权重字,并且该第二位值指示序列中的非裁剪权重字。解压缩逻辑电路被配置为在单个时钟循环内对编码权重进行解码。解压缩逻辑电路包括权重字解码器,其中该权重字解码器包括多个移位器、耦接到该多个移位器的多个数字逻辑门,以及耦接到该多个移位器和该多个数字逻辑门的索引字解码器。索引字解码器被配置为基于索引权重字来控制多个移位器和多个数字逻辑门。多个移位器并联连接到索引字解码器。多个移位器中的每个移位器被配置为从索引字解码器接收非裁剪权重字和控制信号,该索引字解码器控制应用于非裁剪权重字的移位操作。数字逻辑门中的每一者被配置为从索引字解码器接收控制信号,该索引字解码器控制由相应数字逻辑门执行的布尔运算。多个数字逻辑门包括第一数字逻辑门和第二数字逻辑门,该第一数字逻辑门耦接到多个移位器中的第一移位器的输出,该第二数字逻辑门耦接到多个移位器中的第二移位器的输出。解压缩逻辑电路包括:第一权重解码器,该第一权重解码器被配置为对编码权重的第一部分进行解码;第二权重解码器,该第二权重解码器被配置为对编码权重的第二部分进行解码;和控制逻辑电路,该控制逻辑电路被配置为控制第一权重解码器和第二权重解码器。第一权重解码器被配置为从控制逻辑电路接收指示权重字缓冲器中存储的可用权重字的数量的信号,并且该第一权重解码器被配置为确定在索引权重字中具有第一位值的位的数量,并且响应于权重字缓冲器中存储的可用权重字的数量等于或大于具有第一位值的位的数量,对编码权重的第一部分进行解码。
根据一个方面,一种设备包括:神经网络,该神经网络被配置为接收一组输入并且生成一组输出,其中该组输入包括语音数据,并且该组输出包括对应于该语音数据的一个或多个潜在的语音命令;权重存储器,该权重存储器被配置为存储神经网络的编码权重;和加速器,该加速器被配置为执行神经网络。加速器包括解压缩逻辑电路,该解压缩逻辑电路被配置为从权重存储器检索编码权重,并且对该编码权重进行解码以获得一个或多个裁剪权重字和一个或多个非裁剪权重字的序列,其中该裁剪权重字包括零值权重字,并且该非裁剪权重字包括非零值权重字。加速器包括多个输入-权重乘法器,该多个输入-权重乘法器被配置为接收裁剪权重字和非裁剪权重字的序列。
根据一个方面,神经网络电路可包括以上/以下特征中的一个或多个(或它们的任何组合)。解压缩逻辑电路包括:权重字缓冲器,该权重字缓冲器被配置为暂时存储编码权重,其中该编码权重包括第一索引权重字和第二索引权重字;第一权重解码器,该第一权重解码器被配置为从权重字缓冲器接收编码权重,并且使用第一索引权重字来生成第一组解码权重字;以及第二权重解码器,该第二权重解码器被配置为从第一权重解码器接收编码权重的一部分,并且使用第二索引权重字来生成第二组解码权重字。该设备包括:控制逻辑部件,该控制逻辑部件被配置为控制第一权重解码器和第二权重解码器;移位器,该移位器被配置为从第一权重解码器接收第一组解码权重字,并且从第二权重解码器接收第二组解码权重字;以及多个权重寄存器,该多个权重寄存器耦接到移位器,其中多个权重寄存器中的每个权重寄存器被配置为从移位器接收单独的解码权重字。编码权重包括索引权重字和一个或多个非裁剪权重字,并且解压缩逻辑电路包括权重字解码器。该权重字解码器包括多个移位器、耦接到该多个移位器的多个与门,以及耦接到该多个移位器和多个与门的索引字解码器,其中索引字解码器被配置为基于索引权重字的各个位的位值来控制多个移位器和多个与门。多个移位器中的每个移位器被配置为从索引字解码器接收非裁剪权重字和第一控制信号,其中每个移位器被配置为根据第一控制信号对非裁剪权重字执行移位操作。与门中的每一者被配置为相应移位器的输出和来自索引字解码器的第二控制信号,其中每个与门被配置为对相应移位器的输出和第二控制信号执行与运算。编码权重包括索引权重字,该索引权重字之后为非裁剪权重字,其中编码权重不包括裁剪权重字的权重值。索引权重字包括多个位,其中每个位具有第一位值或第二位值。第一位值指示序列中的裁剪权重字。第二位值指示序列中的非裁剪权重字。裁剪权重字是相应编码权重的最高有效字节或最低有效字节中的一者。
根据一个方面,一种对神经网络的权重进行解码的方法包括:经由处理器数据总线从权重存储器检索编码权重,其中该编码权重包括索引权重字;使用索引权重字对编码权重进行解码以获得一个或多个裁剪权重字和一个或多个非裁剪权重字的序列,其中裁剪权重字包括零值权重字并且非裁剪权重字包括非零值权重字;以及将非裁剪权重字和裁剪权重字的序列提供给多个输入-权重乘法器。
在一些方面,索引权重字包括多个位,其中每个位具有第一位值或第二位值。第一位值指示序列中的裁剪权重字,并且第二位值指示序列中的非裁剪权重字。响应于索引权重字内具有第一位值的位,将裁剪权重字解码为零。该解码可包括基于索引权重字来控制多个移位器和多个数字逻辑门。
在以下具体实施方式及其附图内进一步解释了前述说明性发明内容,以及本公开的其他示例性目标和/或优点、以及实现方式。
附图说明
图1A示出了根据一个方面的用于对神经网络的权重进行编码和解码的神经网络系统。
图1B示出了根据一个方面的全部连接的神经网络。
图1C示出了根据一个方面的部分连接的神经网络。
图1D示出了根据一个方面的被配置为对神经网络的突触进行裁剪并且将被裁剪的突触的权重存储为零值权重的神经网络训练器。
图2示出了根据一个方面的用于对神经网络的权重进行编码的编码方案。
图3示出了根据另一方面的用于对神经网络的权重进行编码的编码方案。
图4示出了根据另一方面的用于对神经网络的权重进行编码的编码方案。
图5示出了根据一个方面的用于对编码权重进行解码的解压缩逻辑电路。
图6示出了根据一个方面的神经网络系统。
图7示出了根据一个方面的神经网络系统的加速器。
图8示出了根据一个方面的加速器的解压缩逻辑电路。
图9示出了根据一个方面的解压缩逻辑电路的权重解码器。
图10是根据一个方面的用于对神经网络系统的权重进行解码的方法的流程图。
附图中的部件未必相对于彼此按比例绘制。相似附图标记在若干附图中表示相应的零件。
具体实施方式
图1A至图1D示出了用于对神经网络106的权重进行编码和/或解码的神经网络系统100,该神经网络增加了执行速度,同时降低了神经网络系统100的存储器需求。例如,参考图1B和图1C所示,神经网络106包括与突触138(也称为权重因子或权重)连接的神经元131的多个层129。因为权重的数量是相邻层129中的神经元131的数量的乘积,所以在一些示例中,权重的量可能相对较大,并因此可能需要相对较大的存储器设备来存储权重。例如,具有多于十万个权重的神经网络106可能需要一百千字节(kB)的存储器(假设8位权重),这对于存储器容量相对较小的设备而言相对较大。
此外,待执行的乘法的量可能相对较大,这可能导致执行速度相对较慢和/或需要增加处理功率。例如,神经网络106可能需要大量的循环来获得输出(例如,超过五万个循环、超过十万个循环),并且神经网络106可能需要在给定时间范围内获得多个输出(例如,超过五十次/秒、超过一百次/秒等)。增加循环速度以适应大量所需操作对应于增加功率。然而,一些应用程序的时钟速度可能被限制为低速率(例如,小于100MHz、小于50MHz、小于20MHz)以节省功率。
可裁剪(或移除)一些权重以节省内存。例如,当第一神经元值乘以低权重值(例如,非常低的权重值)时,即使第一神经元值非常高(例如,即使第一神经元高度活跃),也可能对累加和几乎没有影响。在一些示例中,可从神经网络106裁剪(例如,移除)这些低值权重,而不会显着降低神经网络106的准确性(如果有的话)。该裁剪可节省处理(例如,乘法、添加)和存储器要求。在一些示例中,可剪裁特定百分比(例如,超过50%、超过70%、超过80%或超过90%等)的权重,而没有显着的(例如,任何)准确性损失。然而,对低值权重的裁剪(或移除)可能导致神经网络106不规则(例如,未完全连接)。
然而,根据本文所讨论的技术,神经网络系统100提供了用于存储编码权重114和对编码权重114进行解码的效率机制,该机制可减小存储编码权重114所需的存储器的大小,降低解码逻辑的复杂性,和/或提高编码权重114被解码的速度,从而实现神经网络106的快速执行以使设备消耗相对较低的功率。
例如,根据编码方案来对权重114a(例如,权重字序列a)进行编码,使得编码权重114不包括裁剪权重字126的实际值(例如,从编码权重114中移除裁剪权重字126),从而减少存储编码权重114所需的存储器的量。换句话讲,从编码权重114裁剪(或移除)该裁剪权重字126,但是编码权重114包括表示裁剪权重字126在权重序列内的位置的编码数据116。神经网络系统100包括解码逻辑,该解码逻辑对编码权重114进行解码以获得裁剪权重字126和非裁剪权重字120的序列。例如,解码逻辑被配置为将裁剪权重字126解码为零,并且使它们被包括在非裁剪权重字120中的正确序列中。裁剪权重字126和非裁剪权重字120的序列被提供给输入-权重乘法器108以与输入值相乘。
与将权重及其神经元偏移传送到对其进行计算的图块的一些常规方法相比,本文所讨论的解码机制计算被解码为零(并因此不需要输入-权重乘法器108中附加的切换功率)的裁剪权重字126(从而不需要神经元偏移)。在一些示例中,需要相对快速地执行解码机制,其中在15MHz和80MHz之间的单个时钟循环中对编码权重114进行解码,并且传送权重和神经元偏移的常规方法将不足以快速地对编码权重114进行解码。例如,对于一些应用程序,对权重和神经元偏移的计算可能太慢。另外,在一些常规方法中,在针对存储或传输的权重的卷积神经网络中使用运行长度编码(RLE),并且以RLE计,权重呈浮点格式。例如,当一个或多个权重为零时,这些权重以通常不在神经网络中使用的浮点数(例如,负零、次正态、非数值、无穷大)来编码,其中未使用的位用于对零权重的量进行编码。然而,与一些常规方法相比,在一些示例中,本文所讨论的编码/解码机制不使用浮点数,而是使用整数运算,因此可产生更小的逻辑和更低的功率。据此,因为与整数编程中的相同位数量相比,浮点数可提供更大的动态范围,所以可在神经网络中使用浮点数(例如,小浮点数)。在一些示例中,本文所讨论的权重裁剪解压缩机制可与浮点权重结合使用。
在一些示例中,神经网络系统100使用用于权重字中的每一组的索引权重字118来实现裁剪权重字126的硬件解码。在一些示例中,权重字(例如,裁剪字126和非裁剪权重字120的组合)的数量等于索引权重字118中的位的数量。在一些示例中,神经网络系统100使用硬件实施方式,该硬件实施方式使用移位器140,该移位器产生更快的逻辑定时,从而允许在单个时钟循环中对多个索引权重字118进行解码。
参考图1A,神经网络系统100包括计算设备103和设备102。计算设备103可以是训练神经网络106以生成权重114a并且对权重114a进行编码以生成编码权重114的一个或多个计算机。然后,可将编码权重114存储在设备102的权重存储器112中。在神经网络106的执行期间,设备102可从权重存储器112获得编码权重114,对编码权重114进行解码,并且使用解码权重和由设备102捕获的输入数据来执行神经网络106以计算神经网络106的输出。神经网络106的输出可取决于设备102所利用的应用程序的类型,并且神经网络106的输出可触发设备102的其他功能。
在一些示例中,计算设备103包括与设备102分开的一个或多个计算机。在一些示例中,计算设备103包括一个或多个服务器计算机。在一些示例中,设备102通信地耦接到计算设备103(例如,有线或无线连接),使得设备102可接收并然后存储编码权重114。在一些示例中,设备102在设备102的生产期间通信地耦接到计算设备103(以便将编码权重114存储在设备102上),但在设备102被放置在其使用领域中时不通信地耦接到计算设备103。在一些示例中,设备102通信地耦接到计算设备103(同时设备102处于其使用领域中),以便通过网络从计算设备103接收重新训练(重新编码)的权重114。在一些示例中,设备102经由诸如互联网连接(例如,Wi-Fi连接、移动网络接口连接)或专用广域网(WAN)连接的基于网络的连接来通信地耦接到计算设备103。在一些示例中,计算设备103在制造(例如,设备102的生产)期间生成编码权重114,然后将编码权重114存储在设备102的权重存储器112中,然后将该设备102置于其使用领域中。在一些示例中,设备102经由无线连接而连接到计算设备103,并且设备102可在设备寿命的部分期间接收(例如,周期性地接收)更新的权重114(例如,重新训练/重新编码权重)。
在一些示例中,设备102包括在处理功率和内存大小方面小于计算设备103的数字电路。在一些示例中,计算设备103可以是一个或多个高功率计算机,该计算机被配置为训练神经网络106以生成权重114a,然后对权重114a进行编码以生成编码权重114,并且设备102可被认为是以由计算设备103确定的编码权重114来执行神经网络106的低功率(相对较小的)设备。
设备102可以是可使用编码权重114来执行神经网络106的任何类型的设备。设备102包括神经网络电路104,其中神经网络电路104包括存储编码权重114的权重存储器112、神经网络106和被配置为帮助执行神经网络106的加速器156。在一些示例中,权重存储器112包括随机存取存储器(RAM)。在一些示例中,神经网络电路104是片上系统(SOC)设备(例如,耦接到半导体基板的集成电路)。在一些示例中,通过使用本文所讨论的编码方案,由于裁剪权重字126未被包括在编码权重114内,因此权重存储器112可相对较小。在一些示例中,神经网络106被认为是加速器156的一部分。
加速器156可包括解压缩逻辑电路110和输入-权重乘法器108。在一些示例中,解压缩逻辑电路110包括能够对编码权重114进行相对快速的解码的一个或多个硬件解码部件。在一些示例中,解压缩逻辑电路110包括硬件实施方式,该硬件实施方式使用移位器140,该移位器产生更快的逻辑定时,从而允许同时对多个权重字进行解码。解压缩逻辑电路110可(经由数据总线)从权重存储器112检索编码权重114,对编码权重114进行解码,并且将解码权重提供到输入-权重乘法器108以执行适当的乘法。输入-权重乘法器108可被认为是加速器156的将突触138的输入与对应权重相乘的部分,该突触连接神经网络106的两个层129。在一些示例中,输入-权重乘法器108被认为是一个或多个乘法和累加单元(例如,MAC单元)的一部分。
在一些示例中,设备102是语音识别设备。在一些示例中,设备102是助听器设备。神经网络电路104被配置为接收音频输入,并且基于该音频输入确定音频语音命令。在一些示例中,设备102利用神经网络106来改善对用户说出的命令的识别。基于所识别的命令(例如,提高音量),设备102可执行功能(例如,增加音量)。附加地或另选地,设备102可利用神经网络106来改善对后台环境的识别。基于所识别的环境,设备102可(自动地)执行功能(例如,改变噪声消除设置)。使用加速器156可降低计算神经网络106所需的功率消耗,这可能是所述语音识别场景所频繁需要的。对于功率消耗相对较低的相对较小的设备(例如,助听器)而言,降低功率可能是有利的。
在一些示例中,使用神经网络106和加速器156的设备102可以高功效的方式(例如,用来节省电池寿命)改善语音识别(例如,语音命令)或声音识别(例如,后台噪声类型)。在一些示例中,加速器156是帮助处理器实现神经网络106的半导体(即,硬件)平台(即,块)。加速器156包括可被控制(例如,通过由处理器配置的状态机控制)以处理神经网络106的硬编码逻辑和数学函数。在一些示例中,加速器156可比在例如数字信号处理器(DSP)上运行的常规软件更快且更有效(高功效)地处理神经网络106。DSP方法可能需要额外的处理/动力资源来获取软件指令,串联地执行计算,并且使用比特定应用程序可能期望的位深度高得多的位深度来执行计算。相反,在一些示例中,加速器156避免获取软件指令,并行执行处理(例如,计算),并且使用适用于特定应用程序的神经网络106的位深度进行处理。
神经网络106(例如,深度神经网络)可能需要非常大量(例如,介于一万和十万之间或大于十万)的操作来获得结果。另外,神经网络106可能需要达到每秒进行许多计算以便对输入数据流作出响应。在一些示例中,神经网络106可能需要进行超过二十万次来获得输出,并且必须每十毫秒获得一次输出,这可能需要相对大量的功率。此外,这些要求可能导致大约二十兆赫的时钟速度,对于一些应用程序而言,这对于典型的低功率DSP而言可能太高。本文所讨论的一些技术可在具有相同(或类似)要求的应用程序中实现神经网络106,使得这些应用程序的体积较小并且功率较低。例如,加速器156可通过在针对多个循环保持在输入-权重乘法器108处的输入数据稳定的同时而同时处理多个神经元131来降低功率消耗。保持输入数据稳定降低了乘法器的输入处的切换量。因此,可消耗更少的功率(即,小于不保持这些输入数据稳定的情况)。加速器156还可通过并行地执行多个乘法(例如,可至少部分并行地执行输入-权重乘法器108的执行)来降低功率消耗。这种并行性减少了累加器所需的时钟量。因此,消耗的功率更少(即,小于未添加并行性的情况)。
计算设备103包括神经网络训练器122,该神经网络训练器被配置为使用训练数据105来训练神经网络106,其中训练的结果确定权重114a。权重114a可表示单元之间的连接的强度。如果从神经元A到神经元B的权重114a具有较大量值,则这意味着神经元A对神经元B具有较大影响。权重114a包括权重字的序列,其中每个权重字具有特定的大小(例如,四位、八位、十六位等权重字)。对神经网络106的训练可基于在实施方式期间收集的启发式数据来更新。该训练产生了用于突触的一组权重114a以及用于最终神经元累加的偏置。在该训练期间,将具有相对较低值的权重114a设定为零。因此,神经网络训练器122可生成权重114a,该权重包括裁剪权重字126和非裁剪权重字120。特定的裁剪权重字126或特定的非裁剪权重字120是与单个突触138相关联的权重值。裁剪权重字126可被称为被设置为零并从编码权重114中移除的权重字。在一些示例中,裁剪权重字126是零值权重字(例如,如果权重字为四位,则为“0000”)。非裁剪权重字120可被称为未被裁剪(例如,未被从编码权重中移除)的权重字。在一些示例中,非裁剪权重字120包括非零值权重字(例如,如果权重字为四位,则为“AAAA”)。在一些示例中,根据所使用的编码方案,非裁剪权重字120可包括一个或多个零值权重字。
在一些示例中,大多数的权重114a包括裁剪权重字126。计算设备103包括对权重114a进行编码以生成编码权重114的权重编码器128。编码权重114包括编码数据116和非裁剪权重字120。编码权重114可不包括来自编码权重114的裁剪权重字126的值(从而被裁剪或移除)。
编码数据116可包括数字数据,该数字数据指示在非裁剪权重字120的序列内存在一个或多个裁剪权重字126。在一些示例中,编码数据116包括索引权重字118。在一些示例中,索引权重字118可被认为是标头,其后是一个或多个非裁剪权重字120(或为空)。在一些示例中,索引权重字118是具有第一位值(例如,“0”)或第二位值(例如,“1”)的单个位。在一些示例中,索引权重字118包括多个位。在一些示例中,索引权重字118是四位索引字。在一些示例中,索引权重字118是八位索引字。在一些示例中,索引权重字118是十六位索引字。在一些示例中,索引权重字118是三十二位索引字。
在一些示例中,十六位权重由权重编码器128使用八位权重字来编码。然而,权重字的位的数量可涵盖任何值,并且权重的位的数量可涵盖任何值。在一些示例中,裁剪最高有效字节(MSB)(或最高有效部分)并且未裁剪最低有效字节(LSB)(或最低有效部分),然后将最低有效字节(LSB)(或最低有效部分)进行符号扩展以创建带符号的十六位值(或用于编码的任何位值)。例如,当裁剪权重字是最高有效部分时,使用最低有效部分的符号来填充最高有效部分。在一些示例中,索引权重字118可以是八位索引字。对于每个十六位权重,权重编码器128被配置为将十六位权重的最高有效字节(MSB)识别为裁剪权重字126,并且将最低有效字节(LSB)识别为非裁剪权重字120,并且将最低有效字节(LSB)进行符号扩展。在一些示例中,权重编码128被配置为将十六位权重的最低有效字节(LSB)识别为裁剪权重字126,并且将最高有效字节(MSB)识别为非裁剪权重字120,并且在这种情况下,最低有效字节(LSB)为零。
图1B示出了根据一个方面的完全连接的神经网络106。神经网络106包括用于接收一组输入135(例如,输入值)并且生成一组输出136(例如,输出值)的一组计算进程。在一些示例中,该组输出136中的每个输出值可表示语音命令,并且输入值可表示语音(例如,频域中的音频数据)。神经网络106包括多个层129,其中每个层129包括多个神经元131。多个层129可包括输入层130、一个或多个隐藏层132和输出层134。在一些示例中,输出层134的每个输出表示可能的识别(例如,语音命令或图像标识的机器识别)。在一些示例中,具有最高值的输出层134的输出表示最可能对应于输入的识别。
在一些示例中,神经网络106是深度神经网络(DNN)。例如,深度神经网络(DNN)可具有设置在输入层130和输出层134之间的一个或多个隐藏层132。然而,神经网络106可以是任何类型的人工神经网络(ANN),包括卷积神经网络(CNN)。一个层129中的神经元131经由突触138连接到另一层中的神经元131。例如,图1B中的每个箭头可表示单独的突触138。完全连接的层129(诸如图1B所示)经由突触138将一个层129中的每个神经元131连接到相邻层129中的每个神经元。
每个突触138与权重114a相关联。权重114a是神经网络106内在隐藏层132内转换输入数据的参数。当输入进入神经元131时,将该输入乘以权重值(例如,权重字),并且观察所得的输出或将该输出传递到神经网络106中的下一层。例如,每个神经元131具有对应于神经元活动的值(例如,激活值)。该激活值可以是例如介于0和1之间的值或介于-1和+1之间的值。每个神经元131的值由将每个神经元131耦接到前一层129中的其他神经元131的突触138的集合确定。给定神经元131的值与前一层129中所有神经元131的累加加权总和相关。换句话讲,将第一层129中的每个神经元131的值乘以对应的权重,并且将这些值求和以计算第二层129中的神经元131的激活值。另外,可将偏置加到总和中以调节神经元131的总体活性。此外,可将包括偏置的总和应用于激活函数,该激活函数将总和映像到范围(例如,0至1)。可能的激活函数可包括(但不限于)修正线性单元(ReLu)、sigmoid或双曲正切(TanH)。
图1C示出了被部分连接的神经网络106。例如,类似于图1B,神经网络106包括用于接收一组输入135(例如,输入值)并且生成一组输出136(例如,输出值)的一组计算进程。另外,神经网络106包括多个层129,其中每个层129包括多个神经元131,并且层129包括输入层130、一个或多个隐藏层132和输出层134。一个层129中的神经元131经由突触138连接到相邻层129中的神经元131。然而,与图1B不同,神经网络106不完全连接,其中一个层129中的每个神经元131不经由突触138连接到相邻层129中的每个神经元。例如,如上所述,权重114a包括裁剪权重字126和非裁剪权重字120。如果突触138与裁剪权重字126相关联,则该突触138(以及因此对应的权重)可被认为是被从神经网络106裁剪的或移除的,从而产生部分连接的(或不规则的)神经网络106。
图1D示出了神经网络训练器122的示例,该神经网络训练器在学习过程期间(例如,确定权重114a期间)可将非常小(并且因此几乎没有重要性)的权重114a设置为零。例如,如图1D所示,神经网络106的一部分包括第一层129-1和第二层129-2,该第一层129-1具有四个神经元131(例如,第一神经元131-1、第二神经元131-2、第三神经元131-3和第四神经元131-4),并且该第二层129-2具有四个神经元131(例如,第一神经元131-1、第二神经元131-2、第三神经元131-3和第四神经元131-4)。在裁剪进程之前,第二层129-2中的每个神经元131经由突触138连接到第一层129-1中的每个神经元131(例如,第二层129-2是完全连接的层)。然而,如果与相应突触138相关联的权重114a低于阈值水平,则该权重114a被设置为零,这产生不太复杂的神经网络106。如图1D所示,在裁剪进程之后,存在表示非裁剪权重字120的五个突触138:a(具有权重字值“aaaa”)、b(具有权重字值“bbbb”)、c(具有权重字值“cccc”)、d(具有权重字值“dddd”)和e(具有权重字值“eeee”)。权重114a的其余部分被设置为零(“0000”),从而表示裁剪权重字126。例如,神经网络训练器122被配置为生成权重114a,该权重包括裁剪权重字126和非裁剪权重字120。尽管图1D将权重字示出为四位,但每个权重字可包括任何数量的位,包括八位权重字或十六位权重字等。如果权重114a被存储在设备102上的存储器中,则该存储器(例如,权重存储器112)的大小可能由于该存储器必须存储许多裁剪权重字126而相当大。
图2至图4示出了用于裁剪权重字126的位编码的不同编码机制。例如,图2至图4示出了不同编码方案,权重编码器128可使用这些不同编码方案来生成编码权重114,使得裁剪权重字126的值不被包括在编码权重114中,从而减少存储编码权重114所需的存储器(例如,权重存储器112)的量。
图2示出了根据一个方面的用于对图1D的权重114a进行编码以生成编码权重214的编码方案213。编码权重214可以是图1A至图1D的编码权重114的示例,并且可包括本文相对于这些附图所讨论的任何细节。如上所述,图1D的权重114a可表示十六个权重字,包括裁剪权重字126和非裁剪权重字120。在该示例中,每个权重字为四位。编码方案213使用针对裁剪权重字126的单个位编码。
编码权重214的序列不包括裁剪权重字126的值(“0000”)。相反,编码权重214包括表示权重字的序列内存在裁剪权重字126的编码数据216。编码数据216可以是表示裁剪权重字126的单个位。在一些示例中,如图2所示,逻辑低值(“0”)指示存在裁剪权重字126。在一些示例中,逻辑高值(“1”)指示存在裁剪权重字126。
使用图1D的权重114a的示例,根据图2的编码方案213,第一权重字(“0000”)是裁剪权重字126,因此编码权重214中的第一位是值为零的单个位(例如,编码数据216)。下一个权重字(“aaaa”)是非裁剪权重字120,因此编码权重214中的下一位是该权重字的值(“aaaa”)。在一些示例中,将编码数据215(例如,单个位值“1”)设置在非裁剪权重字120前面以指示接下来的是非裁剪权重字120。第三权重字和第四权重字是裁剪权重字126,因此编码权重214中的下一位包括两个值为零的单个位(例如,编码数据216)的表述。第五权重字是非裁剪权重字120(“bbbb”),因此编码权重214中的下一位是该权重字的值(“bbbb”),该值之前是编码数据215(例如,值为“1”的单个位)。
第六权重字、第七权重字和第八权重字是裁剪权重字126,因此编码权重214中的下一位是三个值为零的单个位(例如,编码数据216)。第九权重字是非裁剪权重字120(“cccc”),因此编码权重214中的下一位是该权重字的值(“cccc”),该值之前是编码数据215(例如,值为“1”的单个位)。第十权重字是裁剪权重字126,因此编码权重214中的下一位包括值为零的单个位(例如,编码数据216)的表述。第十一权重字是非裁剪权重字120(“dddd”),因此编码权重214中的下一位是该权重字的值(“dddd”),该值之前是编码数据215(例如,值为“1”的单个位)。第十二权重字、第十三权重字、第十四权重字和第十五权重字为裁剪权重字126,因此编码权重214中的下一位包括四个值为零的单个位(例如,编码数据216)的表述。第十六权重字是非裁剪权重字120(“eeee”),因此编码权重214中的下一位是该权重字的值(“eeee”),该值之前是编码数据215(例如,值为“1”的单个位)。
对于图2的编码方案213,可在位等级上执行解码逻辑。在图2中,箭头219表示对编码权重214进行解码所需的索引移位的数量。在该示例中,可能需要解压缩逻辑电路110来实现第十六索引移位以对编码权重214进行解码。在本公开中稍后进一步解释由解压缩逻辑电路110执行的解码的细节。
图3示出了根据一个方面的用于对图1D的权重114a进行编码以生成编码权重314的编码方案313。编码权重314可以是图1A至图1D的编码权重114的示例,并且可包括其中相对于这些附图所讨论的任何细节。如上所述,图1D的权重114a可表示十六个权重字,包括裁剪权重字126和非裁剪权重字120。使用索引权重字318以及之后的一个或多个非裁剪权重字120(或为空)来生成编码权重314。例如,编码方案313使用索引权重字318,该索引权重字之后是具有四位字边界的权重字(例如,使用八位压缩方案来压缩四位权重字)。
索引权重字318中的位的数量可等于该组中的权重字的数量。例如,特定的四位索引权重字318可表示四个权重字。如果索引权重字318中的位中的两个位具有逻辑值“0”并且索引权重字318中的其他位中的两个位具有逻辑值“1”,则该序列将包括两个裁剪权重字126和两个非裁剪权重字120。由于图1D的权重114a包括十六个字权重(并且索引权重字318是四位),因此将存在四个索引权重字318以表示十六个字权重。
参考图1D的权重114a,第一组四个权重字可由编码权重314中的第一索引权重字318表示,其中第一组包括“0000”、“aaaa”、“0000”和“0000”。图3的第一索引权重字318包括“0100”。由于索引权重字318中的“1”的数量为一,因此在第一索引权重字318之后应存在一个非裁剪权重字120。索引权重字318中的第一位指示第一权重字为裁剪权重字126(例如,具有值“0”)。索引权重字318中的第二位指示第二权重字是非裁剪权重字120(例如,具有值“1”),其中非裁剪权重字120的值(“aaaa”)位于索引权重字318之后。索引权重字318中的第三位指示第三权重为裁剪权重字126(例如,具有值“0”)。索引权重字318中的第四位指示第四权重为裁剪权重字126(例如,具有值“0”)。
然后,第二组四个权重字可由编码权重314的序列中的第二索引权重字318表示,其中接下来的四个权重字为“bbbb”、“0000”、“0000”和“0000”。由于第二索引权重字318中的“1s”的数量为一,因此在第二索引权重字318之后应存在一个非裁剪权重字120(“bbbb”)。该索引权重字318中的第一位指示该组中的第一权重字是非裁剪权重字120,其中非裁剪权重字120的值(“bbbb”)位于第二索引权重字318之后。第二索引权重字318中的第二位指示该组中的第二权重字为裁剪权重字126。第二索引权重字318中的第三位指示该组中的第三权重字为裁剪权重字126。该索引权重字318中的第四位指示该组中的第四权重字为裁剪权重字126。
然后,第三组四个权重字可由编码权重314的序列中的第三索引权重字318表示,其中接下来的四个权重字为“cccc”、“0000”、“dddd”和“0000”。由于第三索引权重字318中的“1s”的数量为二,因此在第三索引权重字318之后应存在两个非裁剪权重字120(“cccc”、“dddd”)。第三索引权重字318中的第一位指示该组中的第一权重字为非裁剪权重字120,其中非裁剪权重字120的值(“cccc”)位于第二索引权重字318之后。第三索引权重字318中的第二位指示该组中的第二权重字为裁剪权重字126。第三索引权重字318中的第三位指示该组中的第三权重字为非裁剪权重字120,其中非裁剪权重字120的值(“dddd”)位于权重字“cccc”之后。第三索引权重字318中的第四位指示该组中的第四权重字为裁剪权重字126。
然后,第四组四个权重字可由编码权重314的序列中的第四索引权重字318表示,其中接下来的四个权重字是“0000”、“0000”、“0000”和“eeee”。由于第四索引权重字318中的“1s”的数量为一,因此在第四索引权重字318之后应存在一个非裁剪权重字120(“eeee”)。第四索引权重字318中的第一位指示该组中的第一权重字为裁剪权重字126。第四索引权重字318中的第二位指示该组中的第二权重字为裁剪权重字126。第四索引权重字318中的第三位指示该组中的第三权重字为裁剪权重字126。第四索引权重字318中的第四位指示该组中的第四权重字是非裁剪权重字120,其中非裁剪权重字120的值(“eeee”)位于第四索引权重字318之后。
对于图3的编码方案313,可在四位字等级上执行解码逻辑。在图3中,箭头319表示对编码权重314进行解码所需的索引移位的数量。在该示例中,可能需要解压缩逻辑电路110来实现四个索引移位以对编码权重314进行解码。在本公开中稍后进一步解释由解压缩逻辑电路110执行的解码的细节。在一些示例中,与对图2的编码权重214进行解码相比,用于对图3的编码权重314进行解码的解码逻辑可不太复杂并且更快。
图4示出了根据一个方面的用于对图1D的权重114a进行编码以生成编码权重414的编码方案413。编码权重414可以是图1A至图1D的编码权重114的示例,并且可包括其中相对于这些附图所讨论的任何细节。如上所述,图1D的权重114a可表示十六个权重字,包括裁剪权重字126和非裁剪权重字120。使用索引权重字418以及之后的一个或多个非裁剪权重字120(或为空)来生成编码权重414。例如,编码方案413使用索引权重字418,该索引权重字之后是具有八位字边界的权重字。
索引权重字418中的“1s”的数量指示非裁剪权重字120的数量。参考图1D和图4,由于非裁剪权重字120的数量为五,因此索引权重字418中存在五个“1s”。由于索引权重字418为八位,并且将四位字权重存储在八位边界中,因此单个索引权重字418可表示图1D的十六个权重字。
具体地,由于字权重为四位,但是编码方案413以八位来对字权重进行存储,因此索引权重字418中的第一位表示前两个权重字(例如,0000、aaaa)。由于这对权重字包括非裁剪权重字120,因此索引权重字418中的第一位具有逻辑值“1”。指示“1”指示权重字跟随索引权重字418。由于该编码方案针对四位权重使用八位边界,因此前四个位为“0000”,之后为“aaaa”的非裁剪权重字120。
参考图1D,接下来的两个字权重为裁剪权重字126(“0000”、“0000”),因此索引权重字418中的第二位具有逻辑值“0”。值“0”指示之后没有权重字(例如,因为这些权重字是剪裁权重字126)。然后,列表中接下来的两个字权重为“bbbb”和“0000”,并且由于该对包括非裁剪权重字120,因此索引权重字418中的第三位具有逻辑值“1”,其中“bbbb”跟随最后的权重字“aaaa”。然后,由于列表中接下来的两个字权重为“0000”和“0000”(例如,裁剪权重字126),因此索引权重字418中的第四位具有逻辑值“0”。列表中接下来的两个字权重为“0000”和“cccc”,并且由于该对包括非裁剪权重字120,因此索引权重字418中的第四位具有逻辑值“1”,其中“0000”和“cccc”跟随最后的字权重“bbbb”。列表中接下来的两个字权重为“0000”和“dddd”,并且由于该对包括非裁剪权重字120,因此索引权重字418中的第五位具有逻辑值“1”,其中“0000”和“dddd”跟随最后的字权重“cccc”。列表中接下来的四个字权重为“0000”、“0000”、“0000”和“0000”,因此索引权重字418中的第六位和第七位可具有逻辑值“0”,但在该示例中,由于索引权重字418中的第六位具有逻辑值“1”,因此字权重“0000”和“0000”跟随最后的字权重“dddd”。由于下一权重字为“eeee”,因此索引权重字418中的第八位作为逻辑值“1”,其中“eeee”跟随最后的字权重“0000”。
对于图4的编码方案413,可在八位字等级上执行解码逻辑。在图4中,箭头419表示对编码权重314进行解码所需的索引移位的数量。在该示例中,解码逻辑可对索引权重字418中的“1”的数量进行计数以确定非裁剪权重字120的数量,并且实现单个索引移位以对图1D的十六个字进行解码。在一些示例中,与对图3的编码权重314进行解码相比,用于对图4的编码权重414进行解码的解码逻辑可不太复杂并且更快(例如,快很多)。
图5示出了根据示例的解压缩逻辑电路510的示例。解压缩逻辑电路510可以是图1A至图1D的解压缩逻辑电路110的示例,并且可包括参考这些附图所讨论的任何细节。解压缩逻辑电路510可包括权重解码器511,该权重解码器被配置为对编码权重514进行解码。在一些示例中,解压缩逻辑电路510包括多个权重解码器511(例如,两个或更多个),其中每个权重解码器511(例如,并行地或顺序地)对编码权重514的单独部分进行解码。可根据本文所讨论的编码方案中的任一种来生成编码权重514。在一些示例中,编码权重514包括索引权重字518、之后是一个或多个非裁剪权重字520(如果有的话)的序列。索引权重字518包括位的序列(例如,四个位、八个位、十六个位等),其中每个位具有第一位值(例如,“0”)或第二位值(“1”)。第一位值可指示裁剪权重字(例如,已经从编码权重514中移除的权重字)。第二位值可指示未裁剪权重字520(例如,跟随索引权重字518的未裁剪权重字520)。
权重解码器511包括索引字解码器544、多个移位器540和多个数字逻辑门542。移位器540包括第一移位器540-1、第二移位器540-2至第N移位器540-N。移位器540的数量可取决于提供到输入-权重乘法器508的解码字的量。在一些示例中,移位器540并联连接到索引字解码器544,这可使解码相对较快。在一些示例中,每个移位器540被配置为从索引字解码器544接收跟随索引权重字518的非裁剪权重字520的序列以及控制信号,该索引字解码器确定应用于该非裁剪权重字520的序列的移位操作。在一些示例中,移位器540包括可将数据字移位指定的位数量的一个或多个数字电路。在一些示例中,移位器540是一系列的复用器。在一些示例中,移位器540包括级联的触发器。在一些示例中,移位器540包括一个或多个筒形移位器。
数字逻辑门542可包括第一数字逻辑门542-1、第二数字逻辑门542-2和第三数字逻辑门542-3至第N数字逻辑门542-N。第二数字逻辑门542-2和第三数字逻辑门542-3至第N数字逻辑门542-N可连接到相应移位器540的输出。在一些示例中,第一解码字因为不需要移位操作而不需要移位器540,(例如,第一数字逻辑门542-1从索引字解码器544接收非裁剪权重字520和控制信号)。在一些示例中,每个数字逻辑门542包括被配置为执行与运算的与逻辑门。第一数字逻辑门542-1被配置为接收非裁剪权重字520(例如,移位操作将不应用于非裁剪权重字520以恢复第一解码字),第二数字逻辑门542-2连接到第一移位器540-1的输出,并且第三数字逻辑门542-3至第N数字逻辑门542-N分别连接到第二移位器540-2至第N移位器540-N。每个数字逻辑门542从索引字解码器544接收控制信号,以控制由相应数字逻辑门542实现的布尔运算(例如,与运算)。例如,第一数字逻辑门542-1可接收控制信号“1”或“0”,并且接收非裁剪权重字520,并且使用“1”或“0”以及非裁剪权重字520执行布尔运算。第一数字逻辑门542-1的输出为解码字1,第二数字逻辑门542-2的输出为解码字2,第三数字逻辑门542-3的输出为解码字3,并且第N数字逻辑542-N的输出为解码字N。
具体地,索引字解码器544接收索引权重字518,并且基于索引权重字518控制移位器540和数字逻辑门542,以便获得解码字1至N。由索引字解码器544生成以控制由移位器540执行的移位的控制信号(或它们的至少一部分)可基于索引权重字518的位值。另外,由索引字解码器544生成以控制由数字逻辑门542执行的操作的控制信号(或它们的至少一部分)可基于索引权重字518的位值。
使用图4和图1D的示例,索引权重字518可以是“10101101”(例如,8位索引字)。第一数字逻辑门542-1可接收非裁剪权重字520的序列(例如,权重字1至N)。由索引字解码器544生成的用于控制第一数字逻辑门542-1的控制信号可基于第一位的位值。第一数字逻辑门542-1可接收非裁剪权重字520,并且在一些示例中,因为索引权重字518中的第一位包括逻辑值“1”,这指示存在非裁剪权重字520,所以索引字解码器544可生成控制信号“1”并且将该控制信号发送到第一数字逻辑门542-1。第一数字逻辑门542-1可使用“1”和非裁剪权重字520来执行与运算,这产生第一解码字1(“0000aaaa”)。
第一移位器540-1可接收非裁剪权重字520的序列,并且因为索引权重字518中的第二位的位值为“0”,所以索引字解码器544可控制第一移位器540-1以使非裁剪权重字520不移位(或由于移位器的输出将不被使用而传输任何移位值)。第二数字逻辑门542-2可接收第一移位器540-1的输出,并且在一些示例中,因为索引权重字518中的第二位包括逻辑值“0”,所以索引字解码器544可生成控制信号“0”并且将该控制信号发送到第二数字逻辑门542-2。第二数字逻辑门542-2可使用“0”以及第一移位器540-1的输出来执行与运算,这产生解码字2(“00000000”)。
第二移位器540-2可接收非裁剪权重字520的序列,并且因为索引权重字518中的第三位的位值为“1”,这指示存在非裁剪权重字520,所以索引字解码器544可控制第二移位器540-2以使非裁剪权重字520移位(一个字节或8个位),使得接下来的八个字边界(“bbbb0000”)在第二移位器540-2的输出处对准。第三数字逻辑门542-3可接收第二移位器540-2的输出,并且在一些示例中,因为索引权重字518中的第三位包括逻辑值“1”,所以索引字解码器544可生成控制信号“1”并且将该控制信号发送到第三数字逻辑门542-3。第三数字逻辑门542-3可使用“1”以及第二移位器540-2的输出来执行与运算,这产生解码字3(“bbbb0000”)。该进程将继续,直到从编码权重514恢复所有的权重字。相对于图1D和图4的示例,由于图5中的每个解码字包含两个权重字,总共十六个权重字(例如,图1D所示),因此移位器540的数量N将为七,并且数字逻辑门542的数量N将为八,从而获得解码字1至解码字8。
图6示出了根据一个方面的神经网络电路604。神经网络电路604可以是图1A至图1D的神经网络电路104的示例,并且可包括关于这些附图的任何细节和/或图2至图5的细节。神经网络电路604包括处理器存储器650、输入/输出(I/O)部件652、处理器数据总线654、加速器656和处理器658。在一些示例中,处理器658为主机处理器。在一些示例中,神经网络电路604是片上系统(SOC)(例如,耦接到半导体基板的集成电路)。在一些示例中,神经网络电路604是语音或声音识别设备的一部分。在一些示例中,神经网络电路604是助听器设备的一部分。虽然下面的描述涉及语音或声音识别设备,但本文所讨论的概念可应用于其他应用。
神经网络电路604可从I/O部件652(例如,麦克风)接收输入值,并且通过处理被训练成将特定输入值识别为具有特定含义的神经网络来识别该输入值。例如,该输入值可以是从音频流生成的梅尔频率倒谱系数(Mel-frequency cepstral coefficients,MFCC)。在一些示例中,周期性地(例如,每10毫秒)捕获帧音频样本,并且将该样本转换到频域以输入到神经网络(例如,图1A的神经网络106)。
处理器658耦接到处理器数据总线654。在一些示例中,处理器658可经由在处理器658上运行的软件来执行神经网络的处理的一部分(例如,不处理、部分处理)。处理器存储器650耦接到处理器数据总线654。在一些示例中,处理器存储器650包括图1A的权重存储器112,并且存储图1的编码权重114。加速器656耦接到处理器数据总线654。加速器656可以是图1的加速器156的示例,该加速器包括图1A的解压缩逻辑电路110和输入-权重乘法器108。
加速器656可执行神经网络的处理的一部分(例如,全部处理、部分处理)。在一些示例中,加速器656可使用与处理器658相同的处理器数据总线654和相同的处理器存储器650。加速器656可使用处理器数据,但是当该处理器数据未被处理器658使用时才可使用。对于在加速器656和处理器658之间拆分神经网络的任务(例如,计算)的实施方式,加速器656可触发处理器658通过生成中断来执行任务。在接收到该中断时,处理器658可从(共享)处理器存储器650读取输入值,执行任务,将结果写入处理器存储器650,并且将控制返回到(即,重启)加速器656。
图7示出了根据一个方面的加速器756的示例。加速器756可以是图1A的加速器156的示例。加速器756包括输入数据提取器760、解压缩逻辑电路710、偏置提取器762和输出写入器764。另外,加速器756包括计数器逻辑部件766,该计数器逻辑器被配置为生成中断命令并且与图6的处理器存储器650进行交互。输入数据提取器760、解压缩逻辑电路710、偏置提取器762和输出写入器764中的每一者可与处理器数据总线(例如,图6的处理器数据总线654)进行交互。在一些示例中,输入数据提取器760是环形缓冲器。输入数据提取器760可接收和存储被转换到频域的音频样本。输入数据提取器760可保持神经网络运行的音频长度(例如,0.4秒至2秒)。解压缩逻辑电路710可以是图1A的解压缩逻辑电路110的示例。解压缩逻辑电路710可从图6的处理器存储器650检索编码权重并且对该编码权重进行解码。
加速器756还包括输入寄存器770,该输入寄存器被配置为从输入数据提取器760接收输入数据,以及权重寄存器768该权重寄存器被配置为从解压缩逻辑电路710接收解码权重。加速器756包括多个输入-权重乘法器708,该输入-权重乘法器将来自权重寄存器768的解码权重与来自输入寄存器770的输入数据相乘。输入-权重乘法器708包括四个乘法器,例如,第一输入-权重乘法器708-1、第二输入-权重乘法器708-2、第三输入-权重乘法器708-3和第四输入-权重乘法器708-4。尽管图7中示出了四个输入-权重乘法器708,但输入-权重乘法器708的数量可以是大于四的任何数量,诸如二十个输入-权重乘法器708、四十个输入-权重乘法器708、六十个输入-权重乘法器708等。加速器756包括:求和单元772,该求和单元被配置为对输入-权重乘法器708的结果进行求和;累加器寄存器774,该累加器寄存器用于接收求和单元772的结果;以及累加器776,该累加器用于对累加器寄存器774的内容进行累加。加速器756包括偏置加法器778,该偏置加法器接收偏置提取器762的偏置并且将该偏置加到累加器776的输出。加速器756包括实现激活函数的查找表(LUT)601,以及被配置为生成神经网络层的输出的复用器782。
加速器756的操作通常包括在多个突触(即,权重)上处理多个神经元(例如,如图所示的四个)。在第一循环中,将与第一神经元相关联的四个突触乘以四个输入(例如,层输入),并且将总和存储在累加器寄存器774中的一个中。在下一循环中,将与第二神经元相关联的不同组的突触乘以(相同的)四个输入,并且将累加的总和存储在累加器寄存器774的下一寄存器中。重复该进程,直到所有的累加器寄存器774都被写入。一旦所有的累加器寄存器774都被写入,就获得针对第一神经元的新的一组四个输入,乘以权重,并且与先前存储的寄存器值累加。继续该进程,直到计算了层中的每个节点。此时,由偏置加法器778将偏置施加到神经元值,并且由查找表780将激活函数应用到神经元值,然后施加到复用器782。
在一些示例中,加速器756允许软件控制神经网络处理,并且允许硬件或软件应用激活函数。可通过选择到复用器782的输入之一来配置对激活函数的应用。当使用硬件时选择复用器782的上输入,并且当使用软件时选择复用器782的下输入。当在硬件中应用激活函数时,可以进行激活值的回写,并且可在不与主机处理器(例如,图6的处理器658)交互的情况下处理整个层。在操作中,可从存储器中提取偏置,并且将该偏置加到累加总和中。然后,可在硬件中执行激活函数,并且将所得的神经元值存储在存储器中。可针对层中的其他神经元重复该进程。在处理和存储多个神经元之后,可(由计数器逻辑部件766)针对主机处理器(例如,图6的处理器658)生成中断。在接收到中断时并且在更新寄存器之后,主机处理器(例如,图6的处理器658)可针对下一层再次重启加速器756,并且重复该进程直到已处理整个神经网络。
图8示出解压缩逻辑电路810的示例。解压缩逻辑电路810可以是图1A的解压缩逻辑电路110和/或图7的解压缩逻辑电路710的示例,并且可包括本文所讨论的任何细节。解压缩逻辑电路810包括移位器880、权重字缓冲器882、第一权重解码器811-1、第二权重解码器811-2、控制逻辑部件888、移位器890和权重寄存器868。
移位器880可根据由控制逻辑部件888计算的权重缓冲器填充等级884来将编码权重814从权重存储器(例如,图6的处理器存储器650或图1A的权重存储器112)对准到权重字缓冲器882中。在一些示例中,控制逻辑部件888被配置为将权重存储器读取请求传输到存储器(经由箭头813进行),并且接收确认消息(经由箭头807进行)。在一些示例中,控制逻辑部件888被配置为确定存储器读取状态892以确定从存储器读取的编码权重814的等级。编码权重814可根据本文所讨论的任何编码技术来编码。
移位器880可从存储器(例如,图6的处理器存储器650、图1A的权重存储器112)接收编码权重814,并且将编码权重814对准到权重字缓冲器882中。权重字缓冲器882可暂时存储编码权重814,直到编码权重814被提供给第一权重解码器811-1(经由箭头819进行)。在一些示例中,第一权重解码器811-1被配置为对单个时钟循环内多达最大数量的任何数量的权重字进行解码。最大数量的权重字可以是八个权重字、十六个权重字、三十二个权重字等。
在一个示例中,如果能够由第一权重解码器811-1解码的权重字的最大数量是十六,但是权重字的总数是三十二个权重字,则第一权重解码器811-1可将剩余的权重字提供给第二权重解码器811-2(经由箭头821进行)。然后,如果存在任何剩余字,则第二权重解码器811-2将那些剩余字提供回权重字缓冲器882(经由箭头837进行)。因此,在一些示例中,第一权重解码器811-1可对编码权重814的一部分进行解码,并且第二权重解码器811-2可对编码权重814的另一部分进行解码。在一些示例中,第一权重解码器811-1接收第一索引权重字以及非裁剪权重字的序列,然后对第一索引权重字进行解码以获得第一组权重字,并且第二权重解码器811-2接收第二索引权重字(例如,后续索引权重字)以及剩余的非裁剪权重字,然后对第二索引权重字进行解码以获得第二组权重字。尽管示出了两个权重解码器811,但是解压缩逻辑电路810可包括任何数量的权重解码器811(这可取决于特定的实施方式)。
第一权重解码器811-1可从控制逻辑部件888接收信号(经由箭头815进行),其中该信号指示可用缓冲器字的数量。例如,如果压缩方案使用八位压缩大小,则每个权重字为八个位(或一个字节)。如果权重字缓冲器882包含四个权重字(例如,一个索引权重字加上三个非裁剪权重字),则对于可用缓冲器字的数量,来自控制逻辑部件888的信号将指示数字四。
换句话讲,控制逻辑部件888可监测和跟踪权重缓冲器填充等级884(例如,权重字缓冲器882中的权重字的量)。可用缓冲器字的数量可以是存储在权重字缓冲器882中的可用于解码的权重字的量。在一些示例中,第一权重解码器811-1可接收权重字缓冲器882中的可用缓冲器字的量(经由箭头815进行),以确定是否存在足够数量的权重字来对它们进行解码。在一些示例中,第一权重解码器811-1还可从控制逻辑部件888接收信号(经由箭头817进行),其中该信号包括解码请求。在一些示例中,该解码请求包括所请求的权重的数量。例如,控制逻辑部件888可确定待由第一权重解码器811-1解码的权重的量,并且在信号中将该数字传输至第一权重解码器811-1(经由箭头817进行)。在一些示例中,第一权重解码器811-1可将所请求的权重的数量(经由箭头817接收)与可用缓冲器字的数量(经由箭头815接收)进行比较,以确定是否对权重字缓冲器882中的编码权重814进行解码。例如,如果可用缓冲器字的数量等于或大于所请求的权重的数量,则第一权重解码器811-1可对编码权重814的权重字进行解码,并且将解码字提供给移位器890(经由箭头835进行)。
在一些示例中,第一权重解码器811-1生成信号并且将该信号发送到第二权重解码器811-2(经由箭头823进行),其中该信号指示所使用的字的量(例如,已由第一权重解码器811-1进行解码的权重字的量)。另外,第一权重解码器811-1生成信号并将该信号发送到第二权重解码器811-2(经由箭头825进行),其中该信号指示可用解码字的数量。在一些示例中,第一权重解码器811-1生成信号并且将该信号发送到第二权重解码器811-2(经由箭头821进行),其中该信号包括剩余字。剩余字可以是仍然可用的权重字(例如,该权重字超过能够由第一权重解码器811-1解码并且在权重字缓冲器882中可用的权重字的最大数量)。
第二权重解码器811-2可接收剩余字(经由箭头821进行)、所使用的字的数量(经由箭头823进行)以及可从第一权重解码器811-1获得的解码字的数量(经由825进行)。另外,第二权重解码器811-2可从控制逻辑部件888接收解码请求(经由箭头827进行)。第二权重解码器811-2可对来自编码权重814的剩余字进行解码,并且将解码字提供给移位器890(经由箭头829进行)。如果在第二权重解码器811-2执行解码操作之后剩余任何的剩余字,则第二权重解码器811-2将那些剩余字返回到权重字缓冲器882(经由箭头837进行)。此外,第二权重解码器811-2可生成信号并且将该信号发送到控制逻辑部件888(经由箭头831进行),其中该信号指示可用解码字的数量。另外,第二权重解码器811-2可生成信号并且将该信号发送到控制逻辑部件888(经由箭头833进行),其中该信号指示所使用的字的数量(例如,由第二权重解码器811-2解码的权重字的数量)。
解压缩逻辑电路810包括移位器890和权重寄存器868。权重寄存器868可以是图7的权重寄存器768的示例。移位器890可从第一权重解码器811-1(经由箭头835进行)和/或第二权重解码器811-2(经由箭头829进行)接收解码字,并且将解码字对准到适当的权重寄存器868中。然后,将来自权重寄存器868的解码字提供给对应的输入-权重乘法器808。输入-权重乘法器808可以是图7的输入-权重乘法器708的示例。在一些示例中,控制逻辑部件888可与移位器890通信以监测权重寄存器868中的权重的量。例如,控制逻辑部件888可基于从移位器890接收的信息来确定权重寄存器填充等级886,并且基于权重寄存器填充等级886来控制被置于权重寄存器868中的解码字的量。
在一些示例中,在每个时钟循环向权重寄存器868提供新的解码权重字。在一些示例中,输入-权重乘法器808的数量为十六,并且解压缩逻辑电路810被配置为在一个时钟循环中对十六个权重进行解码。在一些示例中,时钟循环大于二十兆赫。在一些示例中,时钟循环大于四十兆赫。在一些示例中,时钟循环大于六十兆赫。
下面的描述描述了用于对八十个权重进行解压缩的解压缩逻辑电路810的示例性操作,该八十个权重已经根据图4的编码方案413使用权重裁剪进行了压缩。下表1提供了以小端格式(little endian format)存储压缩权重(例如,第一权重字在顶部、右框中,并且从右到左读取)的三十二位存储器的内容。例如,这些压缩权重可存储在图1A的权重存储器112或图6的处理器存储器650中。
表1
cccc0000 | bbbb0000 | 0000aaaa | 10101101 |
0000ffff | 01101010 | 0000eeee | dddd0000 |
00000100 | kkkkjjjj | iiii0000 | hhhhgggg |
0000mmmm | 11010001 | 00000000 | llll0000 |
XXXXXXXX | qqqq0000 | 0000pppp | oooonnnn |
在该示例中,权重字大小为四个位,并且压缩字大小为八个位,并且粗体数字指示索引权重字(例如,图4的索引权重字418)。在一些示例中,解压缩逻辑电路810对存储在表1中的权重进行解码以获得八十个权重(例如,四十个权重字,每个权重字为四个位),该八十个权重被提供给十六个输入-权重乘法器808。利用该配置,请求最多八个权重字,因此仅使用第一权重解码器811-1。
在初始状态下,权重字缓冲器882的缓冲器长度为零,并且权重字缓冲器882的内容为空。第一权重解码器811-1从控制逻辑部件888接收所请求权重的数量(经由箭头817进行)。在该示例中,因为第一权重解码器811-1能够解码的数量为八个,所以所请求的权重的数量是八个。另外,第一权重解码器811-1接收可用字的数量(经由箭头815进行)。在该示例中,因为权重字缓冲器882为空的(例如,还没有可用的字),所以可用字的数量为零。因为可用字的数量小于所请求的权重字的数量,所以第一权重解码器811-1被配置为不执行解码操作。另外,第一权重解码器811-1可确定所使用的字的数量为零(例如,因为没有权重字被解码)并且剩余字的数量为零。
解压缩逻辑电路810可从存储器读取编码权重814。下面的描述使用三十二位读取(例如,四字节数据,由于压缩字大小为八个位(或一个字节),因此将在每个读取中读取四个权重字)。然而,解压缩逻辑电路810可从存储器读取任何数量的位,包括大于三十二位的存储器读取。
例如,解压缩逻辑电路810被配置成能够执行对存储器内容的第一读取,其中移位器880将权重字缓冲器882中的以下权重对准:cccc0000;bbbb0000;0000aaaa;10101101。在第一读取之后,权重字缓冲器882的缓冲器长度为四(例如,四个字节的数据),并且权重字缓冲器882的缓冲器内容包括:cccc0000;bbbb0000;0000aaaa;10101101。第一权重解码器811-1从控制逻辑部件888接收所请求权重的数量(经由箭头817进行)。在该示例中,在第一读取之后,因为第一权重解码器811-1能够解码的数量为八个,所以所请求的权重的数量是八个。另外,第一权重解码器811-1接收可用解码权重字的数量(经由箭头815进行)。在该示例中,可用解码权重字的数量为零。第一权重解码器811-1可对索引权重字中的1的数量进行计数(该数量为五)。由于权重字缓冲器882仅包括三个字节的数据(但需要五个字节的数据来对第一索引权重字进行解码),因为权重字缓冲器882中没有足够数量的权重字,因此第一权重解码器811-1被配置为不执行解码操作。另外,第一权重解码器811-1可确定所使用的字的数量为零(例如,因为没有权重字被解码)并且剩余字的数量为四(例如,因为它们是四个八位权重字)。
然后,解压缩逻辑电路810被配置为执行对存储器内容的第二读取(例如,从存储器读取的另一个32位)。在第二读取之后,权重字缓冲器882的缓冲器长度为八(例如,八个字节的数据),并且权重字缓冲器882的缓冲器内容包括:0000ffff;01101010;0000eeee;dddd0000;cccc0000;bbbb0000;0000aaaa;10101101。第一权重解码器811-1从控制逻辑部件888接收所请求权重的数量(经由箭头817进行)。在该示例中,在第二读取之后,因为第一权重解码器811-1能够解码的数量为八个,所以所请求的权重的数量是八个。另外,第一权重解码器811-1接收可用解码权重字的数量(经由箭头815进行)。在该示例中,可用解码权重字的数量为八。第一权重解码器811-1对索引权重字中的1的数量进行计数,并且由于权重字缓冲器882中的权重字的数量等于或大于索引权重字中的1的数量,因此第一权重解码器811-1被配置为对权重字进行解码以获得一组解码权重字。第一权重解码器811-1被配置为对六个权重字(例如,索引权重字“10101101”加上以小端格式跟随该索引字的五个权重字)进行解码。换句话讲,为了确定使用字的数量,第一权重解码器811-1可对索引权重字中的1的数量进行计数(该数量为五),然后为索引权重字本身添加一个字而总共六个被使用字。然后,第一权重解码器811-1可确定剩余字的数量,在该示例中,剩余字的数量为二(例如,权重字的量(8)减去被使用字的量(6))。
然后,解压缩逻辑电路810被配置为执行对存储器内容的第三读取。在第三读取之后,权重字缓冲器882的缓冲器长度为六(例如,六个字节的数据),并且权重字缓冲器882的缓冲器内容包括:00000100;kkkkjjjj;iiii0000;hhhhgggg;0000ffff;01101010。第一权重解码器811-1从控制逻辑部件888接收所请求权重的数量(经由箭头817进行)。在该示例中,在第三读取之后,因为第一权重解码器811-1能够解码的数量为八个,所以所请求的权重的数量是八个。另外,第一权重解码器811-1接收可用解码字权重字的数量(经由箭头815进行)。在该示例中,可用字的数量为八。同样,第一权重解码器811-1确定索引权重字中的1的数量(该数量为四),并且由于权重字缓冲器882包括至少四个字节的数据,因此第一权重解码器811-1被配置为对该权重进行解码。在第三读取之后,第一权重解码器811-1被配置为对五个权重字(例如,索引权重字“01101010”加上以小端格式跟随该索引字的四个权重字)进行解码。换句话讲,为了确定使用字的数量,第一权重解码器811-1可对索引权重字中的1的数量进行计数(该数量为四),然后为索引权重字本身添加一个字而总共五个被使用字。然后,第一权重解码器811-1可确定剩余字的数量,在该示例中,剩余字的数量为一(例如,缓冲器中的权重字的量(6)减去被使用字的量(5))。
然后,解压缩逻辑电路810被配置为执行对存储器内容的第四读取。在第四读取之后,权重字缓冲器882的缓冲器长度为五(例如,五个字节的数据),并且权重字缓冲器882的缓冲器内容包括:0000mmmm;11010001;00000000;llll0000;00000100。第一权重解码器811-1从控制逻辑部件888接收所请求权重的数量(经由箭头817进行)。在该示例中,在第四读取之后,因为第一权重解码器811-1能够解码的数量为八个,所以所请求的权重的数量是八个。另外,第一权重解码器811-1接收可用解码权重字的数量(经由箭头815进行)。在该示例中,可用解码权重字的数量为八。因为索引权重字中的1的数量等于或大于权重字缓冲器882中的权重字的数量,所以第一权重解码器811-1被配置为对权重进行解码。在第四读取之后,第一权重解码器811-1被配置为使用两个权重字(例如,索引权重字“00000100”加上以小端格式跟随该索引字的一个权重字)来对权重进行解码。换句话讲,为了确定使用字的数量,第一权重解码器811-1可对索引权重字中的1的数量进行计数(该数量为一),然后为索引权重字本身添加一个字而总共两个被使用字。然后,第一权重解码器811-1可确定剩余字的数量,在该示例中,剩余字的数量为三(例如,缓冲器中的权重字的量(5)减去被使用字的量(3))。
然后,解压缩逻辑电路810被配置为执行对存储器内容的第五读取。在第五读取之后,权重字缓冲器882的缓冲器长度为七(例如,七个字节的数据),并且权重字缓冲器882的缓冲器内容包括:XXXXXXXX;qqqq0000;0000pppp;oooonnnn;0000mmmm;11010001;00000000。第一权重解码器811-1从控制逻辑部件888接收所请求权重的数量(经由箭头817进行)。在该示例中,在第五读取之后,因为第一权重解码器811-1能够解码的数量为八个,所以所请求的权重的数量是八个。另外,第一权重解码器811-1接收可用解码权重字的数量(经由箭头815进行)。在该示例中,可用解码权重字的数量为八。由于1的数量(该数量为零)等于或大于权重字缓冲器882中的权重字的数量,因此第一权重解码器811-1被配置为对该权重进行解码。在第五读取之后,第一权重解码器811-1被配置为使用一个权重字(例如,索引权重字“00000000”)来对该权重进行解码。然后,第一权重解码器811-1可确定剩余字的数量,在该示例中,剩余字的数量为六(例如,缓冲器中的权重字的量(7)减去被使用字的量(1))。
在第五读取之后,因为存储器的内容已经被读取,所以不需要从存储器中读取。在第五读取之后,权重字缓冲器882的缓冲器长度现在为六,并且权重字缓冲器882的缓冲器内容包括:XXXXXXXX;qqqq0000;0000pppp;oooonnnn;0000mmmm;11010001。所请求的权重的数量为八,并且可用解码权重字的数量为八。第一权重解码器811-1使用五个权重字对权重814进行解码,并且剩余字为一(例如,XXXXXXXX)。这样,将所有解码权重提供给输入-权重乘法器。
图9示出了根据一个方面的权重解码器911的示例。权重解码器911可以是图8的第一权重解码器811-1或第二权重解码器811-2。另外,权重解码器911可以是图5的权重解码器511的示例。
权重解码器911被配置为对编码权重进行解码。可根据本文所讨论的任何编码方案来生成编码权重。在一些示例中,编码权重包括索引权重字之后是一个或多个非裁剪权重字(如果有的话)的序列。索引权重字包括位的序列(例如,四个位、八个位、十六个位等),其中每个位具有第一位值(例如,“0”)或第二位值(“1”)。第一位值可指示裁剪权重字(例如,已经从编码权重中移除的权重字)。第二位值可指示未裁剪权重字(例如,跟随索引权重字的未裁剪权重字)。
权重解码器911包括索引字解码器944、多个移位器940和多个与门942。移位器940包括第一移位器940-1、第二移位器940-2、第三移位器940-3和第四移位器940-4至第N移位器940-N。在一些示例中,移位器940并联连接到索引字解码器944,这可使解码相对较快。在一些示例中,每个移位器940被配置为接收跟随索引权重字的非裁剪权重字的序列,以及来自索引字解码器944的控制信号,该索引字解码器确定应用于该非裁剪权重字的序列的移位操作。例如,在图9中,第一字(字0)可被认为是索引权重字,并且之后的字(字1…n)可被认为是非裁剪权重字。
权重解码器911可从前一解码器接收所使用的字的数量(例如,如果权重解码器911是图8的第二权重解码器811-2)、可用字的数量(例如,图8的权重字缓冲器882中的可用权重字的数量)、解码请求(其请求多个解码权重字,例如,八个解码权重字等)和未解码字(例如,索引权重字和未裁剪权重字)。权重解码器911可计算被使用字的数量,例如用于对权重进行解码的权重字(包括非裁剪权重字、索引权重字)的数量。另外,权重解码器911可生成和发送被解码的可用权重字的数量。
与门942可包括第一与门942-1、第二与门942-2和第三与门942-3至第N与门942-3。除了第一移位器940-1(该第一移位器输出剩余字)之外,每个与门942可连接到单独的移位器940的输出。在图9的示例中,第一与门942-1连接到第二移位器940-2的输出,第二与门942-2连接到第三移位器940-3的输出,并且第三与门942-3至第N与门942-N分别连接到第四移位器940-4至第N移位器940-N。
每个与门942从索引字解码器944接收控制信号,以控制由相应的与门942实现的与运算。例如,第一与门942-1可接收控制信号“1”或“0”,并且接收第二移位器940-2的输出,并且使用“1”或“0”和第二移位器940-2的输出来执行布尔运算。第一与门942-1的输出是解码字0,第二与门942-2的输出是解码字1,第三与门942-3的输出是解码字2,并且第N与门942-N的输出是解码字N。
具体地,索引字解码器944接收索引权重字(字0),并且基于索引权重字来控制移位器940和与门942,以便获得解码字0至N,并且将剩余字提供给另一权重解码器或提供回缓冲器。由索引字解码器944生成以控制由移位器940执行的移位的控制信号(或这些控制信号的至少一部分)可基于索引权重字的位值。另外,由索引字解码器944生成以控制由与门942执行的操作的控制信号(或这些控制信号的至少一部分)可基于索引权重字(例如,索引权重字118、318、418或518)的位值。
使用图4的编码方案413(以及图1D的权重),索引权重字可以是“10101101”(例如,8位索引字)。第一移位器940-1可接收非裁剪权重字(字1…n)的序列,并且索引字解码器944可控制第一移位器940-1来移位五个字节,使得剩余字从第一移位器940-1输出。例如,索引字解码器944可对索引权重字中的1的数量进行计数,并且由于1的数量为五(意味着五个权重字跟随索引权重字),索引字解码器944可控制第一移位器940-1移位五个字节(例如,每个压缩权重字在图4的编码方案413中为八个位),使得剩余字可被提供给下一解码器或提供回缓冲器。
第二移位器940-2可接收非裁剪权重字的序列,并且索引字解码器944可控制第二移位器940-1以不对非裁剪权重字移位,使得第一压缩权重字(例如,字1)与“0000aaaa”的第二移位器940-2对准。在一些示例中,因为第二移位器940-2将不必移位,所以省略了第二移位器940-2(例如,类似于图5的实施方案)。在那些示例中,来自未解码字的箭头将被扩展到第一与门942-1。由索引字解码器944生成以控制第一与门942-1(被连接到第二移位器940-2)的控制信号可基于索引权重字的第一位的位值。第一与门942-1可接收第二移位器940-2的输出,并且在一些示例中,因为索引权重字中的第一位包括逻辑值“1”,这指示存在非裁剪权重字,所以索引字解码器944可生成控制信号“1”并且将该控制信号发送到第一与门942-1。第一与门942-1可使用“1”和第二移位器940-2的输出来执行与运算,这产生解码字0(“0000aaaa”)。
第三移位器940-3可接收非裁剪权重字(字1…2)的序列,并且因为索引权重字中的第二位的位值为“0”,所以索引字解码器944可控制第三移位器940-3以不对非裁剪权重字进行移位(或由于移位器的输出将不被使用而传输任何移位值)。在一些示例中,第三移位器940-3可仅以字1和字2作为输入而移位,因此,第三移位器940-3可以是双输入复用器。另外,由索引字解码器944生成以控制第二与门942-2的控制信号可基于索引权重字中的第二位的位值。第二与门942-2可接收第三移位器940-9的输出,并且在一些示例中,因为索引权重字中的第二位包括逻辑值“0”,所以索引字解码器944可生成控制信号“0”并且将该控制信号发送到第二与门942-2。第二与门942-2可使用“0”和第三移位器940-3的输出来执行与运算,这产生解码字1(“00000000”)。
第四移位器940-4可接收非裁剪权重字(字1…3)的序列,并且,因为索引权重字中的第三位的位值为“1”,这指示存在非裁剪权重字,所以索引字解码器944可控制第四移位器940-4以使非裁剪权重字移位(一个字节或8个位),使得接下来的权重字(“bbbb0000”)与第四移位器940-4对准。另外,由索引字解码器944生成以控制第三与门942-3的控制信号可基于索引权重字中的第三位的位值。第三与门942-3可接收第四移位器940-4的输出,并且在一些示例中,因为索引权重字中的第三位包括逻辑值“1”,所以索引字解码器944可生成控制信号“1”并且将该控制信号发送到第三与门942-3。第三与门942-2可使用“1”和第四移位器940-4的输出来执行与运算,这产生解码字2(“bbbb0000”)。该进程将继续,直到从编码权重恢复所有的权重字。相对于图1D和图4的示例,由于图4中的每个解码字包含两个权重字,总共十六个未压缩权重字,因此移位器940的数量N将为八,并且与门942的数量N将为八,从而获得解码字0至解码字7。
如上所述,裁剪权重字被解码为零值权重字,并且使用零值权重字的乘法由输入-权重乘法器(例如,输入-权重乘法器108、508、708或808)执行。换句话讲,与跳过乘法的一些常规方法相比,即使权重字被裁剪,也仍然在硬件中执行乘法(例如,将零馈送到输入-权重乘法器)。
图10示出了描绘对神经网络的编码权重进行解码的示例性操作的流程图1000。尽管相对于图1A至图1D的神经网络系统100来描述图10的流程图1000,但流程图1000可适用于本文所述的任何实施方案。在一些示例中,神经网络系统100是设备102(例如,语音识别设备)的一部分。在一些示例中,设备102是助听器设备,该设备接收语音(例如,语音命令),然后使用神经网络106来确定哪个命令对应于该语音。
操作1002包括从权重存储器112检索编码权重114,其中该编码权重包括索引权重字118。编码权重114可根据本文所讨论的任何编码方案来编码。在一些示例中,索引权重字118包括多个位,其中每个位具有第一位值(例如,零)或第二位值(例如,一)。第一位值指示序列中的裁剪权重字126,并且第二位值指示序列中的非裁剪权重字120。另外,一个或多个非裁剪权重字120可跟随索引权重字118。
操作1004包括使用索引权重字118对编码权重114进行解码,以获得一个或多个裁剪权重字126和一个或多个非裁剪权重字120的序列。在一些示例中,裁剪权重字126包括零值权重字,并且非裁剪权重字120包括非零值权重字。在一些示例中,响应于索引权重字118内具有第一位值(例如,零)的位,将裁剪权重字126解码为零。在一些示例中,该解码包括基于索引权重字126来控制多个移位器(例如,图5的移位器540)和多个数字逻辑门542。在一些示例中,在单个时钟循环内对编码权重114进行解码。在一些示例中,时钟循环介于十五兆赫与八十兆赫之间。
操作1006包括将非裁剪权重字120和裁剪权重字126的序列提供给多个输入-权重乘法器108。例如,即使权重字被裁剪,仍然在硬件中执行乘法,其中将零馈送到输入-权重乘法器108。
在说明书和/或附图中,已经公开了典型的实施方案。本公开不限于此类示例性实施方案。术语“和/或”的使用包括一个或多个相关联列出条目的任意组合和所有组合。附图是示意性表示并且因此未必按比例绘制。除非另有说明,否则特定术语已用于通用和描述性意义,而非用于限制的目的。
除非另外定义,否则本文所用的所有技术和科学术语具有与本领域的普通技术人员通常理解的含义相同的含义。可以在本公开的实践或测试中使用与本文所述的那些类似或等同的方法和材料。如本说明书中以及所附权利要求书中所用,单数形式“一个”、“一种”、“该”包括多个指代物,除非上下文另有明确规定。如本文所用的术语“包含”及其变型形式与术语“包括”及其变型形式同义地使用,并且是开放式的非限制性术语。本文所用术语“任选的”或“任选地”是指随后描述的特征、事件或情况可能发生或可能不发生,并且该描述包括所述特征、事件或情况发生的实例和不发生的实例。范围在本文中可以表达为从“约”一个特定值,和/或到“约”另一个特定值。当表达这样的范围时,一个方面包括从一个特定值和/或到另一个特定值。类似地,当值通过使用先行词“约”表达为近似值时,应当理解,该特定值形成另一个方面。还应当理解,每个范围的端点相对于另一个端点是重要的,并且独立于另一个端点。
虽然所描述的具体实施的某些特征已经如本文所述进行了说明,但是本领域技术人员现在将想到许多修改形式、替代形式、变化形式和等同形式。因此,应当理解,所附权利要求书旨在涵盖落入实施方式的范围内的所有此类修改形式和变化形式。应当理解,这些修改形式和变化形式仅仅以举例而非限制的方式呈现,并且可以进行形式和细节上的各种变化。除了相互排斥的组合以外,本文所述的装置和/或方法的任何部分可以任意组合进行组合。本文所述的具体实施可包括所描述的不同具体实施的功能、部件和/或特征的各种组合和/或子组合。
Claims (10)
1.一种用于对神经网络的权重进行解码的神经网络电路,所述神经网络电路包括:
权重存储器,所述权重存储器被配置为存储用于所述神经网络的编码权重,所述编码权重包括索引权重字;和
解压缩逻辑电路,所述解压缩逻辑电路被配置为:
从所述权重存储器检索所述编码权重;
使用所述索引权重字对所述编码权重进行解码,以获得一个或多个非裁剪权重字和一个或多个裁剪权重字的序列,所述裁剪权重字包括零值权重字,所述非裁剪权重字包括非零值权重字;以及
将所述非裁剪权重字和所述裁剪权重字的所述序列提供给多个输入-权重乘法器。
2.根据权利要求1所述的神经网络电路,其中所述索引权重字包括多个位,每个位具有第一位值或第二位值,所述第一位值指示所述序列中的裁剪权重字,所述第二位值指示所述序列中的非裁剪权重字。
3.根据权利要求1所述的神经网络电路,其中所述解压缩逻辑电路被配置为在单个时钟循环内对所述编码权重进行解码。
4.根据权利要求1所述的神经网络电路,其中所述解压缩逻辑电路包括权重字解码器,所述权重字解码器包括:
多个移位器;
多个数字逻辑门,所述多个数字逻辑门耦接到所述多个移位器;和
索引字解码器,所述索引字解码器耦接到所述多个移位器和所述多个数字逻辑门,所述索引字解码器被配置为基于所述索引权重字来控制所述多个移位器和所述多个数字逻辑门,
其中所述多个移位器并联连接到所述索引字解码器,
其中所述多个移位器中的每个移位器被配置为接收所述非裁剪权重字和来自所述索引字解码器的控制信号,所述控制信号控制应用于所述非裁剪权重字的移位操作,
其中所述数字逻辑门中的每个数字逻辑门被配置为从所述索引字解码器接收控制信号,所述控制信号控制由相应的数字逻辑门执行的布尔运算,
其中所述多个数字逻辑门包括第一数字逻辑门和第二数字逻辑门,所述第一数字逻辑门耦接到所述多个移位器中的第一移位器的输出,所述第二数字逻辑门耦接到所述多个移位器中的第二移位器的输出。
5.根据权利要求1所述的神经网络电路,其中所述解压缩逻辑电路包括:
第一权重解码器,所述第一权重解码器被配置为对所述编码权重的第一部分进行解码;
第二权重解码器,所述第二权重解码器被配置为对所述编码权重的第二部分进行解码;和
控制逻辑电路,所述控制逻辑电路被配置为控制所述第一权重解码器和所述第二权重解码器,
其中所述第一权重解码器被配置为从所述控制逻辑电路接收指示权重字缓冲器中存储的可用权重字的数量的信号,所述第一权重解码器被配置为确定在所述索引权重字中具有第一位值的位的数量,并且响应于所述权重字缓冲器中存储的所述可用权重字的所述数量等于或大于具有所述第一位值的位的所述数量,对所述编码权重的所述第一部分进行解码。
6.一种设备,所述设备包括:
神经网络,所述神经网络被配置为接收一组输入并且生成一组输出,所述一组输入包括语音数据,所述一组输出包括对应于所述语音数据的一个或多个潜在的语音命令;
权重存储器,所述权重存储器被配置为存储用于所述神经网络的编码权重;和
加速器,所述加速器被配置为执行所述神经网络,所述加速器包括:
解压缩逻辑电路,所述解压缩逻辑电路被配置为从所述权重存储器检索所述编码权重,并且对所述编码权重进行解码以获得一个或多个裁剪权重字和一个或多个非裁剪权重字的序列,所述裁剪权重字包括零值权重字,所述非裁剪权重字包括非零值权重字;和
多个输入-权重乘法器,所述多个输入-权重乘法器被配置为接收所述裁剪权重字和所述非裁剪权重字的所述序列。
7.根据权利要求6所述的设备,其中所述解压缩逻辑电路包括:
权重字缓冲器,所述权重字缓冲器被配置为暂时存储所述编码权重,所述编码权重包括第一索引权重字和第二索引权重字;
第一权重解码器,所述第一权重解码器被配置为从所述权重字缓冲器接收所述编码权重,并且使用所述第一索引权重字来生成第一组解码权重字;
第二权重解码器,所述第二权重解码器被配置为从所述第一权重解码器接收所述编码权重的一部分,并且使用所述第二索引权重字来生成第二组解码权重字;
控制逻辑部件,所述控制逻辑部件被配置为控制所述第一权重解码器和所述第二权重解码器;
移位器,所述移位器被配置为从所述第一权重解码器接收所述第一组解码权重字并且从所述第二权重解码器接收所述第二组解码权重字;和
多个权重寄存器,所述多个权重寄存器耦接到所述移位器,所述多个权重寄存器中的每个权重寄存器被配置为从所述移位器接收单独的解码权重字。
8.根据权利要求6所述的设备,其中所述编码权重包括索引权重字和一个或多个非裁剪权重字,所述解压缩逻辑电路包括权重字解码器,所述权重字解码器包括:
多个移位器;
多个与门,所述多个与门耦接到所述多个移位器;
索引字解码器,所述索引字解码器耦接到所述多个移位器和所述多个与门,所述索引字解码器被配置为基于所述索引权重字的各个位的位值来控制所述多个移位器和所述多个与门,
其中所述多个移位器中的每个移位器被配置为接收所述非裁剪权重字和来自所述索引字解码器的第一控制信号,每个移位器被配置为根据所述第一控制信号对所述非裁剪权重字执行移位操作,
其中所述与门中的每个与门被配置为相应移位器的输出和来自所述索引字解码器的第二控制信号,每个与门被配置为对相应移位器的所述输出和所述第二控制信号执行与运算。
9.一种对神经网络的权重进行解码的方法,所述方法包括:
经由处理器数据总线从权重存储器检索编码权重,所述编码权重包括索引权重字;
使用所述索引权重字对所述编码权重进行解码,以获得一个或多个裁剪权重字和一个或多个非裁剪权重字的序列,所述裁剪权重字包括零值权重字,所述非裁剪权重字包括非零值权重字;以及
将所述非裁剪权重字和所述裁剪权重字的所述序列提供给多个输入-权重乘法器。
10.根据权利要求9所述的方法,其中所述索引权重字包括多个位,每个位具有第一位值或第二位值,所述第一位值指示所述序列中的裁剪权重字,所述第二位值指示所述序列中的非裁剪权重字,响应于所述索引权重字内具有所述第一位值的位而将所述裁剪权重字解码为零,其中所述解码包括基于所述索引权重字来控制多个移位器和多个数字逻辑门。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/816,453 US20210287074A1 (en) | 2020-03-12 | 2020-03-12 | Neural network weight encoding |
US16/816,453 | 2020-03-12 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113392962A true CN113392962A (zh) | 2021-09-14 |
Family
ID=77457433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110261314.7A Pending CN113392962A (zh) | 2020-03-12 | 2021-03-10 | 对神经网络的权重进行解码的方法、设备及电路 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210287074A1 (zh) |
CN (1) | CN113392962A (zh) |
DE (1) | DE102021001218A1 (zh) |
TW (1) | TW202139073A (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11599773B2 (en) | 2018-12-27 | 2023-03-07 | Micron Technology, Inc. | Neural networks and systems for decoding encoded data |
US11424764B2 (en) | 2019-11-13 | 2022-08-23 | Micron Technology, Inc. | Recurrent neural networks and systems for decoding encoded data |
US11765376B2 (en) * | 2020-10-08 | 2023-09-19 | Tencent America LLC | Pruning methods and apparatuses for neural network based video coding |
US11563449B2 (en) * | 2021-04-27 | 2023-01-24 | Micron Technology, Inc. | Systems for error reduction of encoded data using neural networks |
US11973513B2 (en) | 2021-04-27 | 2024-04-30 | Micron Technology, Inc. | Decoders and systems for decoding encoded data using neural networks |
US11755408B2 (en) | 2021-10-07 | 2023-09-12 | Micron Technology, Inc. | Systems for estimating bit error rate (BER) of encoded data using neural networks |
CN114926706B (zh) * | 2022-05-23 | 2024-07-09 | 支付宝(杭州)信息技术有限公司 | 数据处理方法、装置及设备 |
TWI819645B (zh) * | 2022-06-08 | 2023-10-21 | 緯創資通股份有限公司 | 更新神經網路模型的方法和電子裝置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI684141B (zh) * | 2017-10-12 | 2020-02-01 | 英屬開曼群島商意騰科技股份有限公司 | 人工神經元中以非零封包加速乘法運算的裝置及方法 |
CN108958801B (zh) * | 2017-10-30 | 2021-06-25 | 上海寒武纪信息科技有限公司 | 神经网络处理器及使用处理器执行向量最大值指令的方法 |
US11210586B1 (en) * | 2018-04-20 | 2021-12-28 | Perceive Corporation | Weight value decoder of neural network inference circuit |
US10817260B1 (en) * | 2018-06-13 | 2020-10-27 | Amazon Technologies, Inc. | Reducing dynamic power consumption in arrays |
US10872295B1 (en) * | 2019-09-19 | 2020-12-22 | Hong Kong Applied Science and Technology Institute Company, Limited | Residual quantization of bit-shift weights in an artificial neural network |
US11816446B2 (en) * | 2019-11-27 | 2023-11-14 | Amazon Technologies, Inc. | Systolic array component combining multiple integer and floating-point data types |
-
2020
- 2020-03-12 US US16/816,453 patent/US20210287074A1/en active Pending
-
2021
- 2021-03-03 TW TW110107456A patent/TW202139073A/zh unknown
- 2021-03-08 DE DE102021001218.6A patent/DE102021001218A1/de active Pending
- 2021-03-10 CN CN202110261314.7A patent/CN113392962A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102021001218A1 (de) | 2021-09-16 |
US20210287074A1 (en) | 2021-09-16 |
TW202139073A (zh) | 2021-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113392962A (zh) | 对神经网络的权重进行解码的方法、设备及电路 | |
JP7349835B2 (ja) | ニューラルネットワークにおいてパラメータを処理する方法及び装置 | |
TWI814818B (zh) | 用於實施一神經網路之方法 | |
CN110378468B (zh) | 一种基于结构化剪枝和低比特量化的神经网络加速器 | |
CN107451659B (zh) | 用于位宽分区的神经网络加速器及其实现方法 | |
CN107832082B (zh) | 一种用于执行人工神经网络正向运算的装置和方法 | |
CN107340993B (zh) | 运算装置和方法 | |
US20200104573A1 (en) | Data processing apparatus and method | |
WO2018205708A1 (zh) | 应用于二值权重卷积网络的处理系统及方法 | |
CN109409500B (zh) | 基于知识蒸馏与非参数卷积的模型加速方法及装置 | |
US20220245928A1 (en) | Systems and methods for progressive learning for machine-learned models to optimize training speed | |
WO2019007406A1 (zh) | 一种数据处理装置和方法 | |
CN111105023B (zh) | 数据流重构方法及可重构数据流处理器 | |
CN110265002B (zh) | 语音识别方法、装置、计算机设备及计算机可读存储介质 | |
US20240071070A1 (en) | Algorithm and method for dynamically changing quantization precision of deep-learning network | |
CN110287303B (zh) | 人机对话处理方法、装置、电子设备及存储介质 | |
CN110799957A (zh) | 具有元数据致动的条件图执行的处理核心 | |
US20230056315A1 (en) | Computer-implemented methods and systems for compressing recurrent neural network (rnn) models and accelerating rnn execution in mobile devices to achieve real-time inference | |
CN112687266A (zh) | 语音识别方法、装置、计算机设备和存储介质 | |
CN112651485A (zh) | 识别图像的方法和设备以及训练神经网络的方法和设备 | |
Xiyuan et al. | A Review of FPGA‐Based Custom Computing Architecture for Convolutional Neural Network Inference | |
WO2022173538A1 (en) | Techniques for accelerating neural networks | |
CN117574970A (zh) | 用于大规模语言模型的推理加速方法、系统、终端及介质 | |
Kim et al. | V-LSTM: An efficient LSTM accelerator using fixed nonzero-ratio viterbi-based pruning | |
CN113408704A (zh) | 数据处理方法、装置、设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |