一种RNN并行模型及其在多核CPU上的实现方法及系统

专利查询2023-8-8  130


一种rnn并行模型及其在多核cpu上的实现方法及系统
技术领域
1.本发明属于人工智能及并行计算技术领域,具体涉及一种rnn并行模型及其在多核cpu上的实现方法及系统。


背景技术:

2.随着深度学习的快速发展,循环神经网络(recurrent neural network,rnn)已经广泛应用于自然语言处理和时间序列任务中,包括情感分类、机器翻译、智能问答和序列预测等人工智能应用。rnn具有获取输入序列顺序信息的能力,能够将网络中前一个时间步的信息传递到下一个时间步,从而捕捉随时间变化的序列信息之间关联性。由于原始rnn面临着逐渐消失和爆炸的梯度问题,长短期记忆网络(long-short term memory,lstm)和门控循环单元(gated recurrent unit,gru)是目前使用最广泛的循环单元,在各种任务上都取得了很好的性能。然而,随着数据量增加和网络层数变深,前馈和卷积神经网络(convolutional neural network,cnn)由于不需要任何描述过去和未来数据之间联系的内部状态,可以成功的进行并行。而rnn推理和训练时,存在着数据依赖关系,使得rnn的并行化变得困难,训练rnn需要花费大量时间,这限制了其学术研究和工业应用。
3.为了解决这一问题,一些研究使用cnn代替rnn进行自然语言处理和时间序列任务,这类研究虽然可以利用cnn的并行加速特点,但是由于传统cnn无法获取序列的顺序信息,准确率会有一定的损失。还有一些研究通过改进循环单元来提高rnn训练速度,如sru(simple recurrent unit,sru)和mgu(minimum gate unit,mgu)等,它们对门控单元机制进行了简化,减少了训练参数数量,取得不错的加速效果,但并没有改变传统循环神经网络的连接方式。目前,针对改变传统循环神经网络连接方式方面的研究,如切片循环神经网络(sliced recurrent neural network,srnn),它通过将序列切分成多个子序列来实现并行化,并引入额外参数获取被切开序列间的高层特征信息,在不改变循环单元门控机制的情况下,比传统rnn模型的网络连接方式更快,但srnn主要利用单层rnn模型提取最小子序列的特征。然而,对于较为复杂的多变量序列数据而言,更多的使用多层rnn模型提取特征,与单层rnn模型相比,可以取得更好的效果,但多层rnn中同一层内的不同时间步以及同一时间步的不同层之间都存在着数据关联,下一层需要上一层的输出并实现进一步特征提取。
4.因此,针对传统多层rnn模型的并行优化,以及其序列数据和网络模型如何充分利用多核cpu架构特点进行合理分配方法具有重要意义。


技术实现要素:

