CN111898752B - 执行lstm神经网络运算的装置和方法 - Google Patents
执行lstm神经网络运算的装置和方法 Download PDFInfo
- Publication number
- CN111898752B CN111898752B CN202010775213.7A CN202010775213A CN111898752B CN 111898752 B CN111898752 B CN 111898752B CN 202010775213 A CN202010775213 A CN 202010775213A CN 111898752 B CN111898752 B CN 111898752B
- Authority
- CN
- China
- Prior art keywords
- lstm
- matrix
- processor
- intermediate result
- frame
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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表示输入的帧数;
为m×1维向量,是模型第l-1层(是第l层的上一层)神经网络在第t帧的输出;
为n×1维向量,是模型第l层(当前LSTM层)神经网络在第t-1帧的输出;
为n×1维向量,是模型第l层(当前LSTM层)神经网络在第t帧的输出;
为n×1维向量,是l层(当前LSTM层)神经网络在第t-1帧的状态;
为n×1维向量,是l层(当前LSTM层)神经网络在第t帧的状态;
i为n×1维的输入门向量;
f为n×1维的遗忘门向量;
o为n×1维的输出门向量;及
g为n×1维的候选记忆细胞向量。
其中i、f、o和g合称为LSTM的门控向量,和为LSTM神经网络的第l层分别在第t-1和第t帧的状态向量。
典型的在现有嵌入式系统中执行LSTM神经网络运算的过程如下:
1.将存放于闪存中的所有LSTM参数复制到随机存取存储器(RAM)中;
2.CPU通过缓存访问存放于RAM的LSTM参数T4n,m+n和输入数据 及
3.计算其中主要的计算为的矩阵运算:在该矩阵运算中,因为参数T4n,m+n大于缓存尺寸,而且LSTM一帧一帧迭代计算,导致缓存中的数据复用率为零。
发明人注意到,虽然现有技术中已尝试提出各种加速执行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帧输入进行批量处理,而不是逐帧计算。
第二运算模块310需要一帧一帧计算,每次输入一帧中间结果向量以及上一帧LSTM输出向量基于两者计算得到该帧LSTM的输出向量并更新LSTM的状态向量上述计算循环K次之后,完成K帧LSTM计算。
参考图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神经网络运算的装置和方法 |
| PCT/CN2021/106853 WO2022028232A1 (zh) | 2020-08-03 | 2021-07-16 | 执行lstm神经网络运算的装置和方法 |
| US18/019,672 US20230306236A1 (en) | 2020-08-03 | 2021-07-16 | Device and method for executing lstm neural network operation |
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 CN111898752A (zh) | 2020-11-06 |
| CN111898752B true 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) |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN111898752B (zh) * | 2020-08-03 | 2024-06-28 | 乐鑫信息科技(上海)股份有限公司 | 执行lstm神经网络运算的装置和方法 |
| CN113673311B (zh) * | 2021-07-05 | 2025-05-30 | 浙江大华技术股份有限公司 | 一种交通异常事件检测方法、设备及计算机存储介质 |
| CN116150563B (zh) * | 2023-02-24 | 2024-01-05 | 之江实验室 | 一种业务执行方法、装置、存储介质及电子设备 |
| WO2025112003A1 (zh) * | 2023-11-30 | 2025-06-05 | 华为技术有限公司 | 存储颗粒、存储控制器、存储芯片、存储装置及设备 |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN106599992B (zh) * | 2015-10-08 | 2019-04-09 | 上海兆芯集成电路有限公司 | 以处理单元群组作为时间递归神经网络长短期记忆胞进行运作的神经网络单元 |
| CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
| CN109284825B (zh) * | 2016-04-29 | 2020-04-14 | 中科寒武纪科技股份有限公司 | 用于执行lstm运算的装置和方法 |
| CN107329936A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法 |
| KR102422848B1 (ko) * | 2016-06-01 | 2022-07-20 | 메사추세츠 인스티튜트 오브 테크놀로지 | 저전력 자동 음성 인식 장치 |
| CN109952572B (zh) * | 2016-09-20 | 2023-11-24 | 谷歌有限责任公司 | 基于消息贴纸的建议响应 |
| CN111260025B (zh) * | 2016-12-30 | 2023-11-14 | 上海寒武纪信息科技有限公司 | 用于执行lstm神经网络运算的装置和运算方法 |
| CN110197262B (zh) * | 2018-02-24 | 2021-07-30 | 赛灵思电子科技(北京)有限公司 | 用于lstm网络的硬件加速器 |
| CN108763159A (zh) * | 2018-05-22 | 2018-11-06 | 中国科学技术大学苏州研究院 | 一种基于fpga的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 not_active Ceased
Non-Patent Citations (2)
| Title |
|---|
| Thomas Mealey etal.."Accelerating Inference In Long Short-Term Memory Neural Networks".《IEEE》.2018,第382-190页. * |
| 宋旭鸣 等."基于深度学习的智能移动边缘网络缓存".《中国科学院大学学报》.2020,第37卷(第1期),第128-135页. * |
Also Published As
| Publication number | Publication date |
|---|---|
| US20230306236A1 (en) | 2023-09-28 |
| WO2022028232A1 (zh) | 2022-02-10 |
| CN111898752A (zh) | 2020-11-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111898752B (zh) | 执行lstm神经网络运算的装置和方法 | |
| CN109685208B (zh) | 一种用于神经网络处理器数据稀梳化加速的方法及装置 | |
| US20240249133A1 (en) | Systems, apparatuses, methods, and non-transitory computer-readable storage devices for training artificial-intelligence models using adaptive data-sampling | |
| CN111738432B (zh) | 一种支持自适应并行计算的神经网络处理电路 | |
| CN116107754A (zh) | 一种面向深度神经网络的内存管理方法及系统 | |
| CN119884332B (zh) | 一种应答信息生成方法、设备、介质及计算机程序产品 | |
| CN118886508A (zh) | 一种模型推理方法、装置、设备及介质 | |
| CN118503383A (zh) | 基于聊天机器人的问答模型推理优化和加速方法及装置 | |
| CN118863055A (zh) | 一种混合专家模型推理方法 | |
| CN112861362B (zh) | 一种基于整车油耗的动力总成性能参数优化方法和装置 | |
| CN118333167A (zh) | 一种注意力机制计算方法、计算系统及存储介质 | |
| Fuketa et al. | Image-classifier deep convolutional neural network training by 9-bit dedicated hardware to realize validation accuracy and energy efficiency superior to the half precision floating point format | |
| CN120197702A (zh) | 模型推理方法、计算机程序产品及芯片 | |
| CN116757260B (zh) | 一种大型预训练模型的训练方法和系统 | |
| CN120276667A (zh) | 键值缓存数据的调度方法、大模型推理方法及装置 | |
| CN118674049A (zh) | 一种基于解码结构的大模型的推理方法和装置 | |
| KR102815186B1 (ko) | 이력 현상을 이용한 파라미터 양자화 기반 인공 신경망 연산 방법 및 장치 | |
| CN118485111A (zh) | 脉冲神经网络的卷积资源调度装置、方法和设备 | |
| CN119783531B (zh) | 一种基于自适应数据子采样的mcmc加速方法和加速器 | |
| TWI898848B (zh) | 基於注意力分數的注意力機制調整方法及使用所述方法的計算裝置 | |
| WO2021036412A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
| CN120179416B (zh) | 一种多模态大模型的流水线并行训练方法 | |
| CN116029332B (zh) | 一种基于lstm网络的片上微调方法及装置 | |
| CN111797977B (zh) | 一种用于二值化神经网络的加速器结构及循环展开方法 | |
| CN120832911A (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 | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |