一种带宽感知的选择性数据多播方法

文档序号:29960967发布日期:2022-05-11 09:06阅读:67来源:国知局

1.本发明属于数据传输技术领域,尤其涉及一种带宽感知的选择性数据多播方法。


背景技术:

2.在诸如基于数据并行的分布机器学习模型训练等场景中,参与训练的工作节点之间需要周期性地将各自训练获得的新模型或者模型的更新进行同步以实现协作。针对这类通信需求,目前有研究者已经提出了多种实现方案。其中的一类方案是让每个工作节点将所学习到新模型或者模型分解后的数据,多播地传输给其他节点。假设分布式系统中一共有n个工作节点参与训练,最近的一些研究表明,许多分布式机器学习训练任务具有容忍只有部分节点参与每次同步的的特性。受此驱动,当一个工作节点完成一轮本地训练后,现有基于模型多播的参数同步方案随机地为其挑选p个其他工作节点(其中1《=p《=n-1)作为多播的接收节点以执行模型参数的部分同步。需要注意的是,不同的模型所能够容忍的p/n比例值不一样,因此实际中一个分布式训练任务的p值可以由使用者根据经验和当前系统的参数n来设置。当p取n-1时,选择性多播即退化到让向所有其他节点进行多播的情形。
3.这种随机地挑选部分接收节点的方案虽然能够有效减少网络中数据传输的量,在一定程度上能够降低数据分发所需的时间开销。然而,考虑到不同工作节点的可用带宽往往不同,为各个多播传输随机地选择p个接收节点会有一定的概率选择到带宽较低的工作节点,所能带来的网络优化效果并不稳定,导致参数同步所需的时间通常依然很大,有显著的优化空间。
4.术语解释:
5.多播:多播一词用于描述数据将从一个发送节点发送给多个接收节点,并不限定这种多播技术采用何种方式实现。例如,如果网络支持ip多播,那么可以在网络层实现,如果不支持,则可以在应用层通过发起多个一对一的单播传输来实现。此外,还可以是其他的多播实现,或者多种多播实现技术的结合。


技术实现要素:

6.针对分布式模型训练等需要在工作节点之间进行数据同步的分布式应用,当应用本身能够容忍只有部分节点参与数据同步时,为了能根据工作节点可用网络带宽的情况来选择数据接收节点开展多播传输,降低网络完成受控的部分数据同步所需的时间,最终达到提升分布式应用性能的目的。本发明提供一种带宽感知的选择性数据多播方法。
7.本发明的一种带宽感知的选择性数据多播方法,包括以下步骤:
8.步骤1:参数设定。
9.设分布式训练中包含n个工作节点,编号分别为0,1,2,...,i,...,n-1;对于第i个工作节点,使用in[i]和out[i]分别表示其下行和上行可用带宽值,使用fanin[i]记录其当前被其他多少个工作节点选为多播传输的接收节点,使用fanout[i]记录已为其选中的接收节点数目。
[0010]
s为一个n*n的二维数组;s[i][j]表示当节点i作为多播源节点时,截止当前已经有连续多少轮多播更新没有将节点j选择为节点i的接收节点,其初始值为0;所有的s[i][i]值恒等于0。
[0011]
为每个节点所选中的接收节点的情况记录在二维0-1数组r中;r[i][j]为1表明工作节点j被选为工作节点i所发出多播的接收节点;r[i][j]为0表明未被选中。
[0012]
k为正整数参数。
[0013]
p为正整数参数。
[0014]
rate[i]表示工作节点i的多播速率。
[0015]
f()为一个预先定义的函数;对于给定的正整数x,当底层网络采用ip多播时,f(x)返回1,当底层网络采用应用层多播时,f(x)返回x。
[0016]
步骤2:初始化处理。
[0017]
s21:对所有节点i,执行fanin[i]=0,fanout[i]=0。
[0018]
s22:对所有节点二元组(i,j),如果s[i][j]》=k,则执行r[i][j]=1,fanin[j]+=1,fanout[i]+=1,s[i][j]=0,否者执行r[i][j]=0,s[i][j]+=1。
[0019]
步骤3:执行基本选择。
[0020]
s31:对每个节点i,令按照w[i]值非增的顺序对所有节点排序作为后续处理的顺序,假设形成的有序节点列表为l1。
[0021]
s32:若l1为空,则跳转到步骤4,否则跳转到步骤s33。
[0022]
s33:从l1中取出当前的第一个节点,假设为i,令m=p-w[i]。
[0023]
s34:若m《=0,则跳转到步骤s32,否者跳转到步骤s35。
[0024]
s35:从所有当前满足r[i][j]为0的j节点中找到第一个使得in[j]/(fanin[j]+1)值最大的节点,假设为js,执行r[i][js]=1,fanin[js]+=1,fanout[i]+=1,m-=1,s[i][js]=0;跳转到步骤s34。
[0025]
步骤4:执行增强选择。
[0026]
s41:令bw=out[0],i=0。
[0027]
s42:若i为n,则跳转到步骤s45,否者跳转到步骤s43。
[0028]
s43:bw=min(bw,out[i]/f(fanout[i]);对所有满足r[i][j]为1的节点j,执行bw=min(bw,in[j]/fanin[j])。
[0029]
s44:i+=1;跳转到步骤s42。
[0030]
s45:对所有满足r[i][j]为0的节点二元组对(i,j),按照s[i][j]值非增的顺序岁节点二元组对排序作为后续的处理顺序,假设所获得的有序二元组对的列表为l2。
[0031]
s46:若l2为空,则跳转到步骤5,否则跳转到步骤s47。
[0032]
s47:从l2中取出当前的第一个节点二元组对(i,j),若bw《=out[i]/f(fanout[i]+1)并且bw《=in[j]/(fanin[j]+1),则执行r[i][j]=1,fanin[j]+=1,fanout[i]+=1,s[i][j]=0;跳转到步骤s46。
[0033]
步骤5:确定节点速率。
[0034]
s51:对每个节点i,执行rate[i]=bw,out[i]-=bw*f(fanout[i]),in[i]-=bw*fanin[i];令i=0。
[0035]
s52:若i为n,则结束,否则跳转到步骤s53。
[0036]
s53:对节点i,以及所有满足r[i][j]为1的节点j,计算s53:对节点i,以及所有满足r[i][j]为1的节点j,计算执行rate[i]+=delta,out[i]-=delta*f(fanout[i]);对所有满足r[i][j]为1的节点j,执行in[j]-=delta;执行i+=1;跳转到步骤s52。
[0037]
本发明的有益技术效果为:
[0038]
本发明根据工作节点可用带宽的情况来选择数据接收节点开展多播传输,提高了多播传输效率,降低网络完成受控的部分数据同步所需的时间,为分布式机器学习模型训练等应用提供了性能更高的数据多播传输控制方法。
具体实施方式
[0039]
下面通过具体实施方法对本发明做进一步详细说明。
[0040]
本发明的一种带宽感知的选择性数据多播方法,包括以下步骤:
[0041]
步骤1:参数设定。
[0042]
设分布式训练中包含n个工作节点,编号分别为0,1,2,...,i,...,n-1。
[0043]
对于第i个工作节点,本发明需要为其找到不少于p个其他节点,作为其数据的多播接收节点。p是一个预先给定的可配置参数,1《=p《=n-1。
[0044]
对于第i个工作节点,使用in[i]和out[i]分别表示其下行和上行可用带宽值,使用fanin[i]记录其当前被其他多少个工作节点选为多播传输的接收节点,使用fanout[i]记录已为其选中的接收节点数目。
[0045]
s为一个n*n的二维数组;s[i][j]表示当节点i作为多播源时,截止当前已经有连续多少轮多播更新没有将节点j选择为节点i的接收节点,其初始值为0;所有的s[i][i]值恒等于0。
[0046]
为每个节点所选中接收节点的情况记录在二维0-1数组r中;r[i][j]为1表明工作节点j被选为工作节点i所发出多播的接收节点;r[i][j]为0表明未被选中。
[0047]
k为正整数可配置参数,表示本发明需要确保任何一个工作节点连续未向任意其他节点进行多播通信的轮数需要不超过该值。rate[i]表示工作节点i的多播速率。
[0048]
f()为一个预先定义的函数;对于给定的正整数x,当底层网络采用ip多播时,f(x)返回1,当底层网络采用应用层多播时,f(x)返回x。
[0049]
步骤2:初始化处理。
[0050]
s21:对所有节点i,执行fanin[i]=0,fanout[i]=0。
[0051]
s22:对所有节点二元组(i,j),如果s[i][j]》=k,则执行r[i][j]=1,fanin[j]+=1,fanout[i]+=1,s[i][j]=0,否者执行r[i][j]=0,s[i][j]+=1。
[0052]
步骤3:执行基本选择。
[0053]
s31:对每个节点i,令按照w[i]值非增的顺序对所有节点排序作为后续处理的顺序,假设形成的有序节点列表为l1。
[0054]
s32:若l1为空,则跳转到步骤4,否则跳转到步骤s33。
[0055]
s33:从l1中取出第一个节点,令m=p-w[i]。
[0056]
s34:若m《=0,则跳转到步骤s32,否者跳转到步骤s35。
[0057]
s35:从所有当前满足r[i][j]为0的j节点中找到第一个使得in[j]/(fanin[j]+1)值最大的节点,假设为js,执行r[i][js]=1,fanin[js]+=1,fanout[i]+=1,m-=1,s[i][js]=0;跳转到步骤s34。
[0058]
步骤4:执行增强选择。
[0059]
s41:令bw=out[0],i=0。
[0060]
s42:若i为n,则跳转到步骤s45,否者跳转到步骤s43。
[0061]
s43:bw=min(bw,out[i]/f(fanout[i]);对所有满足r[i][j]为1的节点j,执行bw=min(bw,in[j]/fanin[j])。
[0062]
s44:i+=1;跳转到步骤s42。
[0063]
s45:对所有满足r[i][j]为0的节点二元组对(i,j),按照s[i][j]值非增的顺序对节点二元组对排序作为后续的处理顺序,假设所获得的有序二元组对的列表为l2。
[0064]
s46:若l2为空,则跳转到步骤5,否则跳转到步骤s47。
[0065]
s47:从l2中取出当前的第一个节点二元组对(i,j),若bw《=out[i]/f(fanout[i]+1)并且bw《=in[j]/(fanin[j]+1),则执行r[i][j]=1,fanin[j]+=1,fanout[i]+=1,s[i][j]=0;跳转到步骤s46。
[0066]
步骤5:确定节点速率。
[0067]
s51:对每个节点i,执行rate[i]=bw,out[i]-=bw*f(fanout[i]),in[i]-=bw*fanin[i];令i=0;
[0068]
s52:若i为n,则结束,否则跳转到步骤s53。
[0069]
s53:对节点i,以及所有满足r[i][j]为1的节点j,计算s53:对节点i,以及所有满足r[i][j]为1的节点j,计算执行rate[i]+=delta,out[i]-=delta*f(fanout[i]);对所有满足r[i][j]为1的节点j,执行in[j]-=delta;执行i+=1;跳转到步骤s52。
[0070]
本发明在步骤3中的挑选接收节点时,根据可用带宽和负载,优先选择在公平性分配下能够分得带宽最多的选择。一个多播所能采用的最大速率为其所有接收节点所获得带宽之最小值。所以,优先选择能够分得带宽更大的节点作为接收节点可以让整个多播传输任务的速率更大,从而提高多播效率。
[0071]
本发明在步骤4-5中,计算出所有多播的基本多播速率值bw(即,每个多播至少可以用bw的速率进行多播)。之后,再会贪婪地依次检查,如果再选择一个接收节点bw的多播速率依然满足,则将其选择,从而充分选择网络中拥有足够带宽的节点。再进一步贪婪地依次检查,各个多播源和被选中的接收节点之间是否有剩余的带宽,如果有,则将该多播的传输速率从bw增大到bw+delta,从而充分利用被选中节点的剩余可用带宽。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1