5.本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种rnn并行模型及其在多核cpu上的实现方法及系统,多层次的rnn并行模型针对传统多层rnn结构进行层内和层间的多层次并行优化,并将这种多层次的rnn并行方式映射到多核处理器上;通过细粒度的数据和模型划分方法,充分利用多核cpu架构的特点,实现循环神经网络更细粒度的并行方式,加快网络的训练。
6.本发明采用以下技术方案:
7.一种rnn并行模型在多核cpu上的实现方法,对多层次的rnn并行模型的层内并行使用srnn切分方法,将原输入序列分成许多最小子序列,并将切分后的多层子rnn作用于每个最小子序列;采用层间并行方法分析作用于每个最小子序列的多层子rnn中数据的依赖关系,将不同层及不同时间步的循环单元并行化得到多层次的rnn并行模型;多层次的rnn并行模型在多核cpu上第一层次映射方法为核组内的模型并行,使用共享缓存的多个处理器核心组成的核组计算作用于最小子序列的多层子rnn,核组内分配模型的不同部分,得到的计算结果再进行核组间的数据并行计算;多层次的rnn并行模型在多核cpu上第二层次映射方法为核组间的数据并行,每个核组计算得到了多层子rnn的输出,作为额外循环单元的输入再进行核组间的数据并行计算,实现多层次的rnn并行模型在多核cpu上的并行训练。
8.具体的,层内并行使用srnn切分方法具体为:
9.将输入序列x划分成n个等长的子序列n,则每个子序列n的长度将每个子序列n再次划分为n个等长子序列,重复k次操作,得到nk个最小子序列,每个最小子序列的长度为引入额外循环单元获取被切开子序列间的高层特征信息,构建srnn模型,每个最小子序列使用已切分的h层子rnn提取特征。
10.进一步的,构建srnn网络时,时间复杂度为:
[0011][0012]
其中,代表作用于最小子序列的多层rnn所需要的计算时间,nk代表额外添加的循环单元所需要的计算时间。
[0013]
具体的,将不同层及不同时间步并行化具体为:
[0014]
对于多层次的rnn并行模型的层内,将多层rnn按照最小子序列的大小从时间步维度进行划分后,使用划分后的多层子rnn提取最小子序列特征,再引入额外的循环单元获取被切开序列间的高层特征信息;对于多层次的rnn并行模型的层间,将每个作用于最小子序列的多层子rnn层间并行化。
[0015]
进一步的,使用具有h层的子rnn提取最小子序列特征时,将第h层第t时间步的计算结果作为下层同一时间步和本层下一时间步的输入,作用于最小子序列的多层子rnn的计算复杂度变为
[0016]
进一步的,根据不同层和不同时间步的数据依赖关系,对作用于最小子序列的多层rnn进行多层间并行化后,当第1时间步中的第1层循环单元计算完后,将的结果作为第1时间步中的第2层循环单元和第2时间步中的第1层循环单元的输入,当和同时满足数据输入情况时,同时计算和将和的输出作为的输入进行并行计算,为第1时间步中的第3层循环单元,为第2时间步中的第2层循环单元,为第3时间
步中的第1层循环单元。
[0017]
具体的,多层次的rnn并行模型在多核cpu上第一层次映射具体为:
[0018]
使用共享同一末级缓存的处理器核心组成的核组计算作用于最小子序列的多层子rnn,模型中的多层子rnn采用模型并行方式,把不同层和不同时间步中能够并行计算的单元分配到不同处理器核心。
[0019]
进一步的,多层次的rnn并行模型在多核cpu上第二层次映射具体为:
[0020]
使用每个核组计算作用于最小子序列的多层子rnn,得到多层rnn的最终输出,将最终输出作为额外循环单元的输入再进行堆叠rnn计算,核组之间通过共享内存进行通信;进行堆叠rnn计算时,每个核组中的模型相同,输入不同,对核组间的数据并行进行映射。
[0021]
本发明的另一个技术方案是,rnn并行模型,多层rnn模型的输入序列x=[x1,x2,

,x
t
],从时间维度展开的网络规模为h*t,h为隐藏层数,t为序列的时间步长,多层次的rnn并行模型中的循环单元选择simplernn单元、lstm单元或gru单元。
[0022]
本发明的另一个技术方案是,一种rnn并行模型在多核cpu上的实现系统,包括:
[0023]
划分模块,对多层次的rnn并行模型的层内并行使用srnn切分方法,将原输入序列分成许多最小子序列,并将切分后的多层子rnn作用于每个最小子序列;
[0024]
并行化模块,采用层间并行方法分析作用于每个最小子序列的多层子rnn中数据的依赖关系,将不同层及不同时间步的循环单元并行化得到多层次的rnn并行模型;
[0025]
第一映射模块,多层次的rnn并行模型在多核cpu上第一层次映射方法为核组内的模型并行,使用共享缓存的多个处理器核心组成的核组计算作用于最小子序列的多层子rnn,核组内分配模型的不同部分,得到的计算结果再进行核组间的数据并行计算;
[0026]
第二映射模块,多层次的rnn并行模型在多核cpu上第二层次映射方法为核组间的数据并行;每个核组计算得到了多层子rnn的输出,作为额外循环单元的输入再进行核组间的数据并行计算,实现多层次的rnn并行模型在多核cpu上的并行训练。。
[0027]
与现有技术相比,本发明至少具有以下有益效果:
[0028]
本发明一种rnn并行模型在多核cpu上的实现方法,根据多层次的rnn并行模型的数据依赖关系,及多核处理器的架构特点,将多层次的rnn并行模型映射到多核处理器上进行训练;通过这种细粒度的数据和模型划分方法,充分利用多核处理器架构的特点,实现多层循环神经网络更细粒度的并行训练方法。
[0029]
进一步的,层内并行使用srnn切分方法,将原输入序列分成许多最小子序列,引入额外循环单元获取被切开序列间的高层特征信息,并将切分后的多层子rnn作用于每个最小子序列,这些多层子rnn之间没有了数据依赖性,是可以进行并行计算的。采用这种层内并行方法构建模型时,其时间复杂度由传统多层rnn模型的ht变为
[0030]
进一步的,层间并行通过分析作用于最小子序列的多层子rnn中数据依赖关系,将不同层及不同时间步的循环单元并行化。通过利用多层子rnn中潜在的并行性及数据依赖性,不改变网络结构,进一步将作用于子序列的多层子rnn并行化。采用这种层间并行方法进一步构建模型得到多层次的rnn并行模型,其时间复杂度由上一步的变为
[0031]
进一步的,对于所提出的多层次的rnn并行模型,设计一种多核处理器架构上实现方法:使用共享同一末级缓存的处理器核心组成的核组计算作用于最小子序列的多层子rnn,通过采用模型并行方式,把不同层和不同时间步中能够并行计算的单元分配到不同处理器核心,通信比较频繁,但它们之间只传递隐藏状态信息,通信量较小,利用处理器核心共享缓存的特点更有效的实现模型并行。
[0032]
进一步的,使用每个核组计算作用于最小子序列的多层子rnn,得到多层子rnn的最终输出,作为额外增加计算神经元的输入再进行堆叠rnn计算,核组之间是通过共享内存进行通信。进行堆叠rnn计算时,每个核组中的模型相同,输入不同,而且通信频率较低,因此将核组间的数据并行按上述方法进行映射。
[0033]
本发明一种rnn并行模型,改变了传统多层rnn网络模型的结构,本发明模型的多层次并行结构体现在:层内使用srnn的切分方法,将原输入序列分成许多最小子序列,并将切分后的多层子rnn作用于每个最小子序列;层间通过分析作用于每个最小子序列的多层子rnn中数据的依赖关系,将不同层及不同时间步循环单元并行计算,对多层子rnn进一步的并行优化。以这种方式构成一个多层次的rnn并行模型,对传统的多层rnn模型进行了更细粒度的划分,加快其训练速度。
[0034]
综上所述,本发明方法中包含了针对传统多层rnn模型中层内和层间的多层次并行方式,并将这种多层次的并行方式映射到多核处理器上,通过这种细粒度的数据和模型划分方法,充分利用多核处理器架构的特点,实现循环神经网络更细粒度的并行方式,加快网络的训练。
[0035]
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
[0036]
图1为rnn并行模型示意图;
[0037]
图2为多层rnn的层内并行划分示意图;
[0038]
图3为多层rnn示意图,其中,(a)为作用于最小子序列的多层rnn示意图;(b)为其层间并行优化示意图;
[0039]
图4为rnn并行模型示意图;
[0040]
图5为ft-2000+/64多核处理器架构示意图;
[0041]
图6为rnn并行模型在多核处理器上的映射方法示意图。
具体实施方式
[0042]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043]
在本发明的描述中,需要理解的是,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元
素、组件和/或其集合的存在或添加。
[0044]
还应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
[0045]
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0046]
在附图中示出了根据本发明公开实施例的各种结构示意图。这些图并非是按比例绘制的,其中为了清楚表达的目的,放大了某些细节,并且可能省略了某些细节。图中所示出的各种区域、层的形状及它们之间的相对大小、位置关系仅是示例性的,实际中可能由于制造公差或技术限制而有所偏差,并且本领域技术人员根据实际所需可以另外设计具有不同形状、大小、相对位置的区域/层。
[0047]
本发明提供了一种多层次的rnn并行模型及其在多核cpu上的实现方法,多层次的rnn并行模型针对传统多层rnn结构进行了层内和层间的多层次并行优化,并将这种多层次的并行方式映射到多核处理器上,通过这种细粒度的数据和模型划分方法,充分利用多核cpu架构的特点,实现循环神经网络更细粒度的并行方式,加快网络的训练。本发明包括以下步骤:针对多层的rnn模型,层内并行使用srnn切分方法,并将切分后的多层rnn作用于每个最小子序列;层间并行通过分析作用于最小子序列的多层子rnn中数据依赖关系,将不同层及不同时间步并行化。通过上述两种并行方式构建出多层次的rnn并行模型,并分别从模型并行和数据并行这两个层次,设计了在多核处理器上的实现方法。
[0048]
本发明一种rnn并行模型在多核cpu上的实现方法,以ft-2000+多核处理器为例进行说明,包括以下步骤:
[0049]
s1、构建一个多层rnn模型;
[0050]
根据输入序列大小构建一个多层rnn模型,输入序列x=[x1,x2,...,x
t
],其中t表示序列的时间步长,隐藏层数为h,那么构建的多层rnn模型从时间维度展开的网络规模为h*t。多层rnn模型中的循环单元选择基本的simplernn单元、lstm单元、gru单元或者其他改进的循环单元。
[0051]
s2、对步骤s1构建的多层rnn模型内(时间步维度)并行使用srnn切分方法,将原输入序列分成许多最小子序列,并将切分后的多层子rnn作用于每个最小子序列;
[0052]
首先将输入序列x划分成n个等长的子序列n,x可表示为x=[n1,n2,...,nn],则每个子序列n的长度
[0053]
然后将每个子序列n再次划分为n个等长子序列,重复k次这样的操作,直到得出一个合适大小的最小子序列,最小子序列的数量为nk,每个最小子序列的长度为
[0054]
引入额外循环单元获取被切开序列间的高层特征信息,按照这种划分的方式构建srnn网络,其中,最小子序列使用已切分的h层子rnn提取序列特征。因此,处理每个最小子序列的多层子rnn规模为并且它们之间是并行的。
[0055]
构建srnn网络时,时间复杂度为:
[0056][0057]
其中,代表作用于最小子序列的多层rnn所需要的计算时间,nk代表额外添加的循环单元所需要的计算时间。
[0058]
对于序列的时间步长为t=16、h=4层的传统多层rnn模型结构,按时间序列维度展开后如图1所示。每次将序列划分为2个等长子序列,即n=2,重复k=2次,则最小子序列的长度为l=4,并添加额外的循环单元,进行层内并行划分后神经网络结构如图2所示。
[0059]
s3、层间并行通过分析作用于最小子序列的多层子rnn中数据依赖关系,将不同层及不同时间步并行化;
[0060]
使用具有h层的子rnn提取最小子序列特征时,对于第h层第t时间步的计算结果来说,会作为下层同一时间步和本层下一时间步的输入,和并不存在数据依赖关系,因此,和是可以并行计算的。根据上述的分析,对于第h层第t时间步的计算结果来说,其可以并行计算的单元为:
[0061][0062]
[z=min(h,l)]
[0063]
以这样的并行方法,作用于最小子序列的多层子rnn的计算复杂度由原来的变为
[0064]
因此,对于图2中构建的神经网络,其用于最小子序列的多层子rnn原本的计算流程为图3(a)所示,首先计算第1时间步中的4层循环单元,计算顺序为紧接着计算第2时间步中的4层循环单元,以这样的方式,直到第4时间步的第4层循环单元为止,这相当于一种串行的计算方式。根据不同层和不同时间步的数据依赖关系,对作用于最小子序列的多层子rnn进行多层间并行化后,如图3(b)所示,当计算完后,将其结果作为和的输入,当这两个数据同时满足的情况下,和是可以同时进行计算的;和的输出,可作为的输入进行并行计算。
[0065]
多层次的rnn并行模型的时间复杂度为如图4所示,序列数据包含16个时间步,分别从两个维度并行。层内使用步骤s2的srnn并行方式,即将传统的多层rnn模型按照最小子序列的大小从时间步维度进行划分后,使用划分后的多层子rnn提取最小子序列特征,再引入额外的循环单元获取被切开序列间的高层特征信息;层间使用本步骤中的并行方式,将每个作用于最小子序列的多层子rnn层间并行化,对传统的多层rnn模型进行更细粒度的并行。
[0066]
s4、多层次的rnn并行模型在多核cpu上第一层次映射方法为核组内的模型并行;
[0067]
飞腾处理器分为三个并行层次,如图5所示,芯片集成的64个处理器核心,划分为8个panel,每个panel中有2个cluster,每个cluster包含4个处理器核心。
[0068]
对于所提出的多层次的rnn并行模型,设计一种多核处理器架构上实现方法:使用共享同一末级缓存的处理器核心组成的核组计算作用于最小子序列的多层子rnn,本模型中的多层子rnn采用模型并行方式,按照这种方式,可以把不同层和不同时间步中能够并行计算的单元分配到不同处理器核心,通信比较频繁,但它们之间只传递隐藏状态信息,通信量较小,利用处理器核心共享缓存的特点更有效的实现模型并行。
[0069]
s5、多层次的rnn并行模型在多核cpu上第二层次映射方法为核组间的数据并行。
[0070]
请参阅图6,步骤s4中使用每个核组计算作用于最小子序列的多层子rnn,得到多层rnn的最终输出,作为额外增加计算神经元的输入再进行堆叠rnn计算,核组之间是通过共享内存进行通信。进行堆叠rnn计算时,每个核组中的模型相同,输入不同,而且通信频率较低,因此将核组间的数据并行按上述方法进行映射。
[0071]
本发明再一个实施例中,提供一种rnn并行模型在多核cpu上的实现系统,该系统能够用于实现上述rnn并行模型在多核cpu上的实现方法,具体的,该rnn并行模型在多核cpu上的实现系统包括划分模块、并行化模块、第一映射模块以及第二映射模块。
[0072]
其中,划分模块,对多层rnn模型的层内并行使用srnn切分方法,将原输入序列分成许多最小子序列,并将切分后的多层子rnn作用于每个最小子序列;
[0073]
并行化模块,采用层间并行方法分析作用于每个最小子序列的多层rnn中数据的依赖关系,将不同层及不同时间步的循环单元并行化;
[0074]
第一映射模块,多层次的rnn并行模型在多核cpu上第一层次映射方法为核组内的模型并行,使用共享缓存的多个处理器核心组成的核组计算作用于最小子序列的多层子rnn,核组内分配模型的不同部分,得到的计算结果再进行核组间的数据并行计算;
[0075]
第二映射模块,多层次的rnn并行模型在多核cpu上第二层次映射方法为核组间的数据并行;每个核组计算得到了多层子rnn的输出,作为额外循环单元的输入再进行核组间的数据并行计算,实现多层次的rnn并行模型在多核cpu上的并行训练。
[0076]
本发明再一个实施例中,提供了一种终端设备,该终端设备包括处理器以及存储器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于执行所述计算机存储介质存储的程序指令。处理器可能是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor、dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其是终端的计算核心以及控制核心,其适于实现一条或一条以上指令,具体适于加载并执行一条或一条以上指令从而实现相应方法流程或相应功能;本发明实施例所述的处理器可以用于多层次的rnn并行模型在多核cpu上的实现方法的操作,包括:
[0077]
对多层rnn模型的层内并行使用srnn切分方法,将原输入序列分成许多最小子序列,并将切分后的多层子rnn作用于每个最小子序列;采用层间并行方法分析作用于每个最小子序列的多层rnn中数据的依赖关系,将不同层及不同时间步的循环单元并行化;多层次的rnn并行模型在多核cpu上第一层次映射方法为核组内的模型并行,使用共享缓存的多个
处理器核心组成的核组计算作用于最小子序列的多层子rnn,核组内分配模型的不同部分,得到的计算结果再进行核组间的数据并行计算;多层次的rnn并行模型在多核cpu上第二层次映射方法为核组间的数据并行;每个核组计算得到了多层子rnn的输出,作为额外循环单元的输入再进行核组间的数据并行计算,实现多层次的rnn并行模型在多核cpu上的并行训练。
[0078]
本发明再一个实施例中,本发明还提供了一种存储介质,具体为计算机可读存储介质(memory),所述计算机可读存储介质是终端设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储介质既可以包括终端设备中的内置存储介质,当然也可以包括终端设备所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了终端的操作系统。并且,在该存储空间中还存放了适于被处理器加载并执行的一条或一条以上的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机可读存储介质可以是高速ram存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。
[0079]
可由处理器加载并执行计算机可读存储介质中存放的一条或一条以上指令,以实现上述实施例中有关多层次的rnn并行模型在多核cpu上的实现方法的相应步骤;计算机可读存储介质中的一条或一条以上指令由处理器加载并执行如下步骤:
[0080]
对多层rnn模型的层内并行使用srnn切分方法,将原输入序列分成许多最小子序列,并将切分后的多层子rnn作用于每个最小子序列;采用层间并行方法分析作用于每个最小子序列的多层rnn中数据的依赖关系,将不同层及不同时间步的循环单元并行化;多层次的rnn并行模型在多核cpu上第一层次映射方法为核组内的模型并行,使用共享缓存的多个处理器核心组成的核组计算作用于最小子序列的多层子rnn,核组内分配模型的不同部分,得到的计算结果再进行核组间的数据并行计算;多层次的rnn并行模型在多核cpu上第二层次映射方法为核组间的数据并行;每个核组计算得到了多层子rnn的输出,作为额外循环单元的输入再进行核组间的数据并行计算,实现多层次的rnn并行模型在多核cpu上的并行训练。
[0081]
本发明能够解决传统多层rnn速度慢的问题,通过对rnn整体结构改进,使其可以并行训练,在天气预测时间序列及自然语言处理等数据集上的实验结果表明,本发明提出的多层次的rnn并行模型的速度相较传统rnn提升了高达4倍,并且与传统rnn保持相当的准确率。当传统三层rnn模型,时间步长为24,将其转变为多层次rnn并行模型结构时,训练速度提升了约2.9倍;当传统五层rnn模型,时间步长为48,多层次rnn并行模型结构时将训练速度提升了约3.7倍。由此可见,循环神经网络规模更大时,即时间序列长度越长或者网络层数越大,并行的效果会更好,提升的速度越明显。
[0082]
综上所述,本发明一种多层次的rnn并行模型及其在多核cpu上的实现方法及系统,包含了多层rnn中层内和层间的多层次并行方式,并将这种多层次的并行方式映射到飞腾处理器上,通过这种细粒度的数据和模型划分方法,充分利用多核处理器架构的特点,实现循环神经网络更细粒度的并行方式,加快网络的训练。对于其他多核架构的处理器,也可使用本发明所提出的方法构建多层次的rnn并行模型,并按照该类处理器的架构将数据和模型进行并行划分。
[0083]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序
产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0084]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0085]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0086]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0087]
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。

