欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 一种数据中心里分布式机器学习数据重排的传输优化方法独创技术26009字

一种数据中心里分布式机器学习数据重排的传输优化方法

2021-02-02 00:55:15

一种数据中心里分布式机器学习数据重排的传输优化方法

  技术领域

  本发明涉及数据中心传输优化技术领域,特别涉及一种数据中心里分布式机器学习数据重排的传输优化方法。

  背景技术

  分布式机器学习系统是机器学习系统的进一步延伸,它利用分布式系统的思想使其能够容纳更大的机器学习模型以及更大规模的数据量,从而带来更精准的基于机器学习的人工智能服务来改善人们生活。目前比较流行的分布式机器学习系统都是基于参数服务器(Parameter Server)框架的,包括TensorFlow、Petuum等。在基于参数服务器的框架里,机器学习模型的参数存储在名为参数服务器的机器集群里,而训练模型的工作则由其他机器负责。在每一次机器学习训练的迭代开始之前,负责训练的机器需要先把参数服务器集群中的全局模型参数下载到本地,然后再分别根据其各自存储中的样本数据用优化方法对其进行更新。在计算工作结束后,各个负责训练工作的机器需要把更新后的参数发到参数服务器集群中。最后,当所有机器的更新到达参数服务器集群后,参数服务器会将更新聚合到全局模型参数内。在下一轮迭代开始之前,各个工作节点需要对存储在其本地的样本数据进行数据重排,以打乱训练时样本的输入顺序从而防止出现过拟合的现象。仅针对本地数据进行数据重排的机制称为局部数据重排(local data shuffling),但最近的研究表明全局数据重排(global data shuffling)能够带来更快的收敛速度及更高的准确率。然而由于全局数据重排要求重新分配训练样本集中的样本数据到各个负责训练工作的机器上,它会带来巨大的网络资源开销。

  为了让全局数据重排能够应用到实际的分布式机器学习中,目前存在一些使用编码的方法来降低其网络资源开销。这类方法通过编码的方式将多个样本数据压缩成一个体积大小约等于一个样本数据体积的数据包,然后将压缩了多个样本数据的数据包从主节点多播到需要数据包中样本的机器上。编码的前提是机器存储了包含除编码数据包中该机器所需的样本以外所有样本的数据。因为考虑到用于机器学习训练的样本数据集不会发生变化,所以机器的下一轮需求样本集和其他机器的存储的样本数据会有重叠,因此基于编码的方法可以适用于该场景中。

  但目前的基于编码的网络传输优化方法都假设存在一台拥有无限存储能力的机器存储了整个训练样本集中的所有样本,并且由这台机器负责所有样本数据的发送工作,而其他机器不具备发送数据的功能。在这种假设下,应用编码的方法可以减少一半以上的数据包发送量。然而这种假设并不符合实际数据中心的情况,数据中心中并不存在拥有无限存储能力的机器。如果存在一台机器能够存储全部训练样本的数据,那么在这种情况下可以直接在单机上进行训练。除此以外,目前的技术都忽略了用于连接参与分布式机器学习训练的机器的网络,它们简单地认为机器会通过全连通网络进行连接。也就是说,它们假设存在一台拥有足够负载能力的网络设备连接参与训练的所有机器。显而易见,这种假设也不符合数据中心的实际情况,而数据中心中通常是通过生成树或递归式的网络拓扑进行机器间的互联,如Fattree、BCube等。

  发明内容

  针对现有技术的缺陷,本发明提供一种数据中心里分布式机器学习数据重排的传输优化方法。结合数据中心的实际情况,本发明在所有样本数据分散地存储在各台机器上且各台机器通过生成树网络拓扑互联的情况下,使用数据包传输所需要的网络跳数来代表网络负载,结合数据包所消耗的网络跳数,挑选存在发送节点的可用于编码的样本组合,而无法用于编码的样本则为其匹配单播的发送节点。这种方法在解决了现有技术不切合数据中心实际情况的问题的同时,有效地降低了在数据中心的环境下进行全局数据重排的传输所消耗的网络跳数,进而降低传输所消耗的时间。

  本发明采用如下技术方案实现:

  一种数据中心里分布式机器学习数据重排的传输优化方法,包括如下步骤:

  获取连接各台机器的网络拓扑结构,根据网络拓扑结构可以动态地计算出机器间点对点传输和多播传输所消耗的网络跳数;

  确定每台负责训练的机器下一轮被分配到的样本集以及其当前存储中的样本集,根据这些信息建立机器间的样本依赖关系图;

  基于依赖关系图确定可用于编码的样本组合,同时为样本组合匹配发送节点,最后根据网络拓扑计算需要消耗的网络跳数并参照评价公式选出最佳的样本组合方案和发送节点;

  把最佳的样本组合代表的数据包根据插入规则插入到最佳的样本组合发送节点对应机器的发送队列。

  优选地,根据网络拓扑结构计算得出机器间点对点传输和多播传输所消耗的网络跳数可以通过广度优先搜索方法和深度优先搜索方法来实现。

  优选地,机器间的样本依赖关系图的定义为:节点为机器编号、边的权重为样本编号以及边的方向表示需求依赖关系的有向无环图。

  优选地,确定可用于编码的样本组合的问题可转化成寻找样本依赖关系图中的最大团问题,但需要重新定义最大团。

  优选地,选出最佳的样本组合方案包括:

  随机地从样本依赖关系图中选出一条边作为初始簇;

  对选出的初始簇进行簇扩展。

  优选地,簇扩展通过启发式算法实现;引入评价公式来评价每个可行解中的簇对总网络跳数消耗的影响;潜力公式来评价每个可行解中的簇的扩展能力。启发式算法中增加计算潜力值的潜力公式使启发式算法能够了解当前样本组合的可拓展性,即样本组合中样本数量的上限,从而使得算法不会陷于局部最优的簇中。

  优选地,簇扩展包括:

  S41、为初始可行解的簇寻找所有的潜在可加入边;

  S42:将每一个潜在可加入边与初始可行解的簇组成新簇,并为其寻找潜在发送节点;

  S43:若新簇存在潜在发送节点,则将该新簇与该新簇的每一个潜在发送节点单独作为新的可行解加入对比列表中;

  S44:根据评价公式从对比列表中选出损失值最小的可行解,并将该可行解与初始可行解以损失值进行对比,将损失值更小的可行解作为新的初始可行解;

  S45:根据潜力公式计算对比列表中所有可行解和新的初始可行解的潜力值,将潜力值比新的初始可行解更大的可行解加入到待扩展队列中;

  S46:若新的初始可行解与S41中的初始可行解不一致,则将新的初始可行解作为初始可行解返回到S41;否则,将该新的初始可行解接入到候选可行解列表中;

  S47:若待扩展队列不为空,则从扩展队列中选出一个可行解作为初始可行解返回到S41;否则,从候选可行解列表中选出损失值最小的可行解作为最优解返回。

  优选地,允许机器从其邻居获取样本可以增加可用于编码的样本组合的数量在总发包数中的比例,进而节省更多的网络跳数消耗;同时,这要求在插入发送任务到机器时按照本发明中的插入规则进行,以保证发送任务与发送任务间的等待时间不会过长。

  优选地,插入规则包括:假设依赖于邻居的数据包为A类数据包、被邻居依赖的数据包为B类数据包,无依赖关系的数据包为C类数据包,则对于三种不同的数据包会有不同的插入方法:A类数据包会处于发送队列的最后端,B类数据包会处于发送队列的最前端,而C类数据包会处于发送队列的中间位置。

  优选地,一种数据中心里分布式机器学习数据重排的传输优化方法还包括:

  把样本依赖关系图中权重值与最佳的样本组合方案的簇中的样本的编号相同的边删除,并判断边删除后的样本依赖关系图中是否仍存在边;若边删除后的样本依赖关系图中已无边则将各节点的发送队列作为算法结果返回,否则基于边删除后的样本依赖关系图继续为剩余的待发送样本匹配最佳样本组合方案。

  与现有技术相比,本发明具有以下有益效果:

  (1)本发明的一种数据中心里分布式机器学习数据重排的传输优化方法,将在每一轮全局数据重排分配后需要发送的数据包的数量降低,并且有效地减小传输所有需要的样本所消耗的总网络跳数。

  (2)本发明的一种数据中心里分布式机器学习数据重排的传输优化方法,结合数据中心中训练样本数据分散地存储在各机器上的特点,把发送任务分散在各台机器上从而增强了发送数据的总带宽,进而能够减少全局数据重排所需要的网络传输时间。

  (3)本发明的一种数据中心里分布式机器学习数据重排的传输优化方法,通过借助邻居节点上已存储的样本数据,机器面临因无样本组合中某一样本数据而无法成为该样本组合的发送节点的情况能得到改善,因此增加了可用于编码的样本组合的数量,进而能进一步减小传输所消耗的总网络跳数。

  (4)通过使用网络跳数作为重要评价指标的启发式搜索算法,本发明把基于编码的传输方法与数据中心的网络特点以及机器集群特点相适应,解决目前技术的一些问题和缺陷。

  附图说明

  参考附图能够帮助理解本发明的实施例中技术特点与算法流程。

  图1是本发明一个实施例中一种数据中心里分布式机器学习数据重排的传输优化方法的流程示意图;

  图2是本发明一个实施例中机器间样本依赖关系图。

  具体实施方式

  下面将结合附图来详细描述本发明的实施例中的技术方案。应当理解,所描述的实施例仅仅是为了使本领域的技术人员能够更好地理解并实施本发明,而并非以任何方式限制本发明的范围。

  本发明的主要创新点包括:利用分布式机器学习中用于训练的样本数据集不会发生变化的特性,提出能够适应数据中心网络结构的基于编码的网络传输优化方法,用以降低数据重排所带来的网络资源消耗。该方法包括:获取连接各台机器的网络的拓扑结构,由此根据网络拓扑可以动态地计算出机器间点对点传输和多播传输所消耗的网络跳数;确定每台负责训练的机器下一轮被分配到的样本集以及其当前存储中的样本集,根据这些信息建立机器间依赖关系图;基于依赖关系图进而通过启发式算法确定可用于编码的样本组合,同时为其匹配发送节点根据网络拓扑结构分析其网络跳数的消耗,并根据评价公式选出最佳一种样本组合;根据计算得出的样本组合和只能单播的样本对应的发送节点,把发送任务根据规则插入到每台机器的发送队列。根据本发明实施例的网络传输优化方法,能够有效地降低数据重排对数据中心网络造成的压力,减小一次数据重排所需要的时间,从而加速分布式机器学习的训练速度。

  图1为本发明一个实施例中一种数据中心里分布式机器学习数据重排的传输优化方法的步骤示意图,接下来对每一个步骤进行详细地解析。

  S1:获取网络拓扑信息。

  网络拓扑信息包括参与训练的机器互连所需要的路由器以及所需要的链路,同时以路由器和参与训练的机器作为节点以及链路作为边的形式将网络拓扑以无向图的数据结构存储。

  本实施例中,可以从以无向图的数据结构存储的网络拓扑信息获取机器间单播与一对多间的多播所消耗的网络跳数。本实施例中,通过广度优先搜索和深度优先搜索的方法实现此功能。具体方法是,若需要计算机器A到机器B和机器C的多播所消耗的网络跳数,从网络拓扑的图数据结构中机器A代表的节点开始进行广度优先搜索得到广度优先搜索树,其中机器B和C代表的节点将会是广度优先搜索树的叶子节点。对广度优先搜索树进行深度优先搜索,将不能通向机器B和机器C的路径以及路由器节点从广度优先搜索树中删除,搜索完成后剩下的搜索树将是机器A通向机器B和机器C的多播路径,得到的搜索树的边的数量则是机器A到机器B和机器C的多播所消耗的网络跳数。

  本实施例的技术优势是:先通过广度优先搜索得出广度优先搜索树,再进行深度优先搜索将不能通往目标机器的路径删除的方法可以保证在具有回路的生成树网络中找到最短的多播或单播路径。

  S2:建立样本依赖关系图。

  建立样本依赖关系图需要确定两个重要信息:各机器当前存储中的样本集以及全局数据重排后各机器的需求样本集。在样本依赖关系图中,每台机器作为图中的节点,同时节点由机器的编号所命名;图中的边代表一个依赖关系,指其源节点需求的样本正存储在终节点上,而该样本的编号则作为该边的权重值。本领域的技术人员可以理解,若存在一条有向边从节点A连向节点B,那么节点A代表的机器A能够从节点B代表的机器B获取到其下轮训练需要且编号为该边的权重的样本数据。

  示例1:图2展示了样本依赖关系图的一个例子。其中机器#1需要样本7而存储了样本3和样本4,机器#2需要样本3和样本10而存储了样本4、样本7和样本9,机器#3则需要样本4和样本9而存储了样本7和样本10。根据样本依赖关系图的定义可建立出图2中节点1、2和3之间的样本依赖关系图。其他机器的存储情况和需求的样本则可通过图2反向推导得出,这里不再赘叙。

  需要说明的是,在实际分布式机器学习的过程中,训练样本集中的每一个样本的数据必定存储在集群中的某一台机器上,同时训练样本集中的每一个样本必定存在于集群中的某一台机器下一轮训练需求样本集中。本领域的技术人员可以理解,集群中各机器存储的样本集的并集和各机器下一轮训练需求样本集的并集都等于训练样本集。

  S3:随机地从样本依赖关系图中选出一条边作为初始簇。

  本实施例中,需要确定尽可能多的可用于编码的样本组合,但可用于编码的样本组合必须满足编码所需要的条件,即请求该编码的样本组合的机器的存储中必须同时存在该样本组合中除该机器下轮所需要的样本以外的所有样本。本领域的技术人员可以理解,收到编码的数据包的机器若想解码出数据包中的一个样本的数据,它需要用数据包中除该机器在此数据包中所需要获得样本外所有样本的数据来解码。在本实施例中,本发明引入簇的概念来使该编码的约束条件能够体现在样本依赖关系图中。簇中包含节点和边,簇中的每一个顶点都需要通过有向边双向连接,同时对于簇中的每一个顶点从其出发到簇中其他顶点的边的权重必须是相同的。对于包含两个或以上的顶点的簇必须满足以上的簇的定义。而本发明将最小簇定义为只有一个顶点和一条从该顶点出发的有向边的簇。

  示例2:图2的样本依赖关系图的例子中,机器#1和机器#2的节点之间通过权重为3有向边和权重为7的有向边双向连接,因此机器#1的节点和机器#2的节点与其间权重为2和3的有向边组成一个簇。

  示例3:图2的样本依赖关系图的例子中,机器#1的节点、机器#2的节点和机器#3的节点无法组成簇,因为机器#3的节点缺少了一条从机器#2的节点指向机器#3的节点且权重为3的有向边。

  在本实施例的步骤S3中,随机地从样本依赖关系图中选出一条有向边与其源节点,它们可组成一个仅有一个顶点的最小簇。

  S4:对选出的初始簇进行簇扩展。

  初始簇可以为包含两个或以上的顶点的簇,或为只有一个顶点和一条从该顶点出发的有向边的最小簇。在本实施例中,S3选出的最小簇会作为簇扩展的初始输入(初始可行解)。在进行簇扩展之前,有三个重要的概念需要提前定义。第一,簇的潜在发送节点指一个簇外的节点被簇内所有不同权重的有向边所指向。第二,簇的潜在可加入节点是指一个簇外的节点被簇内所有不同权重的有向边所指向,同时簇内的每一个节点都被从它出发的有向边指向且该有向边集合中的每一条边都带有相同的权重。第三,簇的潜在可加入边需满足:其源节点为该簇的潜在可加入节点;簇内的每一个节点都被与其源节点相同且权重相同的有向边所指向。

  示例4:图2中的样本依赖关系图中,机器#5所代表的节点被机器#1代表的节点通过权重为7的有向边和机器#2代表的节点通过权重为3的有向边所指向,同时在示例2中提到与权重为3和7的有向边与节点#1和#2组成簇,因此机器#5所代表的节点是该簇的潜在发送节点。

  在本发明的实施例中,簇扩展通过启发式算法实现。其中,启发式算法的可行解包括一个簇及其潜在发送节点,可行解的优劣通过评价公式来进行评判。实施例中的评价公式也称损失函数,评价公式的评价指标是损失值,损失值越低则可行解越优。而损失值则等于可行解中簇的潜在发送节点发送簇所代表的数据包到请求簇中样本的机器所消耗的网络跳数除以簇中样本的个数。本专业领域的人员可以理解,平均每样本传输所消耗的网络跳数越少,则可行解越被优先选中。同时,本发明的实施例引入潜力公式来评价每个可行解中的簇的扩展能力,进而极大地降低启发式算法陷入局部最优解的概率。可行解的潜力值等于可行解的簇中节点的数量加上该簇的潜在可加入节点的数量。需要注意的是,潜力公式只是用于预测可行解的簇最大可扩展潜力,但并不代表可行解中的簇必定可以扩展到与其潜力值相同大小的簇。

  本实施例中,簇扩展包括以下流程:

  S41、为初始可行解的簇寻找所有的潜在可加入边;

  S42:将每一个潜在可加入边与初始可行解的簇组成新簇,并为其寻找潜在发送节点;

  S43:若新簇存在潜在发送节点,则将该新簇与该新簇的每一个潜在发送节点单独作为新的可行解加入对比列表中;

  S44:根据评价公式(损失函数)从对比列表中选出损失值最小的可行解,并将该可行解与初始可行解以损失值进行对比,将损失值更小的可行解作为新的初始可行解;

  S45:根据潜力公式计算对比列表中所有可行解和新的初始可行解的潜力值,将潜力值比新的初始可行解更大的可行解加入到待扩展队列中;

  S46:若新的初始可行解与S41中的初始可行解不一致,则将新的初始可行解作为初始可行解返回到S41;否则,将该新的初始可行解接入到候选可行解列表中;

  S47:若待扩展队列不为空,则从扩展队列中选出一个可行解作为初始可行解返回到S41;否则,从候选可行解列表中选出损失值最小的可行解作为最优解返回。

  本实施例中,为了最大化簇的数量和簇的大小,机器允许从其邻居机器(传输消耗网络跳数小于或等于2)获取样本以满足潜在发送节点或潜在可加入节点的要求。

  示例5:假设在网络中机器#4是机器#3的邻居。图2中的样本依赖关系图中,机器#3所代表的节点因缺少机器#2代表的节点通过权重为3的有向边所指向,所以无法与节点1和节点2组成簇。但从图2中可知,机器#4存储了样本3的数据。因为本发明允许机器从邻居获取数据,于是若机器#3先从机器#4中获取了样本3的数据,那么机器1、机器2和机器3所代表的节点与权重为3、4和7的有向边就能够组成一个簇。

  根据本发明的一些实施例,在允许从邻居获取样本数据后,一些机器的发送队列中存在一些数据包需要等待邻居的数据包到达后才能进行发送,因为这些数据包需要包含从邻居发来的数据包中的样本数据。

  需要说明的是,从邻居获取的数据会在用于解压编码数据包后被删除。

  S5:把扩展后的簇中的样本作为可用于编码的样本组合插入到该扩展簇对应的发送节点的发送队列中。

  在本发明的实施例中,存在三种数据包:依赖于邻居的数据包、被邻居依赖的数据包以及无依赖关系的数据包。这三种数据包分别被命名为A类数据包、B类数据包和C类数据包。对于三种不同的数据包会有不同的插入方法。A类数据包会处于发送队列的最后端,B类数据包会处于发送队列的最前端,而C类数据包会处于发送队列的中间位置。

  为了使得A类数据包的等待时间不超过给定的阈值,本实施例需要特殊的插入方案。为此需要知道机器发送包的时间以及路由器发送包的时间,同时假设邻居间数据包传输没有传输时延、转发时延和排队时延。

  在本实施例中,邻居间传送包的时间等于消耗的网络跳数与1之差乘以路由器发送时间加上机器发送时间。数据包准备完成时间等于队列中排在其前的数据包的数量乘以机器的发送时间加上队列中排在其前的数据包的准备完成后的等待时间。数据包的到达时间等于其准备完成时间加上准备完成后的等待时间再加上邻居间传送包的时间。数据包准备完成后的等待时间等于其依赖的包的到达时间与其准备完成时间之差,若结果小于零或非A类数据包则其等待时间等于0。

  当有一个B类数据包需要被插入时,它首先被插入到队列中B类数据包区域的最末尾,若将其与前一个数据包交换位置能够使得依赖于其前一个数据包的A类数据包准备完成后的等待时间不超过给定阈值,则将其与前一个数据包交换位置,直至它已经位于队列中的首位或不满足交换条件。

  当有一个A类数据包需要被插入时,它首先被插入到队列中A类数据包区域的最前端,然后若其等待时间大于给定阈值则将其与后一个数据包交换位置,直至该数据包的准备完成后的等待时间小于给定阈值或它已经位于队列中的尾端。需要注意的是,若A类数据包位于队列尾端仍无法满足约束条件,则证明S4中获取的解无法成立。因此在S4中,获取新的可行解时需要验证该可行解所需要发送的数据包是否能够被插入到发送队列中且满足等待时间的约束条件,若不能满足,新的可行解将不会被加入到对比列表中。

  当有一个C类数据包需要被插入时,它可以随意地插入到队列中A类数据包区域和B类数据包区域之间的区域中。

  根据本发明的一些实施例,A类数据包插入之前需要其所依赖的B类数据包已被插入到它(们)对应的发送节点的发送队列中。

  根据本发明的一些实施例,在绝大多数情况下,A类数据包都能够满足等待时间的约束条件,因为在实际中C类数据包的数量会远超于A类和B类数据包的数量。

  S6:把样本依赖关系图中权重值与扩展后的簇中的样本的编号相同的边删除;并判断样本依赖关系图中是否仍存在边,若仍存在边则回到S3,否则将所有节点的发送队列作为算法结果返回。

  在本实施例中,样本依赖关系图中的边会通过键值对以边的权重为键的方法存储,在删除边的时候可以快速地定位到需要删除的边。

  在本实施例中,判断边删除后的样本依赖关系图中是否仍存在边会通过判断依赖关系图中节点的出度是否全为零,若边删除后的样本依赖关系图中已无边则返回各节点的发送队列,否则回到S3。

  以上实施例仅适用于说明本公开,而并非对本公开的限制,有关技术领域的普通技术人员,在不脱离本公开的精神和范围的情况下,还可以做出各种变化和变形,因此所有等同的技术方案也属于本公开的范畴,本公开的专利保护范围应由权利要求限定。

《一种数据中心里分布式机器学习数据重排的传输优化方法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)