首页 / 专利库 / 资料储存系统 / 大数据 / 一种并行消息处理方法、系统及相关装置

一种并行消息处理方法、系统及相关装置

阅读:976发布:2020-05-08

专利汇可以提供一种并行消息处理方法、系统及相关装置专利检索,专利查询,专利分析的服务。并且本 申请 提供一种并行消息处理方法,包括:当第一运算器完成参数单元的计算时,发出归约操作 请求 至主控器,以便主控器将归约操作请求对应的参数单元全局广播至所有运算器,同时各运算器缓存参数单元;当第二运算器完成参数单元的计算得到归约数据后,第二运算器将归约数据与第二运算器缓存中的参数单元比对,生成第二运算器对应的位矢量信息;每当生成新的位矢量信息时,将各运算器对应的位矢量信息进行位与操作;根据位与操作结果执行归约操作。本申请避免了运算器频繁与主控器通信交互的弊端,主控器上的通讯压 力 明显减少,充分利用了带宽。本申请还提供一种并行消息处理方法、系统、计算机可读存储介质和 深度学习 设备,具有上述有益效果。,下面是一种并行消息处理方法、系统及相关装置专利的具体信息内容。

1.一种并行消息处理方法,其特征在于,包括:
当第一运算器完成参数单元的计算时,发出归约操作请求至主控器,以便所述主控器将所述参数单元全局广播至所有运算器;
当各运算器接收到所述参数单元后,各所述运算器缓存所述参数单元;
当第二运算器完成所述参数单元的计算得到归约数据后,所述第二运算器将所述归约数据与所述第二运算器缓存中的所述参数单元比对,生成所述第二运算器对应的位矢量信息;
每当生成新的位矢量信息时,将各所述运算器对应的位矢量信息进行位与操作;
根据位与操作结果执行归约操作。
2.根据权利要求1所述的并行消息处理方法,其特征在于,所述参数单元包括归约类型、归约范围和张量。
3.根据权利要求1所述的并行消息处理方法,其特征在于,各所述运算器缓存所述参数单元包括:
各所述运算器以pre-reduce消息格式缓存所述参数单元。
4.根据权利要求1所述的并行消息处理方法,其特征在于,根据位与操作结果执行所述归约操作包括:
若各运算器对应的位矢量信息的位与操作结果为1,则各运算器执行所述归约操作。
5.根据权利要求4所述的并行消息处理方法,其特征在于,若所述位与操作结果为0,还包括:
在位与操作结果为0的双方运算器执行对所述参数单元的计算后,重新执行双方运算器对应的位矢量信息的位与操作。
6.一种并行消息处理系统,其特征在于,包括:
请求发送模,用于当第一运算器完成参数单元的计算时,发出归约操作请求至主控器,以便所述主控器将所述参数单元全局广播至所有运算器;
缓存模块,用于当各运算器接收到所述参数单元后,各所述运算器缓存所述参数单元;
位矢量生成模块,用于当第二运算器完成所述参数单元的计算得到归约数据后,所述第二运算器将所述归约数据与所述第二运算器缓存中的所述参数单元比对,生成所述第二运算器对应的位矢量信息;
位与比对模块,用于每当生成新的位矢量信息时,将各所述运算器对应的位矢量信息进行位与操作;
归约执行模块,用于根据位与操作结果执行所述归约操作。
7.根据权利要求6所述的并行消息处理系统,其特征在于,所述缓存模块包括:
缓存单元,用于各所述运算器以pre-reduce消息格式缓存所述参数单元。
8.根据权利要求6所述的并行消息处理方系统,其特征在于,所述归约执行模块具体为若各运算器对应的位矢量信息的位与操作结果为1,控制各运算器执行所述归约操作的模块。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-5任一项所述的并行消息处理方法的步骤。
10.一种深度学习设备,其特征在于,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如权利要求1-5任一项所述的并行消息处理方法的步骤。

说明书全文

一种并行消息处理方法、系统及相关装置

技术领域

[0001] 本申请涉及数据处理领域,特别涉及一种并行消息处理方法、系统及相关装置。

背景技术