技术特征:
1.一种rnn并行模型在多核cpu上的实现方法,其特征在于,对多层rnn模型的层内并行使用srnn切分方法,将原输入序列分成许多最小子序列,并将切分后的多层子rnn作用于每个最小子序列;采用层间并行方法分析作用于每个最小子序列的多层子rnn中数据的依赖关系,将不同层及不同时间步的循环单元并行化得到多层次的rnn并行模型;多层次的rnn并行模型在多核cpu上第一层次映射方法为核组内的模型并行,使用共享缓存的多个处理器核心组成的核组计算作用于最小子序列的多层子rnn,核组内分配模型的不同部分,得到的计算结果再进行核组间的数据并行计算;多层次的rnn并行模型在多核cpu上第二层次映射方法为核组间的数据并行,每个核组计算得到了多层子rnn的输出,作为额外循环单元的输入再进行核组间的数据并行计算,实现rnn并行模型在多核cpu上的并行训练。2.根据权利要求1所述的方法,其特征在于,层内并行使用srnn切分方法具体为:将输入序列x划分成n个等长的子序列n,则每个子序列n的长度将每个子序列n再次划分为n个等长子序列,重复k次操作,得到n
k
个最小子序列,每个最小子序列的长度为引入额外循环单元获取被切开子序列间的高层特征信息,构建srnn模型,每个最小子序列使用已切分的h层子rnn提取特征。3.根据权利要求2所述的方法,其特征在于,构建srnn网络时,时间复杂度为:其中,代表作用于最小子序列的多层rnn所需要的计算时间,nk代表额外添加的循环单元所需要的计算时间。4.根据权利要求1所述的方法,其特征在于,将不同层及不同时间步并行化具体为:对于多层次的rnn并行模型的层内,将原始多层rnn按照最小子序列的大小从时间步维度进行划分后,使用划分后的多层rnn提取最小子序列特征,再引入额外的循环单元获取被切开序列间的高层特征信息;对于多层次的rnn并行模型的层间,将每个作用于最小子序列的多层子rnn层间并行化。5.根据权利要求4所述的方法,其特征在于,使用具有h层的子rnn提取最小子序列特征时,将第h层第t时间步的计算结果作为下层同一时间步和本层下一时间步的输入,作用于最小子序列的多层子rnn的计算复杂度变为6.根据权利要求4所述的方法,其特征在于,根据不同层和不同时间步的数据依赖关系,对作用于最小子序列的多层子rnn进行多层间并行化后,当第1时间步中的第1层循环单元计算完后,将的结果作为第1时间步中的第2层循环单元和第2时间步中的第1层循环单元的输入,当和同时满足数据输入情况时,同时计算和将和的输出作为的输入进行并行计算,为第1时间步中的第3层循环单元,为第2时间步中的第2层循环单元,为第3时间步中的第1层循环单元。
7.根据权利要求1所述的方法,其特征在于,多层次的rnn并行模型在多核cpu上第一层次映射具体为:使用共享同一末级缓存的处理器核心组成的核组计算作用于最小子序列的多层子rnn,模型中的多层子rnn采用模型并行方式,把不同层和不同时间步中能够并行计算的单元分配到不同处理器核心。8.根据权利要求7所述的方法,其特征在于,多层次的rnn并行模型在多核cpu上第二层次映射具体为:使用每个核组计算作用于最小子序列的多层子rnn,得到多层rnn的最终输出,将最终输出作为额外循环单元的输入再进行堆叠rnn计算,核组之间通过共享内存进行通信;进行堆叠rnn计算时,每个核组中的模型相同,输入不同,对核组间的数据并行进行映射。9.一种如权利要求1所述方法用的rnn并行模型,其特征在于,rnn并行模型的输入序列x=[x1,x2,

,x
t
],从时间维度展开的网络规模为h*t,h为隐藏层数,t为序列的时间步长,rnn并行模型中的循环单元选择simplernn单元、lstm单元或gru单元。10.一种rnn并行模型在多核cpu上的实现系统,其特征在于,包括:划分模块,对多层rnn模型的层内并行使用srnn切分方法,将原输入序列分成许多最小子序列,并将切分后的多层子rnn作用于每个最小子序列;并行化模块,采用层间并行方法分析作用于每个最小子序列的多层子rnn中数据的依赖关系,将不同层及不同时间步的循环单元并行化得到多层次的rnn并行模型;第一映射模块,多层次的rnn并行模型在多核cpu上第一层次映射方法为核组内的模型并行,使用共享缓存的多个处理器核心组成的核组计算作用于最小子序列的多层子rnn,核组内分配模型的不同部分,得到的计算结果再进行核组间的数据并行计算;第二映射模块,多层次的rnn并行模型在多核cpu上第二层次映射方法为核组间的数据并行;每个核组计算得到了多层子rnn的输出,作为额外循环单元的输入再进行核组间的数据并行计算,实现多层次的rnn并行模型在多核cpu上的并行训练。

技术总结
本发明公开了一种RNN并行模型及其在多核CPU上的实现方法及系统,针对多层RNN结构进行层内和层间并行优化,将原输入序列分成许多最小子序列,并将切分后的多层子RNN作用于每个最小子序列;采用层间并行方法分析作用于每个最小子序列的多层子RNN中数据的依赖关系,将不同层及不同时间步的循环单元并行化;采用核组内的模型并行将多层次的RNN并行模型映射在多核CPU的第一层次;采用核组间的数据并行将多层次的RNN并行模型映射在多核CPU的第二层次,充分利用了多核CPU架构特点,实现多层次的RNN并行模型在多核CPU上的并行训练。本发明充分利用多核处理器架构的特点,实现循环神经网络更细粒度的并行方式,加快网络的训练。加快网络的训练。加快网络的训练。


技术研发人员:董小社 余星达 陈维多 何欣瑞 王强 陈衡 王龙翔
受保护的技术使用者:西安交通大学
技术研发日:2021.10.15
技术公布日:2022/3/8

最新回复(0)