一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于软流水的LSTM循环网络加速方法和系统

2022-04-30 15:14:32 来源:中国专利 TAG:

一种基于软流水的lstm循环网络加速方法和系统
技术领域
1.本发明涉及人工智能和计算机体系结构领域,并特别涉及一种软流水的lstm(long short-term memory)循环网络加速方法和系统。


背景技术:

2.在自然语言处理领域(nlp)和自动语音识别(asr)领域,rnn的提出和应用是相较于马尔可夫模型等传统机器学习方法的巨大进步,但是在使用过程中,rnn又会出现梯度弥散,训练难以收敛的问题,同时,rnn会记录所有信息,而过于长久的信息很可能又是没有太大意义的。所以在1997年,schmidhuber在论文long short-term memory中提出了如图1所示的lstm结构,完美得解决了rnn所面临的问题。
3.在构建lstm单元(常简称为cell)的时候,通常都是按照图1中的每个门需要的运算按照顺序依照图2所示的计算公式,从输入到输出完成计算。
4.cndnn里面做了一个优化,把每个门的有关inputx的矩阵乘法,拿出来提前完成计算,这样就减少了在t序列循环的时候需要做的大量的计算和io操作,如图3所示。该优化和原始计算流程的区别在于:lstm原始计算流程中,每个时刻(即图1中t-1,t,t 1等)均会发生完整且相同的,由图2公式所定义的计算行为。其中有一部分计算可以被观察到,不随循环时刻变化改变而改变,也即在t-1,t,t 1等时刻的计算中保持一致。因此这部分计算被称为时间无关项。对应到公式中,即为和wi,wf,wo,wc相关的四个矩阵乘。这是因为这四个权重在lstm网络训练过程中(也即lstm网络被运行前)已经被确定,每一个时刻的输入x
t
同样也在lstm运行前被确定(例如使用lstm网络分析一段10秒的语音数据,在lstm网络进行分析前,这段语音数据已经存在了)。因此作为wi,wf,wo,wc和x
t
矩阵乘的结果,这四项计算可以在运行lstm网络前就被处理完毕,不参与lstm网络的循环过程。
5.按照标准的lstm流程完成计算,随着循环次数的增加,整个网络的推理时间可以变得非常大,尽管上述提取时间无关项的优化方式可以给整个网络带来性能上的提升,但是依旧还有很大的优化空间。


技术实现要素:

6.本发明提出一种基于ai加速芯片(简称为mlu)的循环网络(常简称为rnn)性能优化方法。
7.具体来说本发明提出了一种基于软流水的lstm循环网络加速方法,其中包括:
8.步骤1、获取具有权重缓存的ai专用芯片和待处理的时间序列,将待运行的lstm循环网络模型加载至该ai专用芯片,并将lstm循环网络模型运行中部分时间无关项加载至该权重缓存,另一部分时间无关项存于硬盘;
9.步骤2、将时间序列中第一时刻的特征向量输入至ai专用芯片,该ai专用芯片运行该lstm循环网络模型,得到初始时刻的隐层输出;
10.步骤3、按顺序将该时间序列中当前时刻t的特征向量x
t
,以及前一时刻的隐层输
出h
t-1
输入至该ai专用芯片,通过读取位于权重缓存的部分时间无关项,运行与该部分时间无关项相关的该lstm循环网络模型的同时加载硬盘中该另一部分时间无关项至该权重缓存,当与该部分时间无关项相关的该lstm循环网络模型运行完毕后,再从权重缓存读取该另一部分时间无关项继续执行该lstm循环网络模型,得到当前时刻t的隐层输出h
t
,同时将该部分时间无关项再次加载至该权重缓存;
11.步骤4、循环执行该步骤3,直到达到预设循环次数,输出当前时刻的隐层输出作为lstm循环网络的执行结果。
12.所述的基于软流水的lstm循环网络加速方法,其中该步骤2包括:加载前一时刻隐层的输出h
t
和提前计算完毕的wx
t
至该ai专用芯片中的神经元缓存。
13.所述的基于软流水的lstm循环网络加速方法,其中该时间无关项为该lstm循环网络模型运行中的r权值。
14.所述的基于软流水的lstm循环网络加速方法,其中该待处理的时间序列为语音数据,该lstm循环网络模型为语义识别模型,该执行结果为该语音数据对应的语义内容。
15.本发明还提出了一种基于软流水的lstm循环网络加速系统,其中包括:
16.加载模块,用于获取具有权重缓存的ai专用芯片和待处理的时间序列,将待运行的lstm循环网络模型加载至该ai专用芯片,并将lstm循环网络模型运行中部分时间无关项加载至该权重缓存,另一部分时间无关项存于硬盘;
17.初始模块,用于将时间序列中第一时刻的特征向量输入至ai专用芯片,该ai专用芯片运行该lstm循环网络模型,得到初始时刻的隐层输出;
18.运算模块,用于按顺序将该时间序列中当前时刻t的特征向量x
t
,以及前一时刻的隐层输出h
t-1
输入至该ai专用芯片,通过读取位于权重缓存的部分时间无关项,运行与该部分时间无关项相关的该lstm循环网络模型的同时加载硬盘中该另一部分时间无关项至该权重缓存,当与该部分时间无关项相关的该lstm循环网络模型运行完毕后,再从权重缓存读取该另一部分时间无关项继续执行该lstm循环网络模型,得到当前时刻t的隐层输出h
t
,同时将该部分时间无关项再次加载至该权重缓存;
19.循环模块4,用于循环多次调用该运算模块,直到达到预设循环次数,输出当前时刻的隐层输出作为lstm循环网络的执行结果。
20.所述的基于软流水的lstm循环网络加速系统,其中该初始模块包括:加载前一时刻隐层的输出h
t
和提前计算完毕的wx
t
至该ai专用芯片中的神经元缓存。
21.所述的基于软流水的lstm循环网络加速系统,其中该时间无关项为该lstm循环网络模型运行中的r权值。
22.所述的基于软流水的lstm循环网络加速系统,其中该待处理的时间序列为语音数据,该lstm循环网络模型为语义识别模型,该执行结果为该语音数据对应的语义内容。
23.本发明还提出了一种存储介质,用于存储执行所述任意一种基于软流水的lstm循环网络加速方法的程序。
24.本发明还提出了一种客户端,用于所述任意一种基于软流水的lstm循环网络加速系统。
25.本技术通过将lstm循环网络模型运行中的部分时间无关项加载至该权重缓存中,当再次运算时,处理器直接从缓存中获取该时间无关项,无需再次从片外加载数据,减少这
部分的反复io带来的大量时间开销,提高了运算效率。
附图说明
26.图1为标准lstm结构图;
27.图2为标准lstm计算公式示意图;
28.图3为cudnn计算流程图;
29.图4为全部权值驻留时的伪代码图;
30.图5为部分权值驻留执行软流水时的伪代码图。
具体实施方式
31.上述提取时间无关项的优化针对的是w权重(wi,wf,wo,wc)相关的四次矩阵乘计算。原始计算过程中仍存有r权重(ri,rf,ro,rc)相关的四次矩阵乘计算。针对现有技术的不足,本发明提出一种在mlu硬件基础上通过权值驻留和软流水进行性能优化的方案。
32.mlu网络执行lstm算法可以分为三个简化的步骤:
33.1.处理器从片外中加载ri,rf,ro,rc四个权值至ai加速芯片的片上缓存wram(w代表weight)中,加载前一时刻隐层的输出h
t
和提前计算完毕的wx
t
至片上缓存nram(n代表neuron)中,x
t
为当前t时刻输入的特征向量。
34.2.处理器根据加载完毕的数据进行lstm网络剩余运算(时间无关项已经提前计算了)。
35.3.输出计算结果。
36.上述步骤一可以利用mlu的片上缓存进行优化(称为权值驻留)。由于ri,rf,ro,rc四个权值(简称为r权值)同样是时间无关项,因此当这四项被首次加载至wram后,后续循环并不需要重复加载。可以缓存的r权值数量受到到权值大小和wram容量影响。最优状态为当片上缓存空间wram足够大时,r权值可全部缓存在wram中,当片上缓存空间wram不足以缓存全部r权值时,可对r权值进行部分缓存,最差状态是片上缓存空间wram全部无法缓存(比如片上空间用于缓存其他数据,没有额外空间缓存r权值时),此时方案就退化为cudnn优化方案的状态。除了权值驻留优化步骤一以外,同时可以通过软件流水提高步骤1和步骤2的并行程度,例如在步骤1在步骤2进行计算的同时,提前加载下一次循环需要的数据。
37.由以上方案可知,本发明的优点在于进一步优化了r权值的加载过程,减少了lstm循环过程中的io量。
38.为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。
39.1、权值驻留
40.驻留的概念在方案说明中已经提及。由于权值驻留的程度受到权值大小和wram容量的限制,因此存在需要进行部分驻留和部分软流水的情况下。软流水的部分会放到下一部分说明,这里仅对权值驻留行为本身提供伪代码,如图4所示。
41.2、部分驻留结合软流水
42.寒武纪硬件中,计算队列和io队列是两个不同的指令队列,这就让软流水的实现成为可能,在类似结构的处理器里面,也可以实现同样的效果。
43.显然权值全部驻留需要满足以下条件:
44.wram
size
≥ri
size
rf
size
ro
size
rc
size
45.因为上述公式中的wram容量以及权值大小,在程序编写阶段可以获知(wram是硬件参数,生产时已经确定。r权值的大小是算法参数,算法确定后即确定)。因此在代码编写时可以基于上式的大小关系进行权值的部分驻留和分块加载。拆分方式有非常多种,这里仅给出一种可行的实现方式:尽可能保证r权值可以完整驻留在wram,无法完整驻留则保留部分。wram保留一部分空闲空间,用于在循环时进行剩余权值的加载和更新。软流水的优化则在于权值的加载和更新过程可以和矩阵乘的计算并行。假设wram仅能完整放下三个r权值,伪代码图5所示。
46.以下为与上述方法实施例对应的系统实施例,本实施方式可与上述实施方式互相配合实施。上述实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述实施方式中。
47.本发明还提出了一种基于软流水的lstm循环网络加速系统,其中包括:
48.加载模块,用于获取具有权重缓存的ai专用芯片和待处理的时间序列,将待运行的lstm循环网络模型加载至该ai专用芯片,并将lstm循环网络模型运行中部分时间无关项加载至该权重缓存,另一部分时间无关项存于硬盘;
49.初始模块,用于将时间序列中第一时刻的特征向量输入至ai专用芯片,该ai专用芯片运行该lstm循环网络模型,得到初始时刻的隐层输出;
50.运算模块,用于按顺序将该时间序列中当前时刻t的特征向量x
t
,以及前一时刻的隐层输出h
t-1
输入至该ai专用芯片,通过读取位于权重缓存的部分时间无关项,运行与该部分时间无关项相关的该lstm循环网络模型的同时加载硬盘中该另一部分时间无关项至该权重缓存,当与该部分时间无关项相关的该lstm循环网络模型运行完毕后,再从权重缓存读取该另一部分时间无关项继续执行该lstm循环网络模型,得到当前时刻t的隐层输出h
t
,同时将该部分时间无关项再次加载至该权重缓存;
51.循环模块4,用于循环多次调用该运算模块,直到达到预设循环次数,输出当前时刻的隐层输出作为lstm循环网络的执行结果。
52.所述的基于软流水的lstm循环网络加速系统,其中该初始模块包括:加载前一时刻隐层的输出h
t
和提前计算完毕的wx
t
至该ai专用芯片中的神经元缓存。
53.所述的基于软流水的lstm循环网络加速系统,其中该时间无关项为该lstm循环网络模型运行中的r权值。
54.所述的基于软流水的lstm循环网络加速系统,其中该待处理的时间序列为语音数据,该lstm循环网络模型为语义识别模型,该执行结果为该语音数据对应的语义内容。
55.本发明还提出了一种存储介质,用于存储执行所述任意一种基于软流水的lstm循环网络加速方法的程序。
56.本发明还提出了一种客户端,用于所述任意一种基于软流水的lstm循环网络加速系统。
57.本发明还提出了一种基于权值驻留的lstm循环网络加速系统,其中包括:
58.加载模块,用于获取具有权重缓存的ai专用芯片和待处理的时间序列,将待运行的lstm循环网络模型加载至该ai专用芯片,并将lstm循环网络模型运行中的所有时间无关
项加载至该权重缓存;
59.初始模块,用于将时间序列中第一时刻的特征向量输入至ai专用芯片,该ai专用芯片运行该lstm循环网络模型,得到初始时刻的隐层输出;
60.运算模块,用于按顺序将该时间序列中当前时刻t的特征向量x
t
,以及前一时刻的隐层输出h
t-1
输入至该ai专用芯片,通过读取位于权重缓存的时间无关项,运行该lstm循环网络模型,得到当前时刻t的隐层输出h
t

61.循环模块,用于多次调用该运算模块,直到达到预设循环次数,输出当前时刻的隐层输出作为lstm循环网络的执行结果。
62.所述的基于权值驻留的lstm循环网络加速系统,其中该初始模块用于加载前一时刻隐层的输出h
t
和wx
t
至该ai专用芯片中的神经元缓存。
63.所述的基于权值驻留的lstm循环网络加速系统,其中该时间无关项为该lstm循环网络模型的r权值。
64.所述的基于权值驻留的lstm循环网络加速系统,其中该待处理的时间序列为语音数据,该lstm循环网络模型为语义识别模型,该执行结果为该语音数据对应的语义内容。
65.本发明还提出了一种存储介质,用于存储执行所述任意一种基于权值驻留的lstm循环网络加速方法的程序。
66.本发明还提出了一种客户端,用于所述任意一种基于权值驻留的lstm循环网络加速系统。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献