[0002] 大规模分布式深度学习训练任务,尤其对于复杂模型和大规模数据集训练过程中会产生大量的消息体和消息队列,对于采用并行消息队列处理方式的数据并行分布式训练,多个GPU间独立运行各自训练数据,然后等待本节点或者其他节点的GPU完成训练然后采用不同策略来同步模型参数,此过程中产生大量的消息体和冗长的消息处理等待时间,计算单元越多,该过程所占用的时间越长。现今多个主流深度学习框架采用了消息并行处理方式进行数据并行分布式训练时产生的消息队列,但是都没有做相应优化导致在大规模计算机群上做分布式训练时有相当的性能损失。发明内容
[0003] 本申请的目的是提供一种并行消息处理方法、系统。计算机可读存储介质和深度学习设备,能够提高并行归约操作的执行效率。
[0004] 为解决上述技术问题,本申请提供一种并行消息处理方法,具体技术方案如下:
[0005] 当第一运算器完成参数单元的计算时,发出归约操作请求至主控器,以便所述主控器将所述参数单元全局广播至所有运算器;
[0006] 当各运算器接收到所述参数单元后,各所述运算器缓存所述参数单元;
[0007] 当第二运算器完成所述参数单元的计算得到归约数据后,所述第二运算器将所述归约数据与所述第二运算器缓存中的所述参数单元比对,生成所述第二运算器对应的位矢量信息;
[0008] 每当生成新的位矢量信息时,将各所述运算器对应的位矢量信息进行位与操作;
[0009] 根据位与操作结果执行所述归约操作。
[0010] 其中,所述参数单元包括归约类型、归约范围和张量。
[0011] 其中,各所述运算器缓存所述参数单元包括:
[0012] 各所述运算器以pre-reduce消息格式缓存所述参数单元。
[0013] 其中,根据位与操作结果执行所述归约操作包括:
[0014] 若各运算器对应的位矢量信息的位与操作结果为1,则各运算器执行所述归约操作。
[0015] 其中,若所述位与操作结果为0,还包括:
[0016] 在位与操作结果为0的双方运算器执行对所述参数单元的计算后,重新执行双方运算器对应的位矢量信息的位与操作。
[0017] 本申请还提供一种并行消息处理系统,包括:
[0018] 请求发送模,用于当第一运算器完成参数单元的计算时,发出归约操作请求至主控器,以便所述主控器将所述参数单元全局广播至所有运算器;
[0019] 缓存模块,用于当各运算器接收到所述参数单元后,各所述运算器缓存所述参数单元;
[0020] 位矢量生成模块,用于当第二运算器完成所述参数单元的计算得到归约数据后,所述第二运算器将所述归约数据与所述第二运算器缓存中的所述参数单元比对,生成所述第二运算器对应的位矢量信息;
[0021] 位与比对模块,用于每当生成新的位矢量信息时,将各所述运算器对应的位矢量信息进行位与操作;
[0022] 归约执行模块,用于根据位与操作结果执行所述归约操作。
[0023] 其中,所述缓存模块包括:
[0024] 缓存单元,用于各所述运算器以pre-reduce消息格式缓存所述参数单元。
[0025] 其中,所述归约执行模块具体为若各运算器对应的位矢量信息的位与操作结果为1,控制各运算器执行所述归约操作的模块。
[0026] 本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的并行消息处理方法的步骤。
[0027] 本申请还提供一种深度学习设备,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上所述的并行消息处理方法的步骤。
[0028] 本申请提供一种并行消息处理方法,包括:当第一运算器完成参数单元的计算时,发出归约操作请求至主控器,以便所述主控器将所述参数单元全局广播至所有运算器;当各运算器接收到所述参数单元后,各所述运算器缓存所述参数单元;当第二运算器完成所述参数单元的计算得到归约数据后,所述第二运算器将所述归约数据与所述第二运算器缓存中的所述参数单元比对,生成所述第二运算器对应的位矢量信息;每当生成新的位矢量信息时,将各所述运算器对应的位矢量信息进行位与操作;根据位与操作结果执行所述归约操作。
[0029] 本申请中运算器与主控器之间只通讯一次,即第一个完成训练的第一运算器提出请求,然后主控器做出广播,之后其他运算器都是与本地消息缓存进行比对和与其他运算器进行通信,如果所有运算器均已完成参数单元的计算则立即开始参数的归约操作,避免运算器频繁与主控器通信交互的弊端,主控器上的通讯压明显减少,充分利用了带宽。本申请还提供一种并行消息处理方法、系统、计算机可读存储介质和深度学习设备,具有上述有益效果,此处不再赘述。附图说明
[0030] 为了更清楚地说明本申请实施例现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0031] 图1为本申请实施例所提供的一种并行消息处理方法的流程图
[0032] 图2为本申请实施例所提供的一种并行消息处理系统结构示意图。

