一种针对智算场景下的网络加速方法与流程

专利检索2024-11-11  6


本发明涉及新兴信息技术相关,特别是云计算领域 ,hpc/ai 领域,云原生平台paas(边缘计算)领域,尤其涉及一种针对智算场景下的网络加速方法。


背景技术:

1、在ai智算大背景下,为了训练更大规模的模型,通常需要多机多卡联合训练,在单机上多卡(多gpu)之间通过nvlink技术,构建gpu卡间的高速网络,在多机之间采用ib技术(ib网卡,ib交换机),构建多机间的高速网络; 在gpu和ib网卡之间则通过gds技术,构建高速网络;在构建主机之间的高速通信网络时,业界最佳实践是ib网卡和gpu卡的配比为1:1,尽可能的减少由于ib网卡带宽不足导致数据传输带宽不足,训练效率降低等问题,但是由于各种原因(1.pcie插槽不足,2.降低ib网卡费用)无法做到ib网卡和gpu卡的配比是1:1,在具体实践中普遍采用的4:1的方式,即八张gpu卡配置2张ib网卡,即每4张gpu卡共1张ib网卡,这种共享ib的方式不仅会导致主机间通信效率严重下降,更严重的是由于通信速率不一致多级多卡的分布式程序hang住(或stall住),无法正常运行。

2、针对上述问题,现有的方式主要包括以下两种,

3、方法1:增加ib网卡资源,让gpu和ib实现1:1的配置,并且满足gpu和ib在同一个pcie switch 下面,显然方法1是最佳实践,但是既要增加ib网卡,又要增加pcie插槽,这在硬件资源受限的情况下无法实现。

4、方法2:降级使用ib网卡能力,不用gdr能力。 利用gdr这种超能力有一个限制,要求gpu和ib在同一个pcie switch 下面,从而绕过cpu,实现p2p(pcie-to-pcie)的加速。但是实际环境中,通常由于pcie物理拓扑的限制,无法做到所有gpu卡和ib网卡在同一个pcieswitch 下面。 这就导致了部分gpu卡和ib网卡间通信是基于gdr实现的,又有部分gpu卡和ib网卡间通信是基于cpu中转完成通信的,通信速率上的差异,经常会导致pytorch进程会hang住(或stall)住。为了解决pytorch进程会hang住问题,就需要禁用gds能力,所有gpu和ib之间的通信速率降低到同一水平,即只通过cpu中转完成通信这种方式,但是这种妥协,降级行为无法充分发挥出ib网卡的性能。


技术实现思路

1、本发明的目的是为了至少解决现有技术的不足之一,提供一种针对智算场景下的网络加速方法。

2、为了实现上述目的,本发明采用以下的技术方案:

3、具体的,提出一种针对智算场景下的网络加速方法,包括,

4、获取当前智算场景中pcie物理上的拓扑结构,基于所述拓扑结构解析出gpu与ib网卡的拓扑关系;

5、从所述拓扑关系中筛选出和ib网卡在同一个pcie switch下的gpu,与ib网卡不在同一个pcie switch下的gpu定义为其余gpu;

6、于其余gpu中任意一个gpu上运行一个客户端client;

7、于和ib网卡在同一个pcie switch下的gpu中任意一个gpu上运行一个服务端server;

8、以服务端server作为中转站,基于中转站实现客户端client到ib网卡之间的数据交互,即实现与ib网卡不在同一个pcie switch下的gpu将显存直接mapping到ib网卡。

9、进一步,具体的,基于中转站实现客户端client到ib网卡之间的数据交互,包括,

10、客户端client通过调用cuda的api接口cudamemcpypeer将数据拷贝到服务端server;

11、服务端server调用cuda的ko驱动模块nvidia-peermem.ko实现服务端server与ib网卡之间的数据交互;

12、进而使安装了客户端client的与ib网卡不在同一个pcie switch下的gpu将显存直接mapping到ib网卡。

13、进一步,基于中转站实现客户端client到ib网卡之间的数据交互,还包括,

14、ib网卡能够直接对安装了客户端client的与ib网卡不在同一个pcie switch下的gpu显存做rdma操作。

15、进一步,所述方法还包括,

16、在客户端client将数据拷贝到服务端server时,还会通过cudaevent记录事件。

17、本发明还提出一种针对智算场景下的网络加速装置,包括,

18、拓扑结构解析模块,用于获取当前智算场景中pcie物理上的拓扑结构,基于所述拓扑结构解析出gpu与ib网卡的拓扑关系;

