本发明涉及新兴信息技术相关,特别是云计算领域 ,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所述的一种针对智算场景下的网络加速装置,其特征在于,还包括,