基于RDMA与消息传递的可靠数据分析方法与流程

文档序号:13618277阅读:218来源:国知局

本发明涉及并行计算技术领域,特别涉及一种基于rdma与消息传递的可靠数据分析方法。



背景技术:

随着信息数据的海量增长,企业越来越多的需要将杂乱无序的大数据转化成有价值的信息,目前,原始的大数据基本都是非结构化数据,难以从中直接推测规律,需要通过一定的数据分析方法处理数据得到有价值的结论。

机器学习算法即是从原始的数据中通过不断的迭代学习运算获得规律,并利用规律对未知数据进行结论预测的算法,在数据挖掘、计算机视觉、自然语言处理等领域都有及其重要的应用。大规模及其学习对于公司、政府和机构来说都有非常重大的意义,这也意味着大数据处理的效率和及其学习算法的高效开发具有极高要求。

目前大多数厂商选用标准的信息传递接口mpi库作为分布式机器学习程序的编程库,mpi能支持包括fortran,c和c++在内的多重编程语言,同时支持windows、unix等多重操作系统,在硬件上支持集群和多核处理机等平台,具有良好的移植性和较强的扩展性。mpi提供了丰富的消息通信接口,包括点对点发送数据和接收数据的通信,节点对集群的散发函数和广播函数,集群所有节点的协同完成的归约函数和聚集函数等。为用户编程提供了便利。

但对于常用的分布式机器学习应用而言,标准的mpi同样有一些严重的问题。首先mpi不具备容错性,当集群中有节点发生故障并重启时,作业必须重新开始。而大规模机器学习应用中由于数据量大,节点较多导致节点发生故障的概率较高,同时作业一般运行时间都较长,无法容错导致系统资源极大的浪费。

其次,传统的mpi库提供了巨大繁杂的消息通信接口,但对于一部分常用的分布式机器学习程序而言,只需要用到其通信库的一个子集。但目前并没有一个针对分布式机器学习程序开发提供的精简的和优化的消息通信库。

因此,如何提供一个轻量级的类mpi通信库,使其专用于某一类具有共同特征的分布式机器学习应用并具有较高的运算性能,同时让通信库具备容错性,是一个亟待解决的技术问题。



技术实现要素:

本发明旨在至少解决上述技术问题之一。

为此,本发明的目的在于提出一种基于rdma(remotedirectmemoryaccess,远程直接数据存取)与消息传递的可靠数据分析方法,该方法能够简化程序编写和提高计算效率,满足一部分分布式机器学习程序的计算需求,并且具备容错性。

为了实现上述目的,本发明的实施例提出了一种基于rdma与消息传递的可靠数据分析方法,包括以下步骤:s1:提供allreduce和broadcast函数,并根据所述allreduce函数进行集群节点的数据归约计算,以及根据所述broadcast函数进行集群节点的数据广播操作;s2:生成基于应用级检查点技术的容错机制,以进行数据的备份和恢复;s3:通过rdma技术进行本地数据的备份与恢复,其中,在数据备份时,利用rdma技术的单边写特性将本地数据直接写入若干远程机器的相应地址,在数据恢复时,利用rdma的单边读特性直接从若干远程机器读入数据恢复本地副本空间。

另外,根据本发明上述实施例的基于rdma与消息传递的可靠数据分析方法还可以具有如下附加的技术特征:

在一些示例中,所述基于应用级检查点技术的容错机制包括:针对全局数据,采用序列化存储在本地内存中的方式进行备份,并在恢复时,使用路由算法探索出集群中拥有该全局数据的节点并利用所述节点恢复数据;针对本地数据,采用远程机器多副本存储的方式进行备份,并在恢复时,使用环形传递算法利用待恢复节点的若干后续节点和前驱节点的数据信息进行恢复,以完成当前节点的数据恢复。

在一些示例中,在根据所述allreduce函数进行集群节点的数据归约计算过程中,在数据量小于预设值时,使用树形算法进行计算,在数据量大于预设值时,使用环形算法进行计算;在根据所述broadcast函数进行集群节点的数据广播操作过程中,采用树形算法进行计算,数据从根节点流出,从所有非根节点进行广播,直至所有节点接收到数据。

