本发明涉及分布式集群领域,特别涉及一种梯度数据同步方法、系统、电子设备及可读存储介质。
背景技术:
1、随着深度神经网络的模型尺寸越来越大,分布式模型训练应运而生。目前的分布式模型训练方案有数据并行和模型并行两种,其中最常用且应用最广泛的是数据并行方案。数据并行又分为同步数据并行和异步数据并行两种,同步数据并行,即在所有加速设备计算完批数据梯度后,进行梯度数据同步(即统一将多个梯度聚合在一起或求均值),然后利用同步后的梯度数据更新共享模型参数,这种方案可以减少用于计算梯度的权重的陈旧性,使模型最终能够达到较高的收敛精度,因此获得了广泛的应用。
2、现有的梯度数据同步方案大都是用户针对分布式训练集群,根据经验选择一种逻辑拓扑对已有的数据同步算法进行优化改进,如基于环形(ring)拓扑的梯度数据同步方法、基于树(tree)拓扑的梯度数据同步方法等。但是随着训练规模的扩大,可用的训练环境变得越来越多样化,因此,分布式系统的物理拓扑可能是任意一种随机网络拓扑,而传统的基于特定逻辑拓扑的方案并不能在任意一种给定的随机网络中都取得好的数据同步性能,导致梯度数据同步效率低,无法充分利用网络带宽。
3、因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。
技术实现思路
1、本发明的目的是提供一种梯度数据同步方法、系统、电子设备及可读存储介质,提高任意一种随机网络中的梯度数据同步通信的效率,提高网络带宽利用率。
2、为解决上述技术问题,本发明提供了一种梯度数据同步方法,包括:
3、获取分布式训练集群的物理拓扑关系及当前数据同步算法对应的逻辑拓扑关系;
4、将所述物理拓扑关系中的各物理拓扑节点一一映射到所述逻辑拓扑关系中的各逻辑拓扑节点,得到至少一个映射拓扑关系;
5、计算当前数据同步算法基于每一所述映射拓扑关系进行梯度数据同步时的通信开销,将所述通信开销最小的所述映射拓扑关系确定为最优映射拓扑关系;
6、基于所述最优映射拓扑关系和当前数据同步算法进行梯度数据同步。
7、在一示例性实施例中,获取当前数据同步算法对应的逻辑拓扑关系的过程包括:
8、获取所述分布式训练集群的集群参数;所述集群参数包括节点数量;
9、基于所述节点数量和当前数据同步算法生成逻辑拓扑关系。
10、在一示例性实施例中,当前数据同步算法为基于环形的全局规约算法、基于树的全局规约算法、减半加倍算法中的一个;
11、基于所述节点数量和当前数据同步算法生成逻辑拓扑关系的过程包括:
12、若当前数据同步算法为基于环形的全局规约算法,生成包括n个节点的环状逻辑拓扑关系,n为所述节点数量;
13、和/或,
14、若当前数据同步算法为基于树的全局规约算法,生成包括n个节点的树状逻辑拓扑关系,n为所述节点数量;
15、和/或,
16、若当前数据同步算法为减半加倍算法,生成包括n个节点的随机序列作为逻辑拓扑关系。
17、在一示例性实施例中,将所述物理拓扑关系中的各物理拓扑节点一一映射到所述逻辑拓扑关系中的各逻辑拓扑节点,得到至少一个映射拓扑关系的过程包括:
18、对所述物理拓扑关系中的各物理拓扑节点进行编号及排列组合,得到多个节点组合方式;
19、按各所述节点组合方式,将所述物理拓扑关系中的各物理拓扑节点一一映射到所述逻辑拓扑关系中的各逻辑拓扑节点,得到多个映射拓扑关系。
20、在一示例性实施例中,计算当前数据同步算法基于每一所述映射拓扑关系进行梯度数据同步时的通信开销,将所述通信开销最小的所述映射拓扑关系确定为最优映射拓扑关系的过程包括:
21、获取第一映射拓扑关系,计算当前数据同步算法基于所述第一映射拓扑关系进行梯度数据同步时的第一通信开销,将所述第一通信开销赋值给当前最小通信开销;所述第一映射拓扑关系为任一个所述映射拓扑关系;
22、获取当前第二映射拓扑关系,计算当前数据同步算法基于当前第二映射拓扑关系进行梯度数据同步时的第二通信开销;当前第二映射拓扑关系为未完成通信开销计算的任一个所述映射拓扑关系;
23、若所述第二通信开销小于当前最小通信开销,将所述第二通信开销赋值给当前最小通信开销;
24、判断所有所述映射拓扑关系是否均完成通信开销计算;
25、若否,重复所述获取当前第二映射拓扑关系,计算当前数据同步算法基于当前第二映射拓扑关系进行梯度数据同步时的第二通信开销的操作;
26、若是,将当前最小通信开销对应的映射拓扑关系确定为最优映射拓扑关系。
27、在一示例性实施例中,所述获取第一映射拓扑关系,计算当前数据同步算法基于所述第一映射拓扑关系进行梯度数据同步时的第一通信开销,将所述第一通信开销赋值给当前最小通信开销的同时,所述梯度数据同步方法还包括:
28、令计数器的当前计数值加1,所述计数器的初始计数值为0;
29、将所述第二通信开销赋值给当前最小通信开销的同时,所述梯度数据同步方法还包括:
30、令计数器的当前计数值加1;
31、判断所有所述映射拓扑关系是否均完成通信开销计算的过程包括:
32、判断所述计数器的当前计数值是否大于映射拓扑关系的总数;
33、若是,判定所有所述映射拓扑关系均完成通信开销计算;
34、若否,判定存在未完成通信开销计算的映射拓扑关系。
35、在一示例性实施例中,按各所述节点组合方式,将所述物理拓扑关系中的各物理拓扑节点一一映射到所述逻辑拓扑关系中的各逻辑拓扑节点,得到多个映射拓扑关系之后,所述梯度数据同步方法还包括:
36、将所有所述映射拓扑关系存储到内存中;
37、所述获取第一映射拓扑关系的过程包括:
38、从所述内存中获取第一映射拓扑关系;
39、所述获取当前第二映射拓扑关系的过程包括:
40、从所述内存中获取当前第二映射拓扑关系。
41、在一示例性实施例中,将所述物理拓扑关系中的各物理拓扑节点一一映射到所述逻辑拓扑关系中的各逻辑拓扑节点,得到至少一个映射拓扑关系的过程包括:
42、将所述物理拓扑关系中的各物理拓扑节点一一映射到所述逻辑拓扑关系中的各逻辑拓扑节点,得到初始映射拓扑关系,将所述初始映射拓扑关系作为参考映射拓扑关系;
43、确定至少两个待交换节点,交换两个所述待交换节点在所述参考映射拓扑关系中的位置,得到目标映射拓扑关系;
44、若所述目标映射拓扑关系满足更新条件,将所述目标映射拓扑关系作为所述参考映射拓扑关系,重复所述确定至少两个待交换节点,交换两个所述待交换节点在所述参考映射拓扑关系中的位置,得到目标映射拓扑关系的操作。
45、在一示例性实施例中,所述计算当前数据同步算法基于每一所述映射拓扑关系进行梯度数据同步时的通信开销,将所述通信开销最小的所述映射拓扑关系确定为最优映射拓扑关系的过程包括:
46、计算当前数据同步算法基于所述参考映射拓扑关系进行梯度数据同步时的第一通信开销;
47、计算当前数据同步算法基于目标映射拓扑关系进行梯度数据同步时的第二通信开销;
48、将所述第一通信开销和所述第二通信开销中的较小值作为当前最小通信开销;
49、判断是否完成预设数量的映射拓扑关系的通信开销计算;
50、若是,将当前最小通信开销对应的映射拓扑关系确定为最优映射拓扑关系。
51、在一示例性实施例中,所述更新条件为所述第二通信开销小于所述第一通信开销。
52、在一示例性实施例中,将所述第一通信开销和所述第二通信开销中的较小值作为当前最小通信开销的同时,所述梯度数据同步方法还包括:
53、令计数器的当前计数值加1,所述计数器的初始计数值为0;
54、判断是否完成预设数量的映射拓扑关系的通信开销计算的过程包括:
55、判断所述计数器的当前计数值是否大于最大比较次数;
56、若是,判定完成预设数量的映射拓扑关系的通信开销计算;
57、若否,判定未完成所述预设数量的映射拓扑关系的通信开销计算。
58、在一示例性实施例中,将所述物理拓扑关系中的各物理拓扑节点一一映射到所述逻辑拓扑关系中的各逻辑拓扑节点,得到初始映射拓扑关系,将所述初始映射拓扑关系作为参考映射拓扑关系之后,所述梯度数据同步方法还包括:
59、将所述参考映射拓扑关系存储到内存中;
60、所述交换两个所述待交换节点在所述参考映射拓扑关系中的位置,得到目标映射拓扑关系之后,所述梯度数据同步方法还包括:
61、将所述目标映射拓扑关系存储到内存中;
62、将所述第一通信开销和所述第二通信开销中的较小值作为当前最小通信开销之后,所述梯度数据同步方法还包括:
63、在所述内存中删除所述第一通信开销和所述第二通信开销中的较大值对应的映射拓扑关系。
64、在一示例性实施例中,计算当前数据同步算法基于每一所述映射拓扑关系进行梯度数据同步时的通信开销的过程包括:
65、确定当前数据同步算法进行梯度数据同步时的各个执行阶段;
66、基于所述映射拓扑关系,确定各个所述执行阶段的通信节点对;所述通信节点对包括由至少一条物理链路连接的两个逻辑拓扑节点;
67、根据每一所述执行阶段的各个所述通信节点对的通信开销,确定所述执行阶段的通信开销;
68、将各个所述执行阶段的总通信开销作为当前数据同步算法基于每一所述映射拓扑关系进行梯度数据同步时的通信开销。
69、在一示例性实施例中,根据每一所述执行阶段的各个所述通信节点对的通信开销,确定所述执行阶段的通信开销的过程包括:
70、确定每一所述执行阶段的各个所述通信节点对的通信开销中的最大通信开销;
71、将所述最大通信开销作为所述执行阶段的通信开销。
72、在一示例性实施例中,确定每一所述执行阶段的各个所述通信节点对的通信开销中的最大通信开销之前,所述梯度数据同步方法还包括:
73、当每一所述执行阶段的各个所述通信节点对中存在目标节点对,计算所述目标节点对通过每条所述物理链路连接时对应的初始通信开销;所述目标节点对包括由多条物理链路连接的两个逻辑拓扑节点;
74、确定所述目标节点对的所有所述初始通信开销中的最小通信开销;
75、将所述最小通信开销作为所述目标节点对的通信开销。
76、在一示例性实施例中,获取分布式训练集群的物理拓扑关系之后,所述梯度数据同步方法还包括:
77、基于所述分布式训练集群的物理拓扑关系,确定所述分布式训练集群中的各个物理拓扑节点之间的物理链路;
78、为各个所述物理链路设置权值,得到加权物理拓扑关系;
79、将所述物理拓扑关系中的各物理拓扑节点一一映射到所述逻辑拓扑关系中的各逻辑拓扑节点,得到至少一个映射拓扑关系的过程包括:
80、将所述加权物理拓扑关系中的各物理拓扑节点一一映射到所述逻辑拓扑关系中的各逻辑拓扑节点,得到至少一个映射拓扑关系。
81、在一示例性实施例中,确定所述分布式训练集群中的各个物理拓扑节点之间的物理链路之后,为各个所述物理链路设置权值之前,所述梯度数据同步方法还包括:
82、获取每一所述物理链路的延时和带宽;
83、为各个所述物理链路设置权值的过程包括:
84、基于每一所述物理链路的所述延时和所述带宽为所述物理链路设置权值。
85、在一示例性实施例中,基于每一所述物理链路的所述延时和所述带宽为所述物理链路设置权值的过程包括:
86、基于第一关系式为所述物理链路设置权值,所述第一关系式为q=a+1/b;
87、其中,q为所述物理链路的权值,a为所述物理链路的延时,b为所述物理链路的带宽。
88、在一示例性实施例中,基于所述映射拓扑关系,确定各个所述执行阶段的通信节点对之后,根据每一所述执行阶段的各个所述通信节点对的通信开销,确定所述执行阶段的通信开销之前,所述梯度数据同步方法还包括:
89、根据连接所述通信节点对的两个节点的物理链路的所述权值确定所述通信节点对的通信开销。
90、在一示例性实施例中,所述获取分布式训练集群的物理拓扑关系及当前数据同步算法对应的逻辑拓扑关系的过程包括:
91、当接收到当前梯度数据同步执行指令,判断当前梯度数据同步指令是否为所述分布式训练集群的分布式训练的过程中第一次发起的梯度数据同步指令;
92、若是,获取分布式训练集群的物理拓扑关系及当前数据同步算法对应的逻辑拓扑关系;
93、所述梯度数据同步方法还包括:
94、若当前梯度数据同步指令非所述分布式训练集群的所述分布式训练的过程中第一次发起的梯度数据同步指令,获取所述最优映射拓扑关系,基于所述最优映射拓扑关系和当前数据同步算法进行梯度数据同步。
95、在一示例性实施例中,基于所述最优映射拓扑关系和当前数据同步算法进行梯度数据同步之后,所述梯度数据同步方法还包括:
96、判断所述分布式训练是否结束;
97、若否,执行所述当接收到当前梯度数据同步执行指令,判断当前梯度数据同步指令是否为所述分布式训练集群的分布式训练的过程中第一次发起的梯度数据同步指令的操作;
98、若是,获取所述分布式训练集群对应的分布式训练结果。
99、为解决上述技术问题,本发明还提供了一种梯度数据同步系统,包括:
100、第一获取模块,用于获取分布式训练集群的物理拓扑关系及当前数据同步算法对应的逻辑拓扑关系;
101、映射模块,用于将所述物理拓扑关系中的各物理拓扑节点一一映射到所述逻辑拓扑关系中的各逻辑拓扑节点,得到至少一个映射拓扑关系;
102、计算模块,用于计算当前数据同步算法基于每一所述映射拓扑关系进行梯度数据同步时的通信开销,将所述通信开销最小的所述映射拓扑关系确定为最优映射拓扑关系;
103、数据同步模块,用于基于所述最优映射拓扑关系和当前数据同步算法进行梯度数据同步。
104、为解决上述技术问题,本发明还提供了一种电子设备,包括:
105、存储器,用于存储计算机程序;
106、处理器,用于执行所述计算机程序时实现如上文任意一项所述的梯度数据同步方法的步骤。
107、为解决上述技术问题,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上文任意一项所述的梯度数据同步方法的步骤。
108、本发明提供了一种梯度数据同步方法,在进行分布式训练时,首先获取分布式训练集群的物理拓扑关系,生成与当前数据同步算法相对应的逻辑拓扑关系,对物理拓扑关系中的各物理拓扑节点和逻辑拓扑关系中的各逻辑拓扑节点进行映射,得到多个映射拓扑关系,然后基于通信开销最小的映射拓扑关系进行梯度数据同步,将现有的数据同步算法更好的映射到随机物理拓扑中,提高任意一种随机网络中的梯度数据同步通信的效率,提高网络带宽利用率。本发明还提供了一种梯度数据同步系统、电子设备及计算机可读存储介质,具有和上述梯度数据同步方法相同的有益效果。