19、拓扑关系筛选模块,用于从所述拓扑关系中筛选出和ib网卡在同一个pcieswitch下的gpu,与ib网卡不在同一个pcie switch下的gpu定义为其余gpu;

20、客户端client布置模块,用于在其余gpu中任意一个gpu上运行一个客户端client;

21、服务端server布置模块,用于在和ib网卡在同一个pcie switch下的gpu中任意一个gpu上运行一个服务端server;

22、以服务端server作为中转站,基于中转站实现客户端client到ib网卡之间的数据交互,即实现与ib网卡不在同一个pcie switch下的gpu将显存直接mapping到ib网卡。

23、进一步,具体的,基于中转站实现客户端client到ib网卡之间的数据交互,包括,

24、客户端client通过调用cuda的api接口cudamemcpypeer将数据拷贝到服务端server;

25、服务端server调用cuda的ko驱动模块nvidia-peermem.ko实现服务端server与ib网卡之间的数据交互;

26、进而使安装了客户端client的与ib网卡不在同一个pcie switch下的gpu将显存直接mapping到ib网卡。

27、进一步,基于中转站实现客户端client到ib网卡之间的数据交互,还包括,

28、ib网卡能够直接对安装了客户端client的与ib网卡不在同一个pcie switch下的gpu显存做rdma操作。

29、进一步,还包括,

30、在客户端client将数据拷贝到服务端server时,还会通过cudaevent记录事件。

31、本发明的有益效果为:

32、本发明提出了一种针对智算场景下的网络加速方法,通过从当前智算场景中pcie物理上的拓扑结构中筛选出和ib网卡在同一个pcie switch下的gpu,之后在其余的gpu中上运行客户端client,在和ib网卡在同一个pcie switch下的gpu中运行服务端server,以服务端server作为中转站,基于中转站实现客户端client到ib网卡之间的数据交互,即实现与ib网卡不在同一个pcie switch下的gpu将显存直接mapping到ib网卡。相当于构建一个虚拟的pcie switch (简写: virtual pcie switch) 实现网络加速,让多个gpu从逻辑上在同一个pcie switch,这样既可以利用ib网卡的gds超能力,提高通信带宽,实现gpu和ib之间的高速通信,这样顺便解决了由于通信速率不一致导致pytorch进程会hang住(或stall)住问题。


技术特征:

1.一种针对智算场景下的网络加速方法,其特征在于,包括,

2.根据权利要求1所述的一种针对智算场景下的网络加速方法,其特征在于,具体的,基于中转站实现客户端client到ib网卡之间的数据交互,包括,

3.根据权利要求2所述的一种针对智算场景下的网络加速方法,其特征在于,基于中转站实现客户端client到ib网卡之间的数据交互,还包括,

4.根据权利要求2所述的一种针对智算场景下的网络加速方法,其特征在于,所述方法还包括,

5.一种针对智算场景下的网络加速装置,其特征在于,包括,

6.根据权利要求5所述的一种针对智算场景下的网络加速装置,其特征在于,具体的,基于中转站实现客户端client到ib网卡之间的数据交互,包括,

7.根据权利要求6所述的一种针对智算场景下的网络加速装置,其特征在于,基于中转站实现客户端client到ib网卡之间的数据交互,还包括,

8.根据权利要求6所述的一种针对智算场景下的网络加速装置,其特征在于,还包括,


技术总结
本发明涉及一种针对智算场景下的网络加速方法,包括,获取当前智算场景中pcie物理上的拓扑结构,基于所述拓扑结构解析出GPU与IB网卡的拓扑关系;从所述拓扑关系中筛选出和IB网卡在同一个pcie switch下的GPU,与IB网卡不在同一个pcie switch下的GPU定义为其余GPU;于其余GPU中任意一个GPU上运行一个客户端Client;于和IB网卡在同一个pcie switch下的GPU中任意一个GPU上运行一个服务端Server;以服务端Server作为中转站,基于中转站实现客户端Client到IB网卡之间的数据交互,即实现与IB网卡不在同一个pcie switch下的GPU将显存直接mapping到IB网卡。本发明既可以利用IB网卡的GDS超能力,提高通信带宽,实现GPU和IB之间的高速通信,也解决了由于通信速率不一致导致pytorch进程会hang住或stall住的问题。

技术研发人员:兰满桔,曾越明,吴俊刚,赵伟锋,张宇文
受保护的技术使用者:广州尚航信息科技股份有限公司
技术研发日:
技术公布日:2024/5/29
转载请注明原文地址:https://win.8miu.com/read-1145791.html

最新回复(0)