具体实施方式

[0033] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0034] 当前Horovod深度学习框架采用了Message passing interface规范和归约的消息处理方式来进行分布式深度学习的训练,其架构中采用主控器-运算器结构,主控器作为消息处理中心接收运算器发来的归约操作请求和发送归约操作执行的命令给运算器,每个运算器在结束训练后发送归约操作请求和等待从主控器发来的被执行的消息,这期间等待的运算器就会被定,亦即不进行新的训练,等待本次归约操作真正执行时再进行新的训练,这样如果计算节点过多就会产生大量待归约的运算器处于block状态(即运算器无法进行新的训练)并产生巨大消息等待时间。
[0035] 主控器-运算器结构中主控器会频繁的接收到来自多个运算器对同一消息内容的归约操作,因此主控器承担了大量通信请求和大量冗余消息传送,如果一次归约操作需要若干个运算器都执行完成后才操作,则主控器需要接收到运算器数量相等的请求后才发出执行操作的命令,这样主控器对所有运算器需要实时进行通讯,因此主控器承担了大量通信任务和消息处理负荷。在中小规模的训练集群中主控器瓶颈效应不明显,但是如果大规模(上千台计算节点,上万块GPU规模)集群上进行分布式训练,主控器-运算器结构的瓶颈则会被放大,巨量的计算节点产生巨量待执行归约操作的消息,如果不能及时进行操作,则会造成大量计算资源浪费以及通信带宽被大量消息请求和执行命令所占用。这样将造成巨大的资源浪费,因为带宽并没有被需要归约的模型参数所用,而且易造成堵塞,大大降低了训练速度。
[0036] 为此,本申请提供一种并行消息处理方法,能够提高并行消息处理效率,具体内容如下:
[0037] 请参考图1,图1为本申请实施例所提供的一种并行消息处理方法的流程图,该方法包括:
[0038] S101:当第一运算器完成参数单元的计算时,发出归约操作请求至主控器,以便所述主控器将所述参数单元全局广播至所有运算器;
[0039] 本步骤旨在当第一运算器训练完成,需要对参数单元进行归约操作时,发送归约操作请求至主控器,此时主控器需要将归约操作请求对应的参数单元全局广播至所有的运算器。第一运算器指的是最先完成对参数单元计算的运算器。
[0040] 在此对于参数单元的内容不作限定,参数单元可以包括类型、范围和tensor名称等等。
[0041] S102:当各运算器接收到所述参数单元后,各所述运算器缓存所述参数单元;
[0042] 各运算器接收到主控器广播的参数单元后,保存该归约操作请求,同时缓存归约操作请求中的参数单元。在此对于各运算器如何保存该参数单元不作限定,例如可以以pre-reduce消息进行缓存。当然也可以缓存成其他消息格式。
[0043] 容易理解的是,当各运算器接收到主控器广播的参数单元后,意味着已经存在训练完成并且请求进行归约操作的运算器。
[0044] S103:当第二运算器完成所述参数单元的计算得到归约数据后,所述第二运算器将所述归约数据与所述第二运算器缓存中的所述参数单元比对,生成所述第二运算器对应的位矢量信息;
[0045] 在步骤S101和S102执行后,一旦有其他运算器完成了需要归约的参数训练,即执行对参数单元的计算后,该运算器会优先与自身的缓存进行比对。第二运算器可以为除第一运算器以外的任一运算器。由于在该运算器前已经存有其他运算器向主控器发送了归约操作的请求,且本地缓存中保存了参数单元。则该运算器无需再向主控器发送归约操作请求,而是将自身得到的归约数据与保存的参数单元相比对。换句话说,如果该运算器缓存中有了该参数需要归约的记录则进行一次记录,同时保存成位矢量的形式。
[0046] 需要注意的是,生成为位矢量属于该运算器对应的位矢量信息。而位矢量信息用于区分运算器是否完成参数单元的计算,也即运算器是否需要进行归约操作。在此对于位矢量信息的表达方式不作限定,通常可用0或1表示。
[0047] 举例而言,当前第一运算器1对参数单元T完成计算后,需要进行归约操作,此时向主控器发送归约操作请求。主控器接收到归约操作请求后,将参数单元T全局广播。此后,与主控器相连的所有运算器均接收到主控器的全局广播,并将参数单元T缓存。
[0048] 此后,任一运算器N同样执行完对参数单元T的计算后,得到相应的归约数据,此时并不向主控器发送任何消息,而是将归约数据与自身缓存的参数单元比对,得到属于运算器N的位矢量信息。
[0049] S104:每当生成新的位矢量信息时,将各所述运算器对应的位矢量信息进行位与操作;
[0050] 本步骤需要再新的位矢量信息生成时,将所有的运算器对应的位矢量信息进行一次位与操作,用于判断是否执行归约操作。这样操作后如果所有运算器上该需要进行归约操作的参数已经完成并相应的做好记录后就可以开始进行模型参数的归约操作。
[0051] 容易理解的是,若运算器未完成参数单元的计算,则自然不存在属于该运算器的位矢量信息,或者,对应的位矢量信息为空或其他用于表示未完成参数单元计算的标识符。则进行位与操作时,无法得到对应的与结果。假设采用0和1分别表示未完成参数单元的计算和已完成参数单元的计算,则只有两个运算器的位矢量信息均为1才可以得到1的结果。
同样的,对于多个运算器,只有各运算器的位矢量信息均为1结果才为1。需要注意的是,第一运算器同样应视为已完成参数单元计算。
[0052] S105:根据位与操作结果执行所述归约操作。
[0053] 本步骤需要根据位与操作结果执行归约操作。同样以0和1分别表示未完成参数单元的计算和已完成参数单元的计算为例,若各运算器之间的位与操作结果均包括1,则各运算器执行归约操作。若存在任一运算器之间的位与操作结果为0,等待位与操作结果为0的双方运算器执行对参数单元的归约操作后,重新执行双方运算器对应的位矢量信息的位与操作。
[0054] 可以理解的是,经过位与操作,若任意运算器未完成参数单元的计算,则所有运算器的位与结果一定为不可执行归约操作。因此,只有当所有的运算器均执行完对参数单元的计算后,即均准备进行归约操作后,得到的位与操作结果才为执行归约操作所必须的结果。
[0055] 此外,应当理解的是,由于在分布式训练过程中可能存在对多个参数单元的计算过程,则位矢量信息可以同时包括多个元素,即可分别表示运算器对应每个参数单元的计算状态。例如可以采用{TN|MN}的格式,TN为参数单元,MN为参数单元TN对应的位矢量信息。
[0056] 由上述描述过程可以看出,本申请实施例中,运算器与主控器之间只通讯一次,即第一个完成训练的运算器提出请求,然后主控器做出广播,之后其他运算器都是与自己本地消息缓存进行比对和与其他运算器进行通信,如果所有运算器均已完成则立即开始参数的归约操作,这样就避免了之前所诉的频繁与主控器通信交互的弊端,主控器上的通讯压力明显减少,并且充分利用了带宽。
[0057] 下面对本申请实施例提供的一种并行消息处理系统进行介绍,下文描述的并行消息处理系统与上文描述的一种并行消息处理方法可相互对应参照。
[0058] 参见图2,图2为本申请实施例所提供的一种并行消息处理系统结构示意图,本申请还提供一种并行消息处理系统,包括:
[0059] 请求发送模块100,用于当第一运算器完成参数单元的计算时,发出归约操作请求至主控器,以便所述主控器将所述参数单元全局广播至所有运算器;
[0060] 缓存模块200,用于当各运算器接收到所述参数单元后,各所述运算器缓存所述参数单元;
[0061] 位矢量生成模块300,用于当第二运算器完成所述参数单元的计算得到归约数据后,所述第二运算器将所述归约数据与所述第二运算器缓存中的所述参数单元比对,生成所述第二运算器对应的位矢量信息;
[0062] 位与比对模块400,用于每当生成新的位矢量信息时,将各所述运算器对应的位矢量信息进行位与操作;
[0063] 归约执行模块500,用于根据位与操作结果执行所述归约操作。
[0064] 基于上述实施例,作为优选的实施例,所述缓存模块200可以包括:
[0065] 缓存单元,用于各所述运算器以pre-reduce消息格式缓存所述参数单元。
[0066] 基于上述实施例,作为优选的实施例,所述归约执行模块500具体为若各运算器对应的位矢量信息的位与操作结果为1,控制各运算器执行所述归约操作的模块。
[0067] 本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0068] 本申请还提供了一种深度学习设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述深度学习设备还可以包括各种网络接口,电源等组件。
[0069] 说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0070] 本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
[0071] 还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