一种用于分布式训练的通信方法及系统技术方案

技术编号:30526390 阅读:14 留言:0更新日期:2021-10-27 23:11
本发明专利技术涉及通信技术领域,具体公开了一种用于分布式训练的通信方法及系统,方法包括如下步骤:参数计算步骤,计算集合通信中涉及的参数;请求集合通信步骤,对数据进行逻辑分块形成若干数据段,将数据段打包为网络包,向网卡模块发送网络包和包括参数的控制信号;数据段提取步骤,网卡模块根据控制信号将网络包中的数据段存储至数据缓冲区;聚合计算步骤,网卡模块从数据缓冲区取出数据段,执行聚合计算操作;将聚合计算操作后的数据段按照预设的格式打包为网络包发送出网卡模块。采用本发明专利技术的技术方案能够简化集合通信步骤,从而降低集合通信的延时。通信的延时。通信的延时。

【技术实现步骤摘要】
一种用于分布式训练的通信方法及系统


[0001]本专利技术涉及通信
,特别涉及一种用于分布式训练的通信方法及系统。

技术介绍

[0002]随着深度学习中神经网络参数和数据规模的扩大,单次训练的成本不断上升,分布式训练成为目前进行大规模训练的主流方法。为了减少由于网络通信导致的性能瓶颈,当前主要采用参数服务器和集合通信两种设计模式。在数据并行中,以All

Reduce为代表的集合通信为当前性能最优、最主流的方法。
[0003]当前深度学习训练中普遍会采用GPU等异构架构的计算部件。由于机内、机间网络的不同质现象以及集合通信All

Reduce设计计算操作,导致整体集合通信存在步骤多、流程长的问题,而在任何步骤中存在网络带宽或延迟瓶颈都会导致整体集合通信性能损失。
[0004]为此,需要一种能够简化集合通信步骤的用于分布式训练的通信方法及系统。

技术实现思路

[0005]本专利技术的目的之一在于提供一种用于分布式训练的通信方法,能够简化集合通信步骤。
[0006]为了解决上述技术问题,本申请提供如下技术方案:
[0007]一种用于分布式训练的通信方法,包括如下步骤:
[0008]参数计算步骤,计算集合通信中涉及的参数;
[0009]请求集合通信步骤,对数据进行逻辑分块形成若干数据段,将数据段打包为网络包,向网卡模块发送网络包和包括参数的控制信号;
[0010]数据段提取步骤,网卡模块根据控制信号将网络包中的数据段存储至数据缓冲区;
[0011]聚合计算步骤,网卡模块从数据缓冲区取出数据段,执行聚合计算操作;将聚合计算操作后的数据段按照预设的格式打包为网络包发送出网卡模块。
[0012]基础方案原理及有益效果如下:
[0013]本方案中,通过计算集合通信中涉及的参数,便于后续网卡模块根据参数准确执行聚合计算。通过将数据分为若干数据段,可以减小每次聚合计算处理的数据量,以降低对网卡运算性能的需求。网卡模块将网络包中的数据段存储至数据缓冲区,便于后续计算时的调用。在现有的集合通信中,主要由服务器内的各个GPU之间依次进行聚合计算,网卡主要用于服务器之间的聚合计算结果的传输,导致一次完整的聚合计算需要所有的GPU都参与进来,GPU越多,整个集合通信的步骤也就越长。本方案中,由网卡模块进行聚合计算,多个网卡模块之间可以进行环形集合通信,能有效简化集合通信步骤,从而降低集合通信的延时。
[0014]进一步,所述请求集合通信步骤,具体包括:
[0015]S1,对数据进行逻辑分块形成若干数据段,数据段的数量为:N=S/Sa,其中S为数
据的总大小,Sa为网卡模块一次数据传输的量;初始化循环变量i=1;
[0016]S2,向网卡模块发送包括参数的控制信号,参数包括应用ID和数据ID;
[0017]S3,将第i个数据段打包为网络包并发送;
[0018]S4,每发送一个数据段,i递增1,判断i是否小于或等于N,若是则返回步骤S2,否则转跳至步骤S5;
[0019]S5,结束数据段的发送。
[0020]将数据段的大小限制在Sa,可以确保网卡模块能够接收。每发送一个数据段,都进行计数,可以确保最后所有的数据段都被发送,避免出现漏发的情况。
[0021]进一步,还包括控制信号接收步骤,网卡模块接收控制信号;根据控制信号判断网络包的类型,若是正常网络包,则跳转至正常处理步骤,否则跳转至集合通信处理步骤;
[0022]正常处理步骤,网卡模块接收网络包,并按照正常流程处理网络包;
[0023]集合通信处理步骤,网卡模块接收网络包,并按照集合通信的流程处理网络包。
[0024]网卡模块能兼顾正常网络包,以及集合通信网络包的处理。
[0025]进一步,所述数据缓冲区包括若干数据缓冲单元,数据缓冲单元包括机内状态位、机间状态位和数据位;机内状态位,用于记录机内处理的状态,机间状态位,用于记录机间环形集合通信的状态,数据位,用于记录需要通信或计算的数据段。
[0026]可以利用硬件资源即数据缓冲单元,快速有效检测数据段状态,可以提高聚合计算的效率。
[0027]进一步,所述数据段提取步骤中,还从控制信号中提取应用ID和数据ID,缓存至网卡模块的控制信息存储中;再将网络包中的数据段存储至数据缓冲单元中,并将各存储位的缓冲单元地址信息缓存至控制信息存储中。
[0028]将各存储位的缓冲单元地址信息缓存至控制信息存储中,便于后续聚合计算时准确调用数据。
[0029]进一步,所述聚合计算步骤中,还根据控制信息存储中的各存储位的缓冲单元地址信息,取出相应的数据缓冲单元的数据位中的数据段,以及机内状态位的信息和机间状态位的信息,执行聚合计算操作。
[0030]通过机内状态位的信息和机间状态位的信息,可以了解数据段当前在机内的处理情况,以及是否涉及机间的处理。
[0031]进一步,所述聚合计算步骤中,网卡模块将应用ID位、数据ID位、机内状态位、机间状态位和数据位添加到网络包中。
[0032]到达了在数据段传输中添加部分控制信息的目的,从而使得的普通的网络包可以在本方案的网卡模块中进行聚合计算处理。
[0033]进一步,还包括过程监控步骤,判断是否不存在需要处理的数据缓冲单元,若不存在则跳转至结束步骤,否则跳转至数据段提取步骤;
[0034]结束步骤,结束本次网络包处理流程,发送包含完成信息的控制信号。
[0035]进一步,还包括检测步骤,根据网卡模块传回的控制信号判断集合通信是否完成,若完成,结束集合通信。
[0036]通过参数计算步骤、请求集合通信步骤和检测步骤可以构建针对网络模块的通信原语,从而实现集合通信功能。
[0037]本专利技术的目的之二在于,提供一种用于分布式训练的通信系统,包括若干一一对应的服务器模块和网卡模块,服务器模块包括若干异构计算单元或处理单元;处理单元或异构计算单元用于执行上述参数计算步骤和请求集合通信步骤;网卡模块用于执行上述数据段提取步骤和聚合计算步骤。
[0038]本方案中,处理单元或异构计算单元计算集合通信中涉及的参数,便于调用网卡模块根据参数执行聚合计算。多个网卡模块之间可以进行环形集合通信,能有效简化集合通信步骤,从而降低集合通信的延时。
附图说明
[0039]图1为实施例一的调用者处理集合通信的流程图;
[0040]图2为实施例一请求集合通信步骤的流程图;
[0041]图3为实施例一网卡模块处理集合通信的流程图;
[0042]图4为实施例一数据缓冲区的示意图;
[0043]图5为实施例一数据缓冲单元构成的示意图;
[0044]图6为实施例一网卡模块间通信的网络包构成示意图;
[0045]图7为实施例二传统多机多卡集合通信实现示意图;
[0046]图8为实施例二本方本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于分布式训练的通信方法,其特征在于,包括如下步骤:参数计算步骤,计算集合通信中涉及的参数;请求集合通信步骤,对数据进行逻辑分块形成若干数据段,将数据段打包为网络包,向网卡模块发送网络包和包括参数的控制信号;数据段提取步骤,网卡模块根据控制信号将网络包中的数据段存储至数据缓冲区;聚合计算步骤,网卡模块从数据缓冲区取出数据段,执行聚合计算操作;将聚合计算操作后的数据段按照预设的格式打包为网络包发送出网卡模块。2.根据权利要求1所述的用于分布式训练的通信方法,其特征在于:所述请求集合通信步骤,具体包括:S1,对数据进行逻辑分块形成若干数据段,数据段的数量为:N=S/Sa,其中S为数据的总大小,Sa为网卡模块一次数据传输的量;初始化循环变量i=1;S2,向网卡模块发送包括参数的控制信号,参数包括应用ID和数据ID;S3,将第i个数据段打包为网络包并发送;S4,每发送一个数据段,i递增1,判断i是否小于或等于N,若是则返回步骤S2,否则转跳至步骤S5;S5,结束数据段的发送。3.根据权利要求2所述的用于分布式训练的通信方法,其特征在于:还包括控制信号接收步骤,网卡模块接收控制信号;根据控制信号判断网络包的类型,若是正常网络包,则跳转至正常处理步骤,否则跳转至集合通信处理步骤;正常处理步骤,网卡模块接收网络包,并按照正常流程处理网络包;集合通信处理步骤,网卡模块接收网络包,并按照集合通信的流程处理网络包。4.根据权利要求3所述的用于分布式训练的通信方法,其特征在于:所述数据缓冲区包括若干数据缓冲单元,数据缓冲单元包括机内状态位、机间状态位和数据位;机内状态位用于记录机内处理的状态,机间状态位用于...

【专利技术属性】
技术研发人员:谭光明朱泓睿马潇潇王展元国军安学军
申请(专利权)人:中科计算技术西部研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1