一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种跨节点通信方法、装置、设备及可读存储介质与流程

2021-10-24 11:50:00 来源:中国专利 TAG:通信 节点 装置 可读 方法


1.本技术涉及通信技术领域,特别是涉及一种跨节点通信方法、装置、设备及可读存储介质。


背景技术:

2.在对大规模深度学习模型进行训练的时候,由于受到gpu(graphics processing unit,图形处理器)显存容量的限制,通常需要采取多种分布式并行策略混合的方式,才能够在将模型放到多个gpu中进行训练。通常采用的并行策略包括了数据并行,张量模型并行和流水线并行。
3.在使用流水线并行过程中,节点间通信的效率和带宽对模型训练的速度影响至关重要。可以采用8*200gb的ib(infiniband,网络适配器,本文简称ib卡)互联的方案来解决这一问题。但是,在实际当中,很多超算中心和互联网企业的计算集群并不具备这一网络通信的条件,即,现在大部分的超算中心都没有实现所有的计算节点都配置8个ib卡,并且只有少部分的计算节点会配置2~4个ib卡。在使用单个ib进行通信的时候,跨numa(non uniform memory access,非一致内存访问)节点进行gpurdma(一种gpu之间高效通信的应用程序接口)通信的效率会受到cpu和i/o die的带宽影响。
4.综上所述,如何有效地解决跨numa节点进行gpurdma通信的效率等问题,是目前本领域技术人员急需解决的技术问题。


技术实现要素:

