用于执行LSTM神经网络运算的装置和运算方法制造方法及图纸

技术编号:18427045 阅读:30 留言:0更新日期:2018-07-12 02:10
一种用于执行LSTM神经网络运算的装置和运算方法。该装置包括直接内存访问单元、指令缓存单元、控制器单元、并列设置的多个数据缓存单元和并列设置的多个数据处理模块,其中所述多个数据处理模块与所述数据缓存单元一一对应,用于从相应数据缓存单元中获取输入数据和运算时所需的权值和偏置,进行LSTM神经网络运算;所述多个数据处理模块之间执行并行运算。本发明专利技术采用专用指令运行,运算所需指令数大幅减少,译码开销降低;将权值和偏置缓存,使得数据传输开销降低;本发明专利技术不限制具体应用领域,可在诸如语音识别、文本翻译、音乐合成等领域使用,可扩展性强;多个数据处理模块并行运行,显著提高LSTM网络的运算速度。

【技术实现步骤摘要】
用于执行LSTM神经网络运算的装置和运算方法
本专利技术涉及神经网络运算
,更具体地涉及一种用于执行LSTM神经网络运算的装置和运算方法。
技术介绍
长短时间记忆网络(LSTM)是一种时间递归神经网络(RNN),由于网络本身独特的结构设计,LSTM适合于处理和预测时间序列中间隔和延时非常长的重要事件。相比于传统的递归神经网络,LSTM网络表现出更好的性能,它非常适合从经验中学习,以便在重要事件之间存在未知大小时间之后时对时间序列进行分类、处理和预测。目前,在语音识别、视频描述、机器翻译和音乐自动合成等诸多领域,LSTM网络被广泛应用。同时,随着对LSTM网络研究的不断深入,LSTM网络的性能得到了大幅的改善,也在工业界和学术界引起广泛重视。LSTM网络的运算涉及到多种算法,具体的实现装置主要有以下两种:一种实现LSTM网络运算的装置是通用处理器。该方法通过使用通用寄存器堆栈和通用功能部件执行通用指令来支持上述算法。该方法的缺点之一是单个通用处理器的运算性能较低,无法满足通常的借助LSTM网络本身运算的可并行性来进行加速。而通过多个通用处理器并行执行时,通过处理器之间相互通信又成为了性能瓶颈。另外,通用处理器需要把人工神经网络运算译码成一系列的运算以及访存指令,处理器前端译码也存在较大的功耗开销。另一种支持LSTM网络运算的已知方法是使用图形处理器(GPU)。该方法通过使用通用寄存器堆栈和通用流处理单元执行通用SIMD指令来执行上述算法。由于GPU是专门用来执行图形图像运算以及科学计算的设备,没有对LSTM网络提供专门的支持,仍然需要大量的前端译码工作才能执行LSTM网络运算,这会带来大量的额外开销。另外,GPU只有较小的片上缓存,LSTM网络中使用的相关参数需要反复从片外搬运,片外带宽也成为了性能瓶颈。由此可见,如何设计和提供一种以较小的IO量、低开销的方式实现高运算性能的LSTM网络运算的装置和方法是当前迫切需要解决的技术问题。
技术实现思路
有鉴于此,本专利技术的主要目的是提供一种用于执行LSTM网络运算的装置和方法,以解决上述技术问题中的至少之一。为了实现上述目的,作为本专利技术的一个方面,本专利技术提供了一种用于执行LSTM神经网络运算的装置,其特征在于,包括:并列设置的多个数据缓存单元,用于对运算所需数据、状态和结果进行缓存;并列设置的多个数据处理模块,用于从对应数据缓存单元中获取输入数据和运算时所需的权值和偏置,进行LSTM神经网络运算;其中所述多个数据处理模块与所述数据缓存单元一一对应,且所述多个数据处理模块之间执行并行运算。作为本专利技术的另一个方面,本专利技术还提供了一种用于执行LSTM神经网络运算的装置,其特征在于,包括:存储器;处理器,所述处理器执行如下操作:步骤1,从外部指定地址空间读取用于LSTM神经网络运算的权值和偏置,并将其分割成与所述LSTM神经网络运算的神经元对应的多个部分后存储到所述存储器的不同空间中,其中每个空间中的权值和偏置的数量相同;并从外部指定地址空间读取用于LSTM神经网络运算的输入数据并将其存储在所述存储器的每一个所述不同空间中;步骤2,将所述存储器的每一个所述不同空间中的权值和输入数据分割成若干份,其中每份的权值或输入数据的数量与对应的向量运算单元运算的数量相同;每次将一份权值和输入数据计算得到部分和,再与之前得到的部分和进行向量加,得到新的部分和,其中所述部分和的初始值为偏置值;步骤3,待所述存储器的每一个所述不同空间中的所有输入数据均进行了处理之后,得到的部分和即为神经元对应的净激活量,通过非线性函数tanh或sigmoid函数变换所述神经元的净激活量,得到所述神经元的输出值;步骤4,通过这种方式使用不同的权值和偏置,重复上述步骤1~3,分别计算出LSTM神经网络运算中的忘记门、输入门、输出门以及待选状态单元的向量值;其中,计算部分和的过程采用的是向量运算指令,所述存储器的每一个所述不同空间中的输入数据采用并行运算方式进行计算;步骤5,判断所述存储器的每一个所述不同空间中的当前忘记门、输入门以及待选状态单元向量值计算是否完成,若完成,则进行新的状态单元的计算,即将旧的状态单元和忘记门向量值通过向量点乘部件得到部分和,然后将待选状态单元和输入门的值通过向量点乘部件得到部分和,将所述两个部分和通过向量求和子模块得到更新后的状态单元,同时,将更新后的状态单元通过非线性变换函数tanh进行变换;判断当前更新后的数据状态单元的非线性变换和输出门是否计算完成,如果计算完成,将输出门与带更新后的数据状态单元非线性变换后的向量通过向量点乘部件进行计算得到所述存储器的每一个所述不同空间的最终输出值;步骤6,将各个所述存储器的每一个所述不同空间的最终输出值通过拼接得到最终的输出值。作为本专利技术的再一个方面,本专利技术还提供了一种LSTM神经网络的运算方法,其特征在于,包括以下步骤:步骤S1,从外部指定地址空间读取用于LSTM神经网络运算的权重和偏置,并将其写入到多个并行设置的数据缓冲单元,对各数据缓存单元的状态单元进行初始化;其中,从外部指定地址空间读取的权值和偏置对应于所述LSTM神经网络运算的神经元而被分割送入到各相应数据缓冲单元,各数据缓冲单元中的权值和偏置的数量分别相同;步骤S2,从外部指定地址空间读取输入数据,并将其写入到所述多个数据缓冲单元,其中每一个所述数据缓冲单元中写入的输入数据均为完整的;步骤S3,与所述多个并行设置的数据缓冲单元一一对应的多个数据处理模块分别从对应的数据缓冲单元中读取所述权重、偏置和输入数据,并采用向量点乘部件、向量加法部件、向量求和部件和向量非线性函数转换部件对其进行LSTM神经网络运算,分别得到每一个数据处理模块的输出值;步骤S4,将各个数据处理模块的输出值通过拼接得到最终的输出值,即所述LSTM神经网络运算的最终结果。基于上述技术方案可知,本专利技术的用于执行神经网络运算的装置和方法,相比于已有的实现方式具有以下的有益效果:1、采用外部指令运行,相比于已有的实现方式,运算所需的指令数大幅度减少,使得进行LSTM网络运算时产生的译码开销降低;2、利用LSTM网络运算过程中隐含层的权值和偏置会重复使用这一特点,将权值和偏置值在数据缓存单元中进行暂存,使得装置与外部的IO量减少,数据传输产生的开销降低;3、本专利技术不限制具体的LSTM网络的应用领域,可以在诸如语音识别、文本翻译、音乐合成等领域使用,可扩展性强;4、装置中的多个数据处理模块之间完全并行,数据处理模块内部部分并行,能充分利用LSTM网络的可并行性,显著地提高了LSTM网络的运算速度;5、作为优选,向量非线性函数转换部件的具体实现可以通过查表方法进行,相比于传统的函数运算,效率大幅度提升。附图说明为了更完整地理解本专利技术及其优势,现在将参考结合附图的以下描述,其中:图1示出了根据本专利技术一实施例的用于执行LSTM网络运算的装置的整体结构示意图;图2示出了根据本专利技术一实施例的用于执行LSTM网络运算的装置的数据处理模块示意图;图3示出了根据本专利技术一实施例的用于执行LSTM网络运算的方法流程图;图4示出了根据本专利技术一实施例的用于执行LSTM网络运算的方法中数据处理过程的详细流程图。具体实施方式为使本本文档来自技高网
...

