本发明涉及通信,尤其涉及一种集群通信方法、系统、装置、设备及介质。
背景技术:
1、为了加快处理速度,可以使用多台服务器组成计算集群进行分布式机器学习。在分布式机器学习中,各个服务器之间需要进行集群通信,也就是一对多或者多对多的通信,例如由四个服务器组成计算集群进行分布式机器学习,每个服务器分别计算出一组数据,然后放在一起进行数据聚合(求和),最终让所有服务器都得到聚合后的数据。相关技术中利用在网计算(in network computing)技术将集群通信操作卸载到网络设备(例如交换机)上,以加速集群通信。然而,由于网络设备的算力有限,随着计算集群规模的增加将导致网络设备的负载压力变大,从而影响集群通信的效率。
技术实现思路
1、为克服上述技术中存在的问题,本发明提供了一种集群通信方法、系统、装置、设备及介质。
2、根据本发明实施例的第一方面,提供了一种集群通信方法,所述方法应用于网络设备,所述网络设备中安装有用于加速集群的分布式机器学习或分布式计算的n个计算单元,n大于1,所述集群包括m个服务器,所述m个服务器被分布式部署,且所述m个服务器均连接所述网络设备;所述方法包括:
3、接收所述集群中各服务器发送的待聚合的数组;
4、针对接收的每一数组,依据本网络设备中安装的n个计算单元,对接收的该数组中的数据进行划分,以得到每一计算单元对应的子数组;
5、针对每一子数组,将该子数组分配给该子数组对应的计算单元;同一计算单元被分配的不同子数组包含的数据的数量相同,且包含的数据在原数组中的位置相同;任一子数组中的数据的原数组是指该子数组所属的来自服务器发送的待聚合的数组;
6、获得各计算单元基于被分配的子数组进行数据聚合得到的聚合子结果;任一计算单元得到的聚合子结果对应该计算单元被分配的任一子数组中的数据在原数组中的位置;
7、依据获得的各聚合子结果对应的位置,按照顺序对获得的各聚合子结果进行合并得到聚合结果并发送至所述集群中的服务器。
8、可选的,所述n个计算单元的类型为业务板卡、cpu或fpga中的至少一种。
9、可选的,该方法之前进一步包括:与所述集群中各服务器协商各服务器与本网络设备进行通信所采用的目标报文长度;
10、所述接收所述集群中各服务器发送的待聚合的数组包括:
11、接收所述集群中各服务器按照被协商的目标报文长度发送的报文,所述报文携带待聚合的数组。
12、可选的,所述与所述集群中各服务器协商各服务器与本网络设备进行通信所采用的目标报文长度包括:
13、向控制器发送本网络设备的网络设备标识以及本网络设备支持的第一报文长度,以使所述控制器确定出各服务器与所述网络设备进行通信所采用的目标报文长度;任一服务器与所述网络设备进行通信所采用的目标报文长度是基于所述第一报文长度和该服务器支持的第二报文长度确定;
14、接收所述控制器发送的集群信息,所述集群信息包括所述集群中各服务器的服务器标识,以及各服务器与所述网络设备进行通信所采用的目标报文长度。
15、可选的,依据本网络设备中安装的n个计算单元,对接收的该数组中的数据进行划分之前,所述方法还包括:
16、若该数组的长度大于或等于预设阈值,则继续执行依据本网络设备中安装的n个计算单元,对接收的该数组中的数据进行划分的步骤;该数组的长度是依赖于该数组中包含的数据的数量确定;
17、若该数组的长度小于预设阈值,则指定其中一个计算单元对所有数组进行聚合处理得到聚合结果,并将所述聚合结果发送至所述集群中各服务器。
18、根据本发明实施例的第二方面,提供了一种集群通信系统,所述系统包括网络设备以及集群中服务器;网络设备,所述网络设备中安装有用于加速集群的分布式机器学习或分布式计算的n个计算单元,n大于1,所述集群包括m个服务器,所述m个服务器被分布式部署,且所述m个服务器均连接所述网络设备;
19、所述m个服务器,用于向网络设备发送待聚合的数组;
20、所述网络设备,用于接收所述集群中各服务器发送的待聚合的数组;针对接收的每一数组,依据本网络设备中安装的n个计算单元,对接收的该数组中的数据进行划分,以得到每一计算单元对应的子数组;针对每一子数组,将该子数组分配给该子数组对应的计算单元;同一计算单元被分配的不同子数组包含的数据的数量相同,且包含的数据在原数组中的位置相同;任一子数组中的数据的原数组是指该子数组所属的来自服务器发送的待聚合的数组;获得各计算单元基于被分配的子数组进行数据聚合得到的聚合子结果;任一计算单元得到的聚合子结果对应该计算单元被分配的任一子数组中的数据在原数组中的位置;依据获得的各聚合子结果对应的位置,按照顺序对获得的各聚合子结果进行合并得到聚合结果并发送至所述集群中的服务器。
21、可选的,所述n个计算单元的类型为业务板卡、cpu或fpga中的至少一种。
22、可选的,与所述集群中各服务器协商各服务器与本网络设备进行通信所采用的目标报文长度;
23、所述接收所述集群中各服务器发送的待聚合的数组包括:
24、接收所述集群中各服务器按照被协商的目标报文长度发送的报文,所述报文携带待聚合的数组。
25、可选的,所述与所述集群中各服务器协商各服务器与本网络设备进行通信所采用的目标报文长度包括:
26、向控制器发送本网络设备的ip地址以及本网络设备支持的第一报文长度,以使所述控制器确定出各服务器与所述网络设备进行通信所采用的目标报文长度;任一服务器与所述网络设备进行通信所采用的目标报文长度是基于所述第一报文长度和该服务器支持的第二报文长度确定;
27、接收所述控制器发送的集群信息,所述集群信息包括所述集群中各服务器的服务器标识,以及各服务器与所述网络设备进行通信所采用的目标报文长度。
28、可选的,依据本网络设备中安装的n个计算单元,对接收的该数组中的数据进行划分之前,还包括:
29、若该数组的长度大于或等于预设阈值,则继续执行依据本网络设备中安装的n个计算单元,对接收的该数组中的数据进行划分的步骤;该数组的长度是依赖于该数组中包含的数据的数量确定;
30、若该数组的长度小于预设阈值,则指定其中一个计算单元对所有数组进行聚合处理得到聚合结果,并将所述聚合结果发送至所述集群中各服务器。
31、根据本发明实施例的第三方面,提供了一种集群通信装置,所述装置应用于网络设备,所述网络设备中安装有用于加速集群的分布式机器学习或分布式计算的n个计算单元,n大于1,所述集群包括m个服务器,所述m个服务器被分布式部署,且所述m个服务器均连接所述网络设备;所述装置包括:
32、接收模块,用于接收所述集群中各服务器发送的待聚合的数组;
33、划分模块;用于针对接收的每一数组,依据本网络设备中安装的n个计算单元,对接收的该数组中的数据进行划分,以得到每一计算单元对应的子数组;
34、分配模块,用于针对每一子数组,将该子数组分配给该子数组对应的计算单元;同一计算单元被分配的不同子数组包含的数据的数量相同,且包含的数据在原数组中的位置相同;任一子数组中的数据的原数组是指该子数组所属的来自服务器发送的待聚合的数组;
35、合并模块,用于获得各计算单元基于被分配的子数组进行数据聚合得到的聚合子结果;任一计算单元得到的聚合子结果对应该计算单元被分配的任一子数组中的数据在原数组中的位置;依据获得的各聚合子结果对应的位置,对获得的各聚合子结果进行合并得到聚合结果并发送至所述集群中的服务器。
36、可选的,所述n个计算单元的类型为业务板卡、cpu或fpga中的至少一种。
37、可选的,所述装置还包括协商模块,用于与所述集群中各服务器协商各服务器与本网络设备进行通信所采用的目标报文长度;
38、所述接收模块,具体用于在所述协商模块完成协商之后,接收所述集群中各服务器按照被协商的目标报文长度发送的报文,所述报文携带待聚合的数组。
39、可选的,所述协商模块,具体用于向控制器发送本网络设备的网络设备标识以及本网络设备支持的第一报文长度,以使所述控制器确定出各服务器与所述网络设备进行通信所采用的目标报文长度;任一服务器与所述网络设备进行通信所采用的目标报文长度是基于所述第一报文长度和该服务器支持的第二报文长度确定;接收所述控制器发送的集群信息,所述集群信息包括所述集群中各服务器的服务器标识,以及各服务器与所述网络设备进行通信所采用的目标报文长度。
40、可选的,所述划分模块在依据本网络设备中安装的n个计算单元,对接收的该数组中的数据进行划分之前,还用于:
41、若该数组的长度大于或等于预设阈值,则继续执行依据本网络设备中安装的n个计算单元,对接收的该数组中的数据进行划分的步骤;该数组的长度是依赖于该数组中包含的数据的数量确定;
42、若该数组的长度小于预设阈值,则指定其中一个计算单元对所有数组进行聚合处理得到聚合结果,并将所述聚合结果发送至所述集群中各服务器。
43、根据本发明实施例的第四方面,提供了一种设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行如上述任一所述的方法。
44、根据本发明实施例的第五方面,提供了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述任一所述方法的步骤。
45、利用本说明的一个或多个实施例,通过在网络设备中安装用于加速集群中分布式机器学习或分布式计算的n个计算单元,将网络设备中的单个计算单元扩展为n个计算单元,通过n个计算单元间的相互配合来降低单个计算单元的负载压力,达到提高通信效率的效果。
46、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。