5.本技术的目的是提供一种跨节点通信方法、装置、设备及可读存储介质,能够有效提高跨numa节点进行gpurdma通信的效率。
6.为解决上述技术问题,本技术提供如下技术方案:一种跨节点通信方法,包括:从第一节点中选出至少2个第一gpu,从第二节点中选出与所述第一gpu数量相同的第二gpu;其中,所述gpu为graphics processing unit,图形处理器;通过ib卡建立所述第一gpu与所述第二gpu间一一对应的通信链路;其中,所述ib为infiniband,网络适配器;在所述通信链路中分别传输目标数据中的各个数据块;在所述第二节点中的每个gpu保存有所述目标数据的部分数据块后,对所述第二节点中的gpu进行数据收集处理,以使所述第二节点中的各个gpu都完整保存所述目标数据。
7.优选地,所述从第一节点中选出至少2个第一gpu,从第二节点中选出与所述第一gpu数量相同的第二gpu,包括:在所述第一节点需向所述第二节点传输所述目标数据的情况下,获取所述第一节点与所述第二节点间的ib卡挂载信息;
利用所述ib卡挂载信息,从所述第一节点中选出至少2个所述第一gpu,从所述第二节点中选出与所述第一gpu数量匹配的所述第二gpu。
8.优选地,利用所述ib卡挂载信息,从所述第一节点中选出至少2个所述第一gpu,从所述第二节点中选出与所述第一gpu数量匹配的所述第二gpu,包括:利用所述ib卡挂载信息中的gpu挂载分布信息,从所述第一节点和所述第二节点中查找与所述ib卡挂载在同一个总线开关的目标cpu;按照所述目标gpu所属节点,分别将所述目标gpu确定为所述第一gpu和所述第二gpu。
9.优选地,在所述通信链路中分别传输目标数据中的各个数据块,包括:若所述通信链路的数量为2,则在每一条所述通信链路中传输数据量为所述目标数据一半的数据块。
10.优选地,在所述通信链路中分别传输目标数据中的各个数据块之后,还包括;若所述通信链路的数量小于所述第二节点中gpu数量,则利用所述第二gpu,将所述数据块分散给所述第二节点的各个gpu。
11.优选地,利用所述第二gpu,将所述数据块分散给所述第二节点的各个gpu,包括:利用所述第二gpu,划分自身接收到的所述数据块,并将划分后的数据块分散给所述第二节点的各个gpu。
12.优选地,在所述第二节点中的各个gpu都完整保存所述目标数据之后,还包括:利用所述第二节点中的各个gpu和所述第二节点中的各个gpu,结合所述目标数据对模型并行训练。
13.一种跨节点通信装置,包括:gpu选择模块,用于从第一节点中选出至少2个第一gpu,从第二节点中选出与所述第一gpu数量相同的第二gpu;其中,所述gpu为graphics processing unit,图形处理器;通信链路建立模块,用于通过ib卡建立所述第一gpu与所述第二gpu间一一对应的通信链路;其中,所述ib为infiniband,网络适配器;数据并行传输模块,用于在所述通信链路中分别传输目标数据中的各个数据块;数据收集模块,用于在所述第二节点中的每个gpu保存有所述目标数据的部分数据块后,对所述第二节点中的gpu进行数据收集处理,以使所述第二节点中的各个gpu都完整保存所述目标数据。
14.一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述跨节点通信方法的步骤。
15.一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述跨节点通信方法的步骤。
16.应用本技术实施例所提供的方法,从第一节点中选出至少2个第一gpu,从第二节点中选出与第一gpu数量相同的第二gpu;通过ib卡建立第一gpu与第二gpu间一一对应的通信链路;在通信链路中分别传输目标数据中的各个数据块;在第二节点中的每个gpu保存有目标数据的部分数据块后,对第二节点中的gpu进行数据收集处理,以使第二节点中的各个gpu都完整保存目标数据。
17.首先,从第一节点中选出至少2个第一gpu,从第二节点中选出数量相同的第二gpu,然后通过ib卡建立第一gpu与第二gpu之间一一对应的通信链路。然后,在通信链路中分别传输目标数据中的各个数据块。即,每一条通信链路中并不传输完整的目标数据,则是仅传输目标数据的一个数据块,即第一节点与第二节点之间传递目标数据时,有至少2个第一gpu在发送数据,至少2个第二gpu在接收数据,第一节点与第二节点间的数据传输总量与目标数据对应,在传输时,由于有至少2个通信链路在参与传输,可以加快数据传输效率。此外,在第二节点中的各个gpu都保存有目标数据的一部分数据块之后,仅需对第二节点中的gpu进行数据收集处理,即可使得第二节点中的各个gpu都完整保持该目标数据,即实现了将第一节点中的目标数据传输至第二节点中的各个gpu。由于,整个传输过程,在第一节点向第二节点进行数据传输时,仅需传递一份目标数据,且还采用并行传输,可以在节点配置的ib卡数量少于4个时,完成节点间高效的数据传输。
18.相应地,本技术实施例还提供了与上述跨节点通信方法相对应的跨节点通信装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
19.为了更清楚地说明本技术实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
20.图1为本技术实施例中一种跨节点通信方法的实施流程图;图2为本技术实施例中一种跨numa节点的ib网卡与gpu的拓扑关系示意图;图3为本技术实施例中一种节点内部数据块扩散示意图;图4为本技术实施例中一种跨numa节点的数据传输示意图;图5为本技术实施例中另一种跨numa节点的数据传输示意图;图6为本技术实施例中一种跨节点通信装置的结构示意图;图7为本技术实施例中一种电子设备的结构示意图;图8为本技术实施例中一种电子设备的具体结构示意图。
具体实施方式
21.为了使本技术领域的人员更好地理解本技术方案,下面结合附图和具体实施方式对本技术作进一步的详细说明。显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
22.请参考图1,图1为本技术实施例中一种跨节点通信方法的流程图,该方法包括以下步骤:s101、从第一节点中选出至少2个第一gpu,从第二节点中选出与第一gpu数量相同的第二gpu。
23.其中,第一节点与第二节点即为numa对应的不同计算节点,在一个计算节点中有多个gpu,如8个。
24.为了在计算节点配置的ib卡数量有限的情况下,提高跨numa节点间的数据通信,首先从第一节点中选出至少2个第一gpu,从第二节点中选出与第一gpu数量相同的第二gpu。
25.需要注意的是,在本技术中,第一、第二仅用于区别存在两个相同的对象,而同具有第一或第二的不同对象之间,具有所属关系。即,第一节点和第二节点仅仅是用于区别存在2个相同的计算节点,而第一gpu表明其属于第一节点,第二gpu表明其属于第二节点。
26.在一种具体实施方式中,步骤s101从第一节点中选出至少2个第一gpu,从第二节点中选出与第一gpu数量相同的第二gpu,具体包括:步骤一、在第一节点需向第二节点传输目标数据的情况下,获取第一节点与第二节点间的ib卡挂载信息;步骤二、利用ib卡挂载信息,从第一节点中选出至少2个第一gpu,从第二节点中选出与第一gpu数量匹配的第二gpu。
27.为便于描述,下面将上述两个步骤结合起来进行说明。
28.具体的,可以在第一节点产生需要向第二节点同步的目标数据时,确定第一节点需向第二节点传输目标数据。该目标数据可以是在模型训练过程中所需数据,也可以为其他数据。
29.在明确第一节点需向第二节点传输目标数据的情况下,可以直接获取第一节点与第二节点间的ib卡挂载信息。ib卡挂载信息即指在第一节点与第二节点之间通过ib卡进行通信的挂载信息。具体的,可以基于ib卡挂载信息找出与ib卡具有通信连接的gpu作为第一gpu或第二gpu。
30.进一步,上述步骤二利用ib卡挂载信息,从第一节点中选出至少2个第一gpu,从第二节点中选出与第一gpu数量匹配的第二gpu,具体包括:步骤1、利用ib卡挂载信息中的gpu挂载分布信息,从第一节点和第二节点中查找与ib卡挂载在同一个总线开关的目标cpu;步骤2、按照目标gpu所属节点,分别将目标gpu确定为第一gpu和第二gpu。
31.以总线开关为pcie