【技术保护点】
1.一种用于执行LSTM神经网络运算的装置,其特征在于,包括:并列设置的多个数据缓存单元,用于对运算所需数据、状态和结果进行缓存;并列设置的多个数据处理模块,用于从对应数据缓存单元中获取输入数据和运算时所需的权值和偏置,进行LSTM神经网络运算;其中所述多个数据处理模块与所述数据缓存单元一一对应,且所述多个数据处理模块之间执行并行运算。

【技术特征摘要】
1.一种用于执行LSTM神经网络运算的装置,其特征在于,包括:并列设置的多个数据缓存单元,用于对运算所需数据、状态和结果进行缓存;并列设置的多个数据处理模块,用于从对应数据缓存单元中获取输入数据和运算时所需的权值和偏置,进行LSTM神经网络运算;其中所述多个数据处理模块与所述数据缓存单元一一对应,且所述多个数据处理模块之间执行并行运算。2.如权利要求1所述的装置,其特征在于,所述数据缓存单元还对所述数据处理模块计算的中间结果进行缓存,且在整个执行过程中只从所述直接内存访问单元导入一次权值和偏置,之后不再改变。3.如权利要求1所述的装置,其特征在于,每一个所述数据缓冲单元中写入了对应于所述LSTM神经网络运算的神经元而被分割的权值和偏置,其中各数据缓冲单元中的权值和偏置的数量均相同,且每个数据缓冲单元都获取了一份完整的输入数据。4.如权利要求1所述的装置,其特征在于,所述数据处理模块采用向量点乘部件、向量加法部件、向量求和部件和向量非线性函数转换部件进行所述LSTM神经网络运算。5.如权利要求4所述的装置,其特征在于,所述向量非线性函数转换部件通过查表方法进行函数运算。6.如权利要求1所述的装置,其特征在于,每一个所述数据处理模块通过分别计算出LSTM网络运算中的忘记门、输入门、输出门以及待选状态单元的向量值来进行所述向量运算,再由各所述向量值得到每一个所述数据处理模块的输出值,最后将各所述数据处理模块的输出值拼接得到最终的输出值。7.一种用于执行LSTM神经网络运算的装置,其特征在于,包括:存储器;处理器,所述处理器执行如下操作:步骤1,从外部指定地址空间读取用于LSTM神经网络运算的权值和偏置,并将其分割成与所述LSTM神经网络运算的神经元对应的多个部分后存储到所述存储器的不同空间中,其中每个空间中的权值和偏置的数量相同;并从外部指定地址空间读取用于LSTM神经网络运算的输入数据并将其存储在所述存储器的每一个所述不同空间中;步骤2,将所述存储器的每一个所述不同空间中的权值和输入数据分割成若干份,其中每份的权值或输入数据的数量与对应的向量运算单元运算的数量相同;每次将一份权值和输入数据计算得到部分和,再与之前得到的部分和进行向量加,得到新的部分和,其中所述部分和的初始值为偏置值;步骤3,待所述存储器的每一个所述不同空间中的所有输入数据均进行了处理之后,得到的部分和即为神经元对应的净激活量,通过非线性函数tanh或sigmoid函数变换所述神经元的净激活量,得到所述神经元的输出值;步骤4,通过这种方式使用不同的权值和偏置,重复上述步骤1~3,分别计算出LSTM神经网络运算中的忘记门、输入门、输出门以及待选状态单元的向量值;其中,计算部分和的过程采用的是向量运算指令,所述存储器的每一个所述不同空间中的输入数据采用并行运算方式进行计算;步骤5,判断所述存储器的每一个所述不同空间中的当前忘记门、输入门以及待选状态单元向量值计算是否完成,若完成,则进行新的状态单元的计算,即将旧的状态单元和忘记门向量值通过向量点乘部件得到部分和,然后将待选状态单元和输入门的值通过向量点乘部件得到部分和,将所述两个部分和通过向量求和子模块得到更新后的状态单元,同时,将更新后的状态单元通过非线性...

【专利技术属性】
技术研发人员:陈云霁陈小兵刘少礼陈天石
申请(专利权)人:上海寒武纪信息科技有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1