在一些示例中,所述s1进一步包括:s11:判断用户输入数据量的大小,并在数据量小于预设值时,执行步骤s12,在数据大于预设值时,执行步骤s16;s12:当前节点监测与其孩子节点的通信状态,若为可读状态,则持续从所述孩子节点读入数据并完成局部的数据规约运算;s13:当前节点监测与其父节点的通信状态,若为可写状态,则将规约好的局部数据持续发送给所述父节点,直到无数据可发送;s14:当前节点监测与其父节点的通信状态,若为可读状态,则持续从所述父节点读入规约好的全局数据并存入结果空间;s15:当前节点监测与其孩子节点的通信状态,若为可写状态,则将结果空间的全局规约结果发送给所有孩子节点,直到无数据可发送;s16:当前节点将待归约数据空间按照集群节点数均分;s17:当前节点计算自己的读数据开始地址和写数据开始地址,以及自己的读数据结束地址和写数据结束地址;s18:当前节点从其后继节点接收数据,从读数据开始地址开始,到读数据结束地址结束;s19:当前节点将结果空间的数据发送给其前驱节点,从写数据开始地址开始,到写数据结束地址结束。

在一些示例中,所述s2进一步包括:s21:创建一个调度器,用于初始化和恢复集群网络的拓扑结构,所述集群网络的拓扑结构包括一个树形结构和一个环形结构;s22:用户在多个节点提交作业请求,所述作业请求包括应用程序、连入的所述调度器的网络地址和端口、以及用户的作业id号;s23:所述调度器根据节点连入的顺序分配编号,维护编号和节点网络地址的映射表,同时根据初始化的网络拓扑结构帮助节点构建正确的网络连接;s24:当所有节点网络连接完成后,开始集群节点间的协同操作,其中,在全局数据备份时,将数据复制多个副本保存在本地,在本地数据备份时,采用环形传递的方式,将节点的备份数据发给后续的若干节点进行备份;s25:当有节点发生故障并恢复重启作业时,连接到所述调度器,并利用所述调度器存储的网络拓扑结构的连接信息帮助恢复网络连接;s26:故障节点执行恢复函数,其中,对于全局数据,采用路由探索的方式找到数据备份点并获取数据用于恢复,对于本地数据,采用环形传递的方式,利用故障节点的若干前驱节点和后继节点提供的有效的本地数据信息进行恢复;s27:数据恢复后,故障节点从最近的故障现场继续执行,当遇到已经执行过的allreduce和broadcast协同操作时,直接从任一个远程机器取回相应的计算结果,避免重复计算。

在一些示例中,所述s3进一步包括:s31:在数据备份时,集群节点采用环形传递的方式,得到需要备份数据的若干节点的本地数据大小,以及这些节点的网络地址,其中,每个节点计算各自需要存储的备份副本的空间大小,并开辟相应的空间;s32:采用环形传递的方式得到需要备份数据的若干节点的空间起始地址,并计算出需要备份数据的目标偏移地址;s33:利用远程机器的网络地址和目标偏移地址,将本地数据发送到相应的远程机器的内存空间以实现备份;s34:在数据恢复时,采用环形传递的方式从后往前传递若干节点的副本空间大小,并确定能提供最多恢复数据的节点;s35:采用环形传递的方式从前往后测试每个节点的副本空间是否为零,由此确定前驱节点能提供的最多有效恢复数据;s36:利用rdma技术,直接从后继节点中能恢复最多数据的节点和所有的有效前驱节点中读取数据,用于当前节点副本数据的恢复。

根据本发明实施例的基于rdma与消息传递的可靠数据分析方法,首先实现一个精简的类mpi库,只提供allreduce和broadcast函数来精确解决一部分数据分析应用;采用应用级检查点的容错技术,针对全局数据模型和本地数据均提供可靠的备份和恢复机制;在本地数据模型的备份和恢复过程中,使用rdma技术进行优化来提高系统性能。即,该方法提供轻量级的消息通信库来简化程序编写和提高计算效率,满足一部分分布式机器学习程序的计算需求,采用应用级检查点技术来实现系统的容错功能,具备容错性,并对容错的性能瓶颈部分采用rdma技术进行性能优化。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1是根据本发明实施例的基于rdma与消息传递的可靠数据分析方法的流程图;

图2是根据本发明一个实施例的根据allreduce函数进行集群节点的数据归约计算的流程示意图;以及

图3是根据本发明一个实施例的通过rdma技术进行本地数据的备份与恢复的示意图。

具体实施方式

下面详细描述本发明的实施方法,通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。以下结合附图描述根据本发明实施例的基于rdma与消息传递的可靠数据分析方法。

图1是根据本发明进行实施的各部分功能与执行流程。图2是实际上依据本发明的方法所需要进行的函数调用的流程。如图1所示,并结合图2,该方法包括以下步骤:

步骤s1:提供allreduce和broadcast函数,并根据allreduce函数进行集群节点的数据归约计算,以及根据broadcast函数进行集群节点的数据广播操作。

具体地说,标准的mpi库提供了庞大的消息通信函数,没有针对机器学习应用的特征进行简化和优化,因此不够高效。本发明的实施例提供了一个高效精简的消息通信库,仅提供一部分分布式机器学习程序所必要的allreduce接口和broadcast接口,进而通过轻量级的消息通信库,来保证程序计算的高效性和容错的高效性。换言之,即提供allreduce和broadcast计算功能给用户,用户使用allreduce功能进行集群节点的数据归约计算,使用broadcast功能进行集群节点的数据广播操作。进而,用户基于这些功能函数对单机的数据分析程序进行修改,得到相应的并行分布式版本的应用。

在本发明的一个实施例中,在根据allreduce函数进行集群节点的数据归约计算过程中,在数据量小于预设值(即数据量较小)时,使用树形算法进行计算,在数据量大于预设值(即数据量较大)时,使用环形算法进行计算。在根据broadcast函数进行集群节点的数据广播操作过程中,采用树形算法进行计算,数据从根节点流出,从所有非根节点进行广播,直至所有节点接收到数据。

基于此,在本发明的一个实施例中,结合图2所示,步骤s1进一步包括:

s11:判断用户输入数据量的大小,并在数据量小于预设值(即数据量较小)时,执行步骤s12中的树形计算过程,在数据大于预设值时,执行步骤s16中的环形计算过程。

s12:当前节点监测与其孩子节点的通信状态,若为可读状态,则持续从孩子节点读入数据并完成局部的数据规约运算。

s13:当前节点监测与其父节点的通信状态,若为可写状态,则将规约好的局部数据持续发送给父节点,直到无数据可发送。

s14:当前节点监测与其父节点的通信状态,若为可读状态,则持续从父节点读入规约好的全局数据并存入结果空间。

s15:当前节点监测与其孩子节点的通信状态,若为可写状态,则将结果空间的全局规约结果发送给所有孩子节点,直到无数据可发送。

s16:当前节点将待归约数据空间按照集群节点数均分。

s17:当前节点计算自己的读数据开始地址和写数据开始地址,以及自己的读数据结束地址和写数据结束地址。

s18:当前节点从其后继节点接收数据,从读数据开始地址开始,到读数据结束地址结束。

s19:当前节点将结果空间的数据发送给其前驱节点,从写数据开始地址开始,到写数据结束地址结束。

步骤s2:生成基于应用级检查点技术的容错机制,以进行数据的备份和恢复。

具体地说,目前的主流mpi库均不具备容错性,当集群节点发生故障并重启后,只能选择重新开始执行作业,极大的浪费了时间和系统资源。本发明的实施例针对机器学习中不同的数据类型的特征进行容错,采用了一种基于应用级检查点技术的容错方案,使应用具备了容错性,提高了系统性能。其中,基于应用级检查点技术的容错机制例如包括:针对全局数据,采用序列化存储在本地内存中的方式进行备份,并在恢复时,使用路由算法探索出集群中拥有该全局数据的节点并利用所述节点恢复数据;针对本地数据,采用远程机器多副本存储的方式进行备份,并在恢复时,使用环形传递算法利用待恢复节点的若干后续节点和前驱节点的数据信息进行恢复,以完成当前节点的数据恢复。

基于此,在本发明的一个实施例中,步骤s2进一步包括:

s21:创建一个调度器,用于初始化和恢复集群网络的拓扑结构,集群网络的拓扑结构包括一个树形结构和一个环形结构。

s22:用户在多个节点提交作业请求,作业请求包括应用程序、连入的调度器的网络地址和端口、以及用户的作业id号。

s23:调度器根据节点连入的顺序分配编号,维护编号和节点网络地址的映射表,同时根据初始化的网络拓扑结构帮助节点构建正确的网络连接。

s24:当所有节点网络连接完成后,开始集群节点间的协同操作,其中,在全局数据备份时,将数据复制多个副本保存在本地,在本地数据备份时,采用环形传递的方式,将节点的备份数据发给后续的若干节点进行备份。

s25:当有节点发生故障并恢复重启作业时,连接到调度器,并利用调度器存储的网络拓扑结构的连接信息帮助恢复网络连接。

s26:故障节点执行恢复函数,其中,对于全局数据,采用路由探索的方式找到数据备份点并获取数据用于恢复,对于本地数据,采用环形传递的方式,利用故障节点的若干前驱节点和后继节点提供的有效的本地数据信息进行恢复。

s27:数据恢复后,故障节点从最近的故障现场继续执行,当遇到已经执行过的allreduce和broadcast协同操作时,直接从任一个远程机器取回相应的计算结果,避免重复计算。

步骤s3:通过rdma技术进行本地数据的备份与恢复,其中,在数据备份时,利用rdma技术的单边写特性将本地数据直接写入若干远程机器的相应地址,在数据恢复时,利用rdma的单边读特性直接从若干远程机器读入数据恢复本地副本空间。换言之,该步骤即容错方案与rdma技术相结合的优化。采用基于应用级检查点技术的容错方案后,针对本地数据在容错时可能会出现开销较大的情况,利用rdma技术进行容错性能的优化。在本地数据的备份时利用rdma技术的单边写特性将数据存储到多个远程机器;在本地数据的恢复时利用rdma技术的直接读取多个远程机器的有效副本数据到本地内存中。

在本发明的一个实施例中,结合图3所示,步骤s3进一步包括:

s31:在数据备份时,集群节点采用环形传递的方式,得到需要备份数据的若干节点的本地数据大小,以及这些节点的网络地址,其中,每个节点计算各自需要存储的备份副本的空间大小,并开辟相应的空间。

s32:采用环形传递的方式得到需要备份数据的若干节点的空间起始地址,并计算出需要备份数据的目标偏移地址。

s33:利用远程机器的网络地址和目标偏移地址,将本地数据发送到相应的远程机器的内存空间以实现备份。

s34:在数据恢复时,采用环形传递的方式从后往前传递若干节点的副本空间大小,并确定能提供最多恢复数据的节点。

s35:采用环形传递的方式从前往后测试每个节点的副本空间是否为零,由此确定前驱节点能提供的最多有效恢复数据。

s36:利用rdma技术,直接从后继节点中能恢复最多数据的节点和所有的有效前驱节点中读取数据,用于当前节点副本数据的恢复。

综上,根据本发明实施例的基于rdma与消息传递的可靠数据分析方法,首先实现一个精简的类mpi库,只提供allreduce和broadcast函数来精确解决一部分数据分析应用;采用应用级检查点的容错技术,针对全局数据模型和本地数据均提供可靠的备份和恢复机制;在本地数据模型的备份和恢复过程中,使用rdma技术进行优化来提高系统性能。即,该方法提供轻量级的消息通信库来简化程序编写和提高计算效率,满足一部分分布式机器学习程序的计算需求,采用应用级检查点技术来实现系统的容错功能,具备容错性,并对容错的性能瓶颈部分采用rdma技术进行性能优化。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1