switch(peripheral component interconnect express,pcie,一种高速串行计算机扩展总线标准,switch开关)为例,即只有与ib卡挂载在同一个pcie

switch下的gpu参与节点间的流水线数据通信,即通信的数据量可在gpu间被平分。
32.对于目标gpu节点,从而确定其属于第一gpu或第二gpu。举例说明:如图2所示,第一节点与第二节点之间存在一个ib卡,且第一节点中gpu11和gpu12与该ib相连接,第二节点中gpu21和gpu22与该ib卡相连接,因而相应地可以将gpu11和gpu12确定为第一gpu,将gpu21和gpu22确定为第二gpu。
33.s102、通过ib卡建立第一gpu与第二gpu间一一对应的通信链路。
34.一个第一gpu与一个第二gpu通过配置的ib卡,建立起一一对应的通信链路。对于不同节点内的gpu具体如何通过ib卡建立起一一对应的通信链路,可以具体参照ib卡具体定义和通信实现方案,在此不再一一赘述。
35.举例说明:请参考图2,图2为本技术实施例中一种跨numa节点的ib网卡与gpu的拓扑关系示意图。其中,图左侧一列gpu对应属于第一节点,右侧一列gpu对应属于第二节点。其中,gpu11和gpu12即为第一gpu,gpu21和gpu22即为第二gpu。gpu11通过ib卡与gpu21建立
通信链路,gpu12通过ib卡与gpu22建立通信链路。
36.s103、在通信链路中分别传输目标数据中的各个数据块。
37.在本实施例中,在将第一节点中gpu内存储的目标数据传递给第二节点中的每一个gpu的过程中,为了提高跨节点间的数据传输效率,可以仅从第一节点发送一份目标数据至第二节点。
38.具体的传输实现,即利用步骤s102建立好的通信链路,在跨节点的gpu间进行p2p的数据传输。由于第一节点中参与目标数据传输的第一gpu至少有2个,因而在进行数据传输时,可以让每一条通信链路仅传输目标数据中的一个数据块。
39.在本技术中一种具体实施方式中,步骤s103在通信链路中分别传输目标数据中的各个数据块,包括:若通信链路的数量为2,则在每一条通信链路中传输数据量为目标数据一半的数据块。举例说明,如图2所示,若目标数据的通信数据量为d,则gpu11通过ib卡与gpu21建立的通信链路仅需传输1/2d,gpu12通过ib卡与gpu22建立的通信链路仅需传递另外的1/2d。如此,第二节点中的gpu21和gpu22所接收的数据总量即为d,即目标数据被分散传递给了gpu21和gpu22。
40.当然,在实际应用中,第一节点与第二节点之间的ib卡可以有2个、3个或4个等。在图2中,ib卡的数量为1,通信链路为2,在使用1个以上的ib卡进行节点间通信的实施,通信方式、数据操作的流程与使用一个ib卡的类似。例如,当第一节点与第二节点的gpu都为8个时,如图4所示,在图4中有2个ib卡,若需传输的目标数据的数据量为d,在第一节点中参与跨节点数据传输的gpu有4个,在第二节点中参与跨节点数据传输的gpu也有4个,因而在跨节点传输时,一条通信链路可仅传输1/4d的目标数据即可;如图5所示,在图5中有4个ib卡,若需传输的目标数据的数据量为d,在第一节点中参与跨节点数据传输的gpu有8个,在第二节点中参与跨节点数据传输的gpu也有8个,因而在跨节点传输时,一条通信链路可仅传输1/8d的目标数据即可。
41.s104、在第二节点中的每个gpu保存有目标数据的部分数据块后,对第二节点中的gpu进行数据收集处理,以使第二节点中的各个gpu都完整保存目标数据。
42.执行完步骤s103后,仅仅是将一份目标数据传递给第二节点,但是,第二节点中的各个gpu还未保存完整的目标数据。因此,可以在第二节点中的每个gpu都保存有目标数据的部分数据块之后,对第二节点中的gpu进行数据收集处理,从而使得第二节点中的各个gpu都保存完整的目标数据。
43.需要注意的是,如图5所示,若第一节点中的gpu和第二节点中的gpu都参与了目标数据的传输,则在传输完一份目标数据后,第二节点中的每个gpu都保存了目标数据的部分数据块,此时可以直接对第二节点中的gpu进行数据收集处理;如图2和图4所示,若第一节点中的gpu和第二节点中的gpu有部分gpu没有参数目标数据的传输,则在传输完一份目标数据后,第二节点中的部分gpu还可能没有保存与目标数据相关的任何数据,此时可以令第二节点中接收到目标数据的数据块的第二gpu对其所接收的数据块进行共享或扩散,从而使得第二节点中的gpu都保存了目标数据的部分数据块。
44.在一种具体实施方式中,在执行完步骤s103在通信链路中分别传输目标数据中的各个数据块之后,若通信链路的数量小于第二节点中gpu数量,则利用第二gpu,将数据块分散给第二节点的各个gpu。
45.举例说明,如图3所示,在第二节点中共有8个gpu,其中仅有gpu21和gpu22在与第一节点的数据传输中,得到了目标数据的部分数据块,具体的gpu21中存储了数据量为目标数据一半的数据块,gpu22中存储了数据量为目标数据另一半的数据块,此时可以使得gpu21和gpu22将其接收到的数据块分散至其他gpu中。
46.具体的,可以利用第二gpu,划分自身接收到的数据块,并将划分后的数据块分散给第二节点的各个gpu。举例说明:如图3所示的第二节点内部数据分散示意图,gpu21将其接收的数据块分为四份,将分散到gpu21、gpu23、gpu25和gpu7中,gpu22将其接收的数据块分为四份,将分散到gpu22、gpu24、gpu26和gpu28中。如此,第二节点中的每一个gpu都至少存储有1/8的目标数据。
47.对于如何将分散到第二节点中各个gpu的数据块进行收集(all

gather),从而使得第二节点的各个gpu都保存完成的目标数据,可以具体参照相关数据收集操作,在此不再一一说明。
48.在本技术的一种具体实施方式中,执行步骤s104在第二节点中的各个gpu都完整保存目标数据之后,还可以利用第二节点中的各个gpu和第二节点中的各个gpu,结合目标数据对模型并行训练。具体的,对于具体如何跨节点训练模型,可以具体参考模型并行训练方案,在此不再一一赘述。如此,便可解决在每个计算节点配置的ib卡数量少于4个时,进行巨量模型训练采用流水并行的通信受到跨numa通行导致的效率降低问题。
49.应用本技术实施例所提供的方法,从第一节点中选出至少2个第一gpu,从第二节点中选出与第一gpu数量相同的第二gpu;通过ib卡建立第一gpu与第二gpu间一一对应的通信链路;在通信链路中分别传输目标数据中的各个数据块;在第二节点中的每个gpu保存有目标数据的部分数据块后,对第二节点中的gpu进行数据收集处理,以使第二节点中的各个gpu都完整保存目标数据。
50.首先,从第一节点中选出至少2个第一gpu,从第二节点中选出数量相同的第二gpu,然后通过ib卡建立第一gpu与第二gpu之间一一对应的通信链路。然后,在通信链路中分别传输目标数据中的各个数据块。即,每一条通信链路中并不传输完整的目标数据,则是仅传输目标数据的一个数据块,即第一节点与第二节点之间传递目标数据时,有至少2个第一gpu在发送数据,至少2个第二gpu在接收数据,第一节点与第二节点间的数据传输总量与目标数据对应,在传输时,由于有至少2个通信链路在参与传输,可以加快数据传输效率。此外,在第二节点中的各个gpu都保存有目标数据的一部分数据块之后,仅需对第二节点中的gpu进行数据收集处理,即可使得第二节点中的各个gpu都完整保持该目标数据,即实现了将第一节点中的目标数据传输至第二节点中的各个gpu。由于,整个传输过程,在第一节点向第二节点进行数据传输时,仅需传递一份目标数据,且还采用并行传输,可以在节点配置的ib卡数量少于4个时,完成节点间高效的数据传输。
51.相应于上面的方法实施例,本技术实施例还提供了一种跨节点通信装置,下文描述的跨节点通信装置与上文描述的跨节点通信方法可相互对应参照。
52.参见图6所示,该装置包括以下模块:gpu选择模块101,用于从第一节点中选出至少2个第一gpu,从第二节点中选出与第一gpu数量相同的第二gpu;通信链路建立模块102,用于通过ib卡建立第一gpu与第二gpu间一一对应的通信
链路;数据并行传输模块103,用于在通信链路中分别传输目标数据中的各个数据块;数据收集模块104,用于在第二节点中的每个gpu保存有目标数据的部分数据块后,对第二节点中的gpu进行数据收集处理,以使第二节点中的各个gpu都完整保存目标数据。
53.应用本技术实施例所提供的装置,从第一节点中选出至少2个第一gpu,从第二节点中选出与第一gpu数量相同的第二gpu;通过ib卡建立第一gpu与第二gpu间一一对应的通信链路;在通信链路中分别传输目标数据中的各个数据块;在第二节点中的每个gpu保存有目标数据的部分数据块后,对第二节点中的gpu进行数据收集处理,以使第二节点中的各个gpu都完整保存目标数据。
54.首先,从第一节点中选出至少2个第一gpu,从第二节点中选出数量相同的第二gpu,然后通过ib卡建立第一gpu与第二gpu之间一一对应的通信链路。然后,在通信链路中分别传输目标数据中的各个数据块。即,每一条通信链路中并不传输完整的目标数据,则是仅传输目标数据的一个数据块,即第一节点与第二节点之间传递目标数据时,有至少2个第一gpu在发送数据,至少2个第二gpu在接收数据,第一节点与第二节点间的数据传输总量与目标数据对应,在传输时,由于有至少2个通信链路在参与传输,可以加快数据传输效率。此外,在第二节点中的各个gpu都保存有目标数据的一部分数据块之后,仅需对第二节点中的gpu进行数据收集处理,即可使得第二节点中的各个gpu都完整保持该目标数据,即实现了将第一节点中的目标数据传输至第二节点中的各个gpu。由于,整个传输过程,在第一节点向第二节点进行数据传输时,仅需传递一份目标数据,且还采用并行传输,可以在节点配置的ib卡数量少于4个时,完成节点间高效的数据传输。
55.在本技术的一种具体实施方式中,gpu选择模块101,具体用于在第一节点需向第二节点传输目标数据的情况下,获取第一节点与第二节点间的ib卡挂载信息;利用ib卡挂载信息,从第一节点中选出至少2个第一gpu,从第二节点中选出与第一gpu数量匹配的第二gpu。
56.在本技术的一种具体实施方式中,gpu选择模块101,具体用于利用ib卡挂载信息中的gpu挂载分布信息,从第一节点和第二节点中查找与ib卡挂载在同一个总线开关的目标cpu;按照目标gpu所属节点,分别将目标gpu确定为第一gpu和第二gpu。
57.在本技术的一种具体实施方式中,数据并行传输模块103,具体用于若通信链路的数量为2,则在每一条通信链路中传输数据量为目标数据一半的数据块。
58.在本技术的一种具体实施方式中,还包括:数据块扩散模块,用于在通信链路中分别传输目标数据中的各个数据块之后,若通信链路的数量小于第二节点中gpu数量,则利用第二gpu,将数据块分散给第二节点的各个gpu。
59.在本技术的一种具体实施方式中,数据块扩散模块,具体用于利用第二gpu,划分自身接收到的数据块,并将划分后的数据块分散给第二节点的各个gpu。
60.在本技术的一种具体实施方式中,还包括:模型训练模块,用于在第二节点中的各个gpu都完整保存目标数据之后,利用第二节点中的各个gpu和第二节点中的各个gpu,结合目标数据对模型并行训练。
61.相应于上面的方法实施例,本技术实施例还提供了一种电子设备,下文描述的一种电子设备与上文描述的一种跨节点通信方法可相互对应参照。
62.参见图7所示,该电子设备包括:存储器332,用于存储计算机程序;处理器322,用于执行计算机程序时实现上述方法实施例的跨节点通信方法的步骤。
63.具体的,请参考图8,图8为本实施例提供的一种电子设备的具体结构示意图,该电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,cpu)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在电子设备301上执行存储器332中的一系列指令操作。
64.电子设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。
65.上文所描述的跨节点通信方法中的步骤可以由电子设备的结构实现。
66.相应于上面的方法实施例,本技术实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种跨节点通信方法可相互对应参照。
67.一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的跨节点通信方法的步骤。
68.该可读存储介质具体可以为u盘、移动硬盘、只读存储器(read

only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
69.本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