CN111898752A - 执行lstm神经网络运算的装置和方法 - Google Patents
执行lstm神经网络运算的装置和方法 Download PDFInfo
- Publication number
- CN111898752A CN111898752A CN202010775213.7A CN202010775213A CN111898752A CN 111898752 A CN111898752 A CN 111898752A CN 202010775213 A CN202010775213 A CN 202010775213A CN 111898752 A CN111898752 A CN 111898752A
- Authority
- CN
- China
- Prior art keywords
- matrix
- lstm
- sub
- frame
- intermediate result
- 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.)
- Granted
Links
- 238000013528 artificial neural network Methods 0.000 title claims description 47
- 238000000034 method Methods 0.000 title claims description 31
- 239000013598 vector Substances 0.000 claims abstract description 134
- 239000011159 matrix material Substances 0.000 claims abstract description 129
- 230000015654 memory Effects 0.000 claims abstract description 85
- 230000003247 decreasing effect Effects 0.000 abstract description 2
- 238000004364 calculation method Methods 0.000 description 32
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 210000004027 cell Anatomy 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000006403 short-term memory Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000012015 optical character recognition Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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/044—Recurrent networks, e.g. Hopfield networks
- G06N3/0442—Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
-
- 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
- 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/044—Recurrent networks, e.g. Hopfield 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
执行LSTM神经网络运算的装置和方法,装置包括处理器、第一和第二运算模块,及存取速度依次递减的处理器缓存、主存储器和次级存储器;第一运算模块可读取当前层的K帧的输入向量和参数矩阵的第一子矩阵的一行至处理器缓存,处理器对K帧输入向量逐一与第一子矩阵的一行执行乘加运算,直至遍历第一子矩阵的所有行,以得到对应于K帧的第一中间结果向量,其中K大于1且选择为使得K帧输入向量及第一子矩阵的一行尺寸小于处理器缓存尺寸;第二运算模块可使得对于K帧中的每帧,据参数矩阵的第二子矩阵、第一中间结果向量及上一帧输出向量,计算出每帧对应的第二中间结果向量;及据第一和第二中间结果向量,更新门控及状态向量,计算当前帧输出向量。
Description
技术领域
本发明涉及人工神经网络技术领域,特别涉及执行LSTM神经网络运算的装置和方法。
背景技术
随着语音交互和物联网的不断发展,大量嵌入式设备配置了简单的AI功能,比如离线语音识别功能、声纹识别功能等。因为嵌入式设备低成本、低功耗的要求,一般嵌入式设备的内存小,计算资源有限。鉴于此,人工智能技术,例如人工神经网络,在嵌入式设备上的执行以及部署受到很大限制。
LSTM全称Long Short Term Memory(长短期记忆),是一种深度学习神经网络结构,被广泛应用于基于序列的机器学习应用中,比如语音识别、声纹识别、光学字符识别等。然而,在嵌入式类系统中运行LSTM模型,尤其有非常大的挑战,主要出于以下两个原因。
一方面,在语音识别等任务中,识别性能和LSTM的参数量呈正相关,即LSTM参数量越大,识别性能越好,但是嵌入式系统内存限制了LSTM可选的最大参数量,也即限制了通过提升LSTM参数量来提升模型性能的可能性,导致嵌入式设备的识别效果以及用户体验不佳。
另一方面,LSTM是一种类似迭代的计算模式,每一步的计算都需要依赖于上一步的输出,如图1所示。图1是根据现有技术的LSTM神经网络运算的简化示意框图,其中示出了LSTM神经网络的多个单元102、104、…、106,而I(i)、I(i+1)、...、I(i+n)表示LSTM神经网络上一层第i至i+n帧的输出,O(i)、O(i+1)、...、O(i+n)表示本层第i至i+n帧的输出。可以看到,每一单元的计算依赖于上一单元的输出。LSTM的主要计算瓶颈在其内部的矩阵运算。矩阵运算又可分为两部分:参数读取和MAC(Multiply-Accumulate,乘加)计算。现有的大量嵌入式芯片的MAC计算单元都不止一个,多的甚至有一百多个,可以并行执行MAC运算。然而,碍于迭代的计算模式,每帧LSTM计算都依赖前一帧的结果,如此导致每次LSTM计算都需要从RAM或是闪存中读取一次参数。在嵌入式设备中,各级存储访问速度如下:缓存(cache)>内存(RAM)>闪存(flash,ROM)。然而,LSTM参数量较大,一般至少有几百KB,通常大于嵌入式设备的缓存,导致缓存中数据无法复用,大量时间耗费在参数读取过程中,导致在现有的嵌入式系统中执行LSTM神经网络运算非常低效。
具体地,LSTM神经网络运算可表达为下述公式:
其中:
T4n,m+n是4n×m+n维的LSTM参数矩阵,其中hl-1为m×1维的LSTM输入向量,hl为n×1维的LSTM输出向量;
l表示在神经网络中的层数;
t表示输入的帧数;
i为n×1维的输入门向量;
f为n×1维的遗忘门向量;
o为n×1维的输出门向量;及
g为n×1维的候选记忆细胞向量。
典型的在现有嵌入式系统中执行LSTM神经网络运算的过程如下:
1.将存放于闪存中的所有LSTM参数复制到随机存取存储器(RAM)中;
发明人注意到,虽然现有技术中已尝试提出各种加速执行LSTM神经网络运算的方案,但这些现有方案主要着力于计算性能的提升、I/O数据传输开销的减少而未针对嵌入式设备以及缓存数据的复用进行优化。
例如,中国专利申请公开CN108268939A公开了一种用于执行LSTM神经网络运算的装置和运算方法,该装置和方法采用了并列设置的多个数据缓存单元,在数据缓存单元中存储对应于LSTM神经网络运算的神经元而被分割的权值和偏置,其中各数据缓冲单元中的权值和偏置的数量均相同,且每个数据缓冲单元都获取了一份完整的输入数据,其中对LSTM进行逐帧计算,且在多个数据缓冲单元中存储了冗余的输入数据,并未考虑到和解决在嵌入式系统中执行LSTM神经网络运算时缓存数据复用率为零的问题。
又如,中国专利申请公开CN103068021A公开了一种用于LSTM网络的硬件加速器,该硬件加速器通过组合模块对第一缓存中缓存的对应于同一个输入的第一输出和第二输出执行组合运算,以得到对应于同一个输入的组合输出。由此提高双向LSTM计算性能,降低响应延时,实现对双向LSTM网络计算的加速效果。同样,在该专利公开中,对LSTM进行的是逐帧计算,其缓存复用考虑的是双向LSTM网络计算的优化,并未考虑到和解决在嵌入式系统中执行LSTM神经网络运算时缓存数据复用率为零的问题。
综上,现有技术中需要一种执行LSTM神经网络运算的装置和方法,该方法能够在嵌入式系统中执行LSTM神经网络运算时提高缓存数据复用率,以解决现有技术中存在的上述问题。应理解,上述所列举的技术问题仅作为示例而非对本发明的限制,本发明并不限于同时解决上述所有技术问题的技术方案。本发明的技术方案可以实施为解决上述或其他技术问题中的一个或多个。
发明内容
针对上述问题,本发明的目的在于提供一种执行LSTM神经网络运算的装置和方法,其针对嵌入式系统的内存和计算性能有限的特性,能够有效提高在嵌入式系统中执行LSTM神经网络运算的缓存数据复用率以及运算效率。
在本发明的一方面,提供一种执行LSTM神经网络运算的装置,包括:处理器、处理器缓存、主存储器、次级存储器、第一运算模块,以及第二运算模块,其中所述处理器缓存的存取速度高于所述主存储器的存取速度,所述主存储器的存取速度高于所述次级存储器的存取速度;所述第一运算模块可操作以将当前层的K个帧的输入向量读取至所述处理器缓存中,并逐一读取LSTM参数矩阵的第一子矩阵的一行至所述处理器缓存中,由所述处理器对所述K个帧的输入向量逐一与所述第一子矩阵的一行执行乘加运算,直至遍历所述第一子矩阵的所有行,以得到对应于所述K个帧中的每个帧的第一中间结果向量,其中,K大于1且K选择为使得所述K个帧的输入向量以及LSTM参数矩阵的第一子矩阵的一行的尺寸小于所述处理器缓存的尺寸;所述第二运算模块可操作以使得对于所述K个帧中的每个帧:由所述处理器根据所述LSTM参数矩阵的第二子矩阵、所述第一中间结果向量以及上一帧LSTM输出向量,计算出每个帧对应的第二中间结果向量;及根据所述第一中间结果向量和所述第二中间结果向量,更新LSTM门控向量以及LSTM状态向量,计算出当前帧的LSTM输出向量。
可选地,所述第二运算模块可操作以使得将当前帧的第一中间结果向量以及上一帧的LSTM输出向量读取至所述处理器缓存中,并使得所述处理器访问存储在所述主存储器或所述次级存储器中的所述第二子矩阵,以便由所述处理器根据所述LSTM参数矩阵的第二子矩阵、所述第一中间结果向量以及上一帧LSTM输出向量,计算出每个帧对应的第二中间结果向量。
可选地,所述当前层的LSTM参数矩阵的第一子矩阵存储在所述主存储器中。
替代地,所述当前层的LSTM参数矩阵的第一子矩阵存储在所述次级存储器中。
优选地,所述LSTM参数矩阵由所述第一子矩阵和所述第二子矩阵组成。
在本发明的另一方面,提供一种在电子装置中执行LSTM神经网络运算的方法,所述电子装置包括处理器、处理器缓存、主存储器、次级存储器,其中所述处理器缓存的存取速度高于所述主存储器的存取速度,所述主存储器的存取速度高于所述次级存储器的存取速度,所述方法包括:将当前层的K个帧的输入向量读取至所述处理器缓存中,并逐一读取LSTM参数矩阵的第一子矩阵的一行至所述处理器缓存中,对所述K个帧的输入向量逐一与所述第一子矩阵的一行执行乘加运算,直至遍历所述第一子矩阵的所有行,以得到对应于所述K个帧中的每个帧的第一中间结果向量,其中,K大于1且K选择为使得所述K个帧的输入向量以及LSTM参数矩阵的第一子矩阵的一行的尺寸小于所述处理器缓存的尺寸;对于所述K个帧中的每个帧,执行下述步骤:根据所述LSTM参数矩阵的第二子矩阵、所述第一中间结果向量以及上一帧LSTM输出向量,计算出每个帧对应的第二中间结果向量;及根据所述第一中间结果向量和所述第二中间结果向量,更新LSTM门控向量以及LSTM状态向量,计算出当前帧的LSTM输出向量。
可选地,将当前帧的第一中间结果向量以及上一帧的LSTM输出向量读取至所述处理器缓存中,并使得所述处理器访问存储在所述主存储器或所述次级存储器中的所述第二子矩阵,以便由所述处理器根据所述LSTM参数矩阵的第二子矩阵、所述第一中间结果向量以及上一帧LSTM输出向量,计算出每个帧对应的第二中间结果向量。
可选地,从所述主存储器读取当前层的LSTM参数矩阵的第一子矩阵的一行至所述处理器缓存中。
替代地,从所述次级主存储器读取当前层的LSTM参数矩阵的第一子矩阵的一行至所述处理器缓存中。
本发明针对嵌入式系统的内存和计算性能有限的特性,提供了一种新的LSTM计算装置和方法,可以有效降低LSTM模型计算所需内存、提高缓存数据复用率和/或加速LSTM模型计算,以此来提升基于LSTM模型应用的性能,尤其提高了在嵌入式系统中执行LSTM神经网络运算的效率。
应理解,上述对背景技术以及发明内容概要的描述仅仅是示意性的而非限制性的。
附图说明
图1是根据现有技术的LSTM神经网络运算的简化示意框图。
图2是根据本发明一个实施例的执行LSTM神经网络运算的装置的示意框图。
图3是根据本发明另一实施例的执行LSTM神经网络运算的装置的示意框图。
图4是根据本发明一个实施例的的执行LSTM神经网络运算的装置中的第一运算模块所执行运算的示意流程图。
图5是根据本发明一个实施例的的执行LSTM神经网络运算的装置中的第二运算模块所执行运算的示意流程图。
图6是根据本发明一个实施例的执行LSTM神经网络运算的方法的示意流程图。
具体实施方式
在下文中将参考附图更全面地描述本发明,附图构成本发明公开的一部分并通过图示的方式示出示例性的实施例。应理解,附图所示以及下文所述的实施例仅仅是说明性的,而不作为对本发明的限制。
图2是根据本发明一个实施例的执行LSTM神经网络运算的装置200的示意框图。如图2所示,该装置包括处理器202、主存储器208、次级存储器216、第一运算模块212、第二运算模块214以及总线210。处理器202进一步包括处理器内核204和处理器缓存206。处理器缓存206的存取速度高于主存储器208的存取速度,而主存储器208的存取速度高于次级存储器216的存取速度。应理解,虽然图2中示出处理器缓存206为处理器202的一部分,本发明的实施不限于此。例如,处理器缓存206可以设置于处理器外部。作为示例而非限制,处理器缓存可以实施为不同级别的高速缓存,主存储器可以实施为随机存取存储器(RAM)、DRAM、SDRAM、SDRAM、PSRAM等易失性存储器,次级存储器可以实施为闪存、只读存储器(ROM)、PROM、EPROM、OTPROM、EEPROM等非易失性存储器。应理解,主存储器和次级存储器亦可均实施为易失性存储器。
第一运算模块212可操作以将LSTM神经网络的当前层的K个帧的输入向量读取至处理器缓存206中,并逐一读取LSTM参数矩阵的第一子矩阵的一行至处理器缓存206中,由处理器202对K个帧的输入向量逐一与第一子矩阵的一行执行乘加运算,直至遍历第一子矩阵的所有行,以得到对应于K个帧中的每个帧的第一中间结果向量。作为非限制性示例,K可以大于1且K选择为使得K个帧的输入向量以及LSTM参数矩阵的第一子矩阵的一行的尺寸小于处理器缓存206的尺寸。以此方式,LSTM参数矩阵的第一子矩阵的每一行可以保存在处理器缓存206中以重用于与K个帧的输入向量进行计算。
第二运算模块214可操作以使得对于K个帧中的每个帧执行下述步骤:由处理器202根据LSTM参数矩阵的第二子矩阵、第一中间结果向量以及上一帧LSTM输出向量,计算出每个帧对应的第二中间结果向量;及根据第一中间结果向量和第二中间结果向量,更新LSTM门控向量以及LSTM状态向量,计算出当前帧的LSTM输出向量。
虽然图2中的处理器202、主存储器208、次级存储器216、第一运算模块212和第二运算模块214均耦合到总线210,但应理解,本发明的实施不限于此。本发明可以实施在具有或不具有总线的计算系统或嵌入式装置中,且各组件之间可以采取不同于所示的连接方式。
第二运算模块可操作以使得将当前帧的第一中间结果向量以及上一帧的LSTM输出向量读取至处理器缓存中,并使得处理器访问存储在主存储器或次级存储器中的第二子矩阵,以便由处理器根据LSTM参数矩阵的第二子矩阵、第一中间结果向量以及上一帧LSTM输出向量,计算出每个帧对应的第二中间结果向量。
参考图3,其中示出根据本发明另一实施例的执行LSTM神经网络运算的装置300的示意框图。
根据本发明的非限制性实施例,将LSTM参数分拆为两部分 LSTM计算也按照所需参数不同而拆分至由第一运算模块306和第二运算模块310执行。作为非限制性示例,可称为第一子矩阵,可称为第二子矩阵。其中第一运算模块306一次接受连续的K帧输入302,标记为经过第一运算模块306计算获得中间结果缓存分别保存在第t帧缓存至第t+k-1帧缓存中。如图所示,根据本发明实施例的第一运算模块可以对连续的K帧输入进行批量处理,而不是逐帧计算。
参考图4,示出根据本发明一个实施例的的执行LSTM神经网络运算的装置中的第一运算模块所执行运算的示意流程图。
第一运算模块计算:
具体计算过程如图4所示。LSTM参数可以存放在例如闪存、PSRAM、DRAM等可读存储介质中。在计算过程中首先在步骤402,将K帧输入向量读入缓存。在步骤404,设定LSTM参数行号的初始值。然后在步骤406读入LSTM参数的一行进入缓存。在步骤408,计算 在步骤410,判断LSTM参数中是否存在下一行,如果是,则在步骤414进入下一行,并重复执行步骤406和408的操作。直至在步骤410判断为否,已遍历参数所有行。最后在步骤412输出计算结果。因为每次只读取一行其所需缓存尺寸小于处理器缓存大小,因此在与K帧输入进行计算时,任何时候都不会被刷出缓存,以此达到了减少缓存缺失率(cache miss rate)的效果。优选地,K帧输入同样存储在处理器缓存中,从而在对K帧输入进行计算时,本发明的装置和/或方法可以从处理器缓存直接得到运算所需数据,减少了主存储器和/或次级存储器的访问,显著提高了LSTM神经网络运算的计算效率。
参考图5是是根据本发明一个实施例的的执行LSTM神经网络运算的装置中的第二运算模块所执行运算的示意流程图。
第二运算模块计算:
具体计算过程如图5所示,首先在步骤504读入一帧第一运算模块输出的中间结果(即第二运算模块的输入2),并在步骤502读入上一帧LSTM的输出结果(即第二运算模块的输入1)。然后,在步骤506,读取存放在闪存或PSRAM或DRAM等可读存储介质的LSTM参数在步骤508,计算该计算过程必须是一帧一帧进行,因为该计算依赖于上一帧LSTM输出必须等待上一帧LSTM计算完毕才可以进行。其后,在步骤510,根据和按上述公式计算LSTM四个门控状态向量[i,f,o,g]T,在步骤512更新LSTM状态向量ct,并在步骤514获得该帧LSTM最终的输出
图6示出根据本发明一个实施例的执行LSTM神经网络运算的方法600的示意流程图。方法600可以在电子装置中执行,该电子装置可以包括处理器、处理器缓存、主存储器、次级存储器,其中处理器缓存的存取速度高于主存储器的存取速度,主存储器的存取速度高于次级存储器的存取速度。
在步骤602,将当前层的K个帧的输入向量读取至处理器缓存中。在步骤604,读取LSTM参数矩阵的第一子矩阵的一行至处理器缓存中。在步骤606,对K个帧的输入向量逐一与第一子矩阵的一行执行乘加运算。在步骤608,判断第一子矩阵是否具有下一行。如果是,则返回步骤604,对第一子矩阵的下一行进行处理。如果否,则已遍历第一子矩阵的所有行,在步骤610得到对应于K个帧中的每个帧的第一中间结果向量。优选地,K选择为使得K个帧的输入向量以及LSTM参数矩阵的第一子矩阵的一行的尺寸小于处理器缓存的尺寸。
接下来,对于K个帧中的每个帧,执行步骤612至616。
在步骤612,根据LSTM参数矩阵的第二子矩阵、第一中间结果向量以及上一帧LSTM输出向量,计算出每个帧对应的第二中间结果向量。
在步骤614,根据第一中间结果向量和第二中间结果向量,更新LSTM门控向量以及LSTM状态向量,计算出当前帧的LSTM输出向量。
在步骤616,判断K个帧是否均尚未处理完毕。如果是,则返回至步骤612,对下一帧进行处理,如果否,则流程结束。
在本发明的一个实施例中,可以将当前帧的第一中间结果向量以及上一帧的LSTM输出向量读取至处理器缓存中,并使得处理器访问存储在主存储器或次级存储器中的第二子矩阵,以便由处理器根据LSTM参数矩阵的第二子矩阵、第一中间结果向量以及上一帧LSTM输出向量,计算出每个帧对应的第二中间结果向量。
作为一种可选的实施方式,从主存储器读取当前层的LSTM参数矩阵的第一子矩阵的一行至处理器缓存中。作为替代实施方式,从次级主存储器读取当前层的LSTM参数矩阵的第一子矩阵的一行至处理器缓存中。
在本发明的一个实施例中,LSTM参数矩阵由上述第一子矩阵和上述第二子矩阵组成。应理解,本发明的方案可以应用于部分和/或整个LSTM参数矩阵的运算,也可以应用于LSTM神经网络运算的部分和/或全部过程。
根据本发明公开的装置和方法,第一运算模块按照K(K>=1)帧为一个基本单元进行并行计算,极大地提高了缓存的利用率。相应地,第一运算模块计算中LSTM参数的缓存的利用率从1次提升到K次,第一部分计算量约占整个LSTM参数矩阵运算的50%,所以可计算得出整个LSTM参数矩阵运算的缓存缺失率从100%下降到(K-1)/2K。当K比较大时,缓存缺失率接近50%,也即缓存缺失率减半。
作为一种可选的实施方式,当前层的LSTM参数矩阵的第一子矩阵可以存储在主存储器中。
作为一种替代实施方式,不将当前层的LSTM参数矩阵的第一子矩阵存储在主存储器中,而是将其存取速度更慢的次级存储器中。与现有技术中尽量将LSTM参数矩阵存储在较快的存储器(例如RAM)中的通常做法相反,在这种替代实施方式中,不复制LSTM参数矩阵的第一子矩阵到主存储器(例如RAM)中,而是在计算过程中直接访问闪存获得LSTM参数矩阵的第一子矩阵。这是因为基于本发明的方案,对第一子矩阵的计算而言,缓存利用率可提高到K次,从而实际从闪存读取参数的时间被平均到每一帧后约为1/K。当K比较大时,可忽略从闪存读取参数时间,从而可以降低尺寸的RAM使用。
以上实施例以示例的方式给出了具体操作过程和步骤,但应理解,本发明的保护范围不限于此。
虽然出于本公开的目的已经描述了本发明各方面的各种实施例,但是不应理解为将本公开的教导限制于这些实施例。在一个具体实施例中公开的特征并不限于该实施例,而是可以和不同实施例中公开的特征进行组合。此外,应理解,上文所述方法步骤可以顺序执行、并行执行、合并为更少步骤、拆分为更多步骤,以不同于所述方式组合和/或省略。本领域技术人员应理解,还存在可能的更多可选实施方式和变型,可以对上述部件和构造进行各种改变和修改,而不脱离由本发明权利要求所限定的范围。
Claims (10)
1.一种执行LSTM神经网络运算的装置,其特征在于,包括:
处理器、处理器缓存、主存储器、次级存储器、第一运算模块,以及第二运算模块,其中所述处理器缓存的存取速度高于所述主存储器的存取速度,所述主存储器的存取速度高于所述次级存储器的存取速度;
所述第一运算模块可操作以将当前层的K个帧的输入向量读取至所述处理器缓存中,并逐一读取LSTM参数矩阵的第一子矩阵的一行至所述处理器缓存中,由所述处理器对所述K个帧的输入向量逐一与所述第一子矩阵的一行执行乘加运算,直至遍历所述第一子矩阵的所有行,以得到对应于所述K个帧中的每个帧的第一中间结果向量,其中,K大于1且K选择为使得所述K个帧的输入向量以及LSTM参数矩阵的第一子矩阵的一行的尺寸小于所述处理器缓存的尺寸;
所述第二运算模块可操作以使得对于所述K个帧中的每个帧:
由所述处理器根据所述LSTM参数矩阵的第二子矩阵、所述第一中间结果向量以及上一帧LSTM输出向量,计算出每个帧对应的第二中间结果向量;及
根据所述第一中间结果向量和所述第二中间结果向量,更新LSTM门控向量以及LSTM状态向量,计算出当前帧的LSTM输出向量。
2.根据权利要求1所述的执行LSTM神经网络运算的装置,其特征在于,所述第二运算模块可操作以使得将当前帧的第一中间结果向量以及上一帧的LSTM输出向量读取至所述处理器缓存中,并使得所述处理器访问存储在所述主存储器或所述次级存储器中的所述第二子矩阵,以便由所述处理器根据所述LSTM参数矩阵的第二子矩阵、所述第一中间结果向量以及上一帧LSTM输出向量,计算出每个帧对应的第二中间结果向量。
3.根据权利要求1所述的执行LSTM神经网络运算的装置,其特征在于,所述当前层的LSTM参数矩阵的第一子矩阵存储在所述主存储器中。
4.根据权利要求1所述的执行LSTM神经网络运算的装置,其特征在于,所述当前层的LSTM参数矩阵的第一子矩阵存储在所述次级存储器中。
5.根据权利要求1所述的执行LSTM神经网络运算的装置,其特征在于,所述LSTM参数矩阵由所述第一子矩阵和所述第二子矩阵组成。
6.一种在电子装置中执行LSTM神经网络运算的方法,所述电子装置包括处理器、处理器缓存、主存储器、次级存储器,其中所述处理器缓存的存取速度高于所述主存储器的存取速度,所述主存储器的存取速度高于所述次级存储器的存取速度,所述方法包括:
将当前层的K个帧的输入向量读取至所述处理器缓存中,并逐一读取LSTM参数矩阵的第一子矩阵的一行至所述处理器缓存中,对所述K个帧的输入向量逐一与所述第一子矩阵的一行执行乘加运算,直至遍历所述第一子矩阵的所有行,以得到对应于所述K个帧中的每个帧的第一中间结果向量,其中,K大于1且K选择为使得所述K个帧的输入向量以及LSTM参数矩阵的第一子矩阵的一行的尺寸小于所述处理器缓存的尺寸;
对于所述K个帧中的每个帧,执行下述步骤:
根据所述LSTM参数矩阵的第二子矩阵、所述第一中间结果向量以及上一帧LSTM输出向量,计算出每个帧对应的第二中间结果向量;及
根据所述第一中间结果向量和所述第二中间结果向量,更新LSTM门控向量以及LSTM状态向量,计算出当前帧的LSTM输出向量。
7.根据权利要求6所述的在电子装置中执行LSTM神经网络运算的装置,其特征在于,将当前帧的第一中间结果向量以及上一帧的LSTM输出向量读取至所述处理器缓存中,并使得所述处理器访问存储在所述主存储器或所述次级存储器中的所述第二子矩阵,以便由所述处理器根据所述LSTM参数矩阵的第二子矩阵、所述第一中间结果向量以及上一帧LSTM输出向量,计算出每个帧对应的第二中间结果向量。
8.根据权利要求6所述的在电子装置中执行LSTM神经网络运算的装置,其特征在于,从所述主存储器读取当前层的LSTM参数矩阵的第一子矩阵的一行至所述处理器缓存中。
9.根据权利要求6所述的在电子装置中执行LSTM神经网络运算的装置,其特征在于,从所述次级主存储器读取当前层的LSTM参数矩阵的第一子矩阵的一行至所述处理器缓存中。
10.根据权利要求6所述的在电子装置中执行LSTM神经网络运算的装置,其特征在于,所述LSTM参数矩阵由所述第一子矩阵和所述第二子矩阵组成。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010775213.7A CN111898752B (zh) | 2020-08-03 | 2020-08-03 | 执行lstm神经网络运算的装置和方法 |
US18/019,672 US20230306236A1 (en) | 2020-08-03 | 2021-07-16 | Device and method for executing lstm neural network operation |
PCT/CN2021/106853 WO2022028232A1 (zh) | 2020-08-03 | 2021-07-16 | 执行lstm神经网络运算的装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010775213.7A CN111898752B (zh) | 2020-08-03 | 2020-08-03 | 执行lstm神经网络运算的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111898752A true CN111898752A (zh) | 2020-11-06 |
CN111898752B CN111898752B (zh) | 2024-06-28 |
Family
ID=73245558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010775213.7A Active CN111898752B (zh) | 2020-08-03 | 2020-08-03 | 执行lstm神经网络运算的装置和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230306236A1 (zh) |
CN (1) | CN111898752B (zh) |
WO (1) | WO2022028232A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022028232A1 (zh) * | 2020-08-03 | 2022-02-10 | 乐鑫信息科技(上海)股份有限公司 | 执行lstm神经网络运算的装置和方法 |
CN116150563A (zh) * | 2023-02-24 | 2023-05-23 | 之江实验室 | 一种业务执行方法、装置、存储介质及电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106599992A (zh) * | 2015-10-08 | 2017-04-26 | 上海兆芯集成电路有限公司 | 以处理单元群组作为时间递归神经网络长短期记忆胞进行运作的神经网络单元 |
CN107329936A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法 |
WO2017210256A1 (en) * | 2016-06-01 | 2017-12-07 | Massachusetts Institute Of Technology | Low-power automatic speech recognition device |
CN108268939A (zh) * | 2016-12-30 | 2018-07-10 | 上海寒武纪信息科技有限公司 | 用于执行lstm神经网络运算的装置和运算方法 |
CN108763159A (zh) * | 2018-05-22 | 2018-11-06 | 中国科学技术大学苏州研究院 | 一种基于fpga的lstm前向运算加速器 |
CN109952572A (zh) * | 2016-09-20 | 2019-06-28 | 谷歌有限责任公司 | 基于消息贴纸的建议响应 |
CN110197262A (zh) * | 2018-02-24 | 2019-09-03 | 北京深鉴智能科技有限公司 | 用于lstm网络的硬件加速器 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN109284825B (zh) * | 2016-04-29 | 2020-04-14 | 中科寒武纪科技股份有限公司 | 用于执行lstm运算的装置和方法 |
US11748414B2 (en) * | 2018-06-19 | 2023-09-05 | Priyadarshini Mohanty | Methods and systems of operating computerized neural networks for modelling CSR-customer relationships |
CN110110851B (zh) * | 2019-04-30 | 2023-03-24 | 南京大学 | 一种lstm神经网络的fpga加速器及其加速方法 |
CN111898752B (zh) * | 2020-08-03 | 2024-06-28 | 乐鑫信息科技(上海)股份有限公司 | 执行lstm神经网络运算的装置和方法 |
-
2020
- 2020-08-03 CN CN202010775213.7A patent/CN111898752B/zh active Active
-
2021
- 2021-07-16 US US18/019,672 patent/US20230306236A1/en active Pending
- 2021-07-16 WO PCT/CN2021/106853 patent/WO2022028232A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106599992A (zh) * | 2015-10-08 | 2017-04-26 | 上海兆芯集成电路有限公司 | 以处理单元群组作为时间递归神经网络长短期记忆胞进行运作的神经网络单元 |
CN107329936A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法 |
WO2017210256A1 (en) * | 2016-06-01 | 2017-12-07 | Massachusetts Institute Of Technology | Low-power automatic speech recognition device |
CN109952572A (zh) * | 2016-09-20 | 2019-06-28 | 谷歌有限责任公司 | 基于消息贴纸的建议响应 |
CN108268939A (zh) * | 2016-12-30 | 2018-07-10 | 上海寒武纪信息科技有限公司 | 用于执行lstm神经网络运算的装置和运算方法 |
CN110197262A (zh) * | 2018-02-24 | 2019-09-03 | 北京深鉴智能科技有限公司 | 用于lstm网络的硬件加速器 |
CN108763159A (zh) * | 2018-05-22 | 2018-11-06 | 中国科学技术大学苏州研究院 | 一种基于fpga的lstm前向运算加速器 |
Non-Patent Citations (2)
Title |
---|
THOMAS MEALEY ETAL.: ""Accelerating Inference In Long Short-Term Memory Neural Networks"", 《IEEE》, 31 July 2018 (2018-07-31), pages 382 - 190 * |
宋旭鸣 等: ""基于深度学习的智能移动边缘网络缓存"", 《中国科学院大学学报》, vol. 37, no. 1, 31 January 2020 (2020-01-31), pages 128 - 135 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022028232A1 (zh) * | 2020-08-03 | 2022-02-10 | 乐鑫信息科技(上海)股份有限公司 | 执行lstm神经网络运算的装置和方法 |
CN116150563A (zh) * | 2023-02-24 | 2023-05-23 | 之江实验室 | 一种业务执行方法、装置、存储介质及电子设备 |
CN116150563B (zh) * | 2023-02-24 | 2024-01-05 | 之江实验室 | 一种业务执行方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111898752B (zh) | 2024-06-28 |
WO2022028232A1 (zh) | 2022-02-10 |
US20230306236A1 (en) | 2023-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109934336B (zh) | 基于最优结构搜索的神经网络动态加速平台设计方法及神经网络动态加速平台 | |
CN107169563B (zh) | 应用于二值权重卷积网络的处理系统及方法 | |
CN111667051A (zh) | 适用边缘设备的神经网络加速器及神经网络加速计算方法 | |
CN111898752B (zh) | 执行lstm神经网络运算的装置和方法 | |
CN112687266B (zh) | 语音识别方法、装置、计算机设备和存储介质 | |
CN114792132B (zh) | 一种脉冲神经网络加速计算系统、方法、设备及介质 | |
CN117574970A (zh) | 用于大规模语言模型的推理加速方法、系统、终端及介质 | |
CN115437795B (zh) | 一种异构gpu集群负载感知的显存重计算优化方法及系统 | |
CN109472344A (zh) | 类神经网络系统的设计方法 | |
CN112686383B (zh) | 一种通信并行的分布式随机梯度下降的方法、系统及装置 | |
CN116644804A (zh) | 分布式训练系统、神经网络模型训练方法、设备和介质 | |
CN112861362A (zh) | 一种基于整车油耗的动力总成性能参数优化方法和装置 | |
CN109685208B (zh) | 一种用于神经网络处理器数据稀梳化加速的方法及装置 | |
CN116757260B (zh) | 一种大型预训练模型的训练方法和系统 | |
CN111753251B (zh) | 候选选择的方法和执行候选选择的加速器 | |
CN111783984A (zh) | 一种神经网络运算方法、装置、设备及存储介质 | |
CN111582444A (zh) | 一种矩阵数据的处理、装置、电子设备及存储介质 | |
CN111738432B (zh) | 一种支持自适应并行计算的神经网络处理电路 | |
WO2021140730A1 (ja) | 演算装置、認識装置および制御装置 | |
WO2021238289A1 (zh) | 序列处理的方法与装置 | |
CN113780539A (zh) | 一种神经网络数据处理方法、装置、设备及存储介质 | |
JP7279507B2 (ja) | 情報処理装置、情報処理プログラム及び制御方法 | |
CN111797977B (zh) | 一种用于二值化神经网络的加速器结构及循环展开方法 | |
CN113377546B (zh) | 通信避免方法、装置、电子设备和存储介质 | |
US20220222523A1 (en) | Apparatus and method for training low bit-precision deep neural network |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |