一种基于AllReduce分布式训练梯度压缩加速方法与流程

文档序号:24335785发布日期:2021-03-19 12:16阅读:164来源:国知局
一种基于AllReduce分布式训练梯度压缩加速方法与流程

本发明涉及深度学习技术领域,具体涉及一种基于allreduce分布式训练梯度压缩加速方法。



背景技术:

现有的基于参数服务器方式的中心化分布式训练方法,或者基于稀疏方法选取部分梯度值中存在一些问题,比如,基于稀疏的方法对梯度信息损失比较大;在intra-node和inter-node使用相同的梯度压缩方法,梯度信息损失进一步加大;paramsserver通信结构相对于allreduce本身具有带宽瓶颈。



技术实现要素:

本发明提供一种基于allreduce分布式训练梯度压缩加速方法,能够解决训练大型模型参数同步通信带宽问题。

本发明解决上述技术问题的技术方案如下:

根据本发明实施例的一个方面,提供一种基于allreduce分布式训练梯度压缩加速方法,包括:采用allreduce分布式深度梯度压缩训练架构,所述allreduce分布式深度梯度压缩训练架构中,不存在参数服务器,工作机之间形成环形闭环传递路径,gpu之间传递压缩后梯度;以及将节点内压缩模块中将梯度从fp32转成fp16;并使用误差反馈随机梯度下降算法压缩梯度。

优选地,所述误差反馈随机梯度下降算法包括:针对每一次训练进行解压缩得到值pt。

优选地,所述误差反馈随机梯度下降算法还包括:使用梯度压缩算法对值pt进行梯度压缩。

优选地,值pt为pt=ηgt+et,其中,gt为随机梯度下降值,et为偏差值。

优选地,et初始值为0。

优选地,所述梯度压缩实施为:采用topk算法,取梯度前k个值pt进行数据整合。

优选地,所述误差反馈随机梯度下降算法还包括:更新参数:xt+1=xt-δt,et+1=pt-δt。

据本发明实施例的另一个方面,提供一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行前述基于allreduce分布式训练梯度压缩加速方法。

从而,针对intra-node将fp32转成fp16,针对inter-node使用ef-sgd方法压缩梯度,相对于稀疏方法损失降低。并且,allreduce架构相对于paramsserver通信结构消除了带宽瓶颈。

附图说明

图1为paramsserver结构的分布式深度梯度压缩训练架构示意图;

图2为本发明基于allreduce的分布式深度梯度压缩训练架构;

图3为本发明实施例提供的ringallreduce架构示意图;

图4为本发明实施例提供的节点连接示意图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

本发明实施例提供的一种基于allreduce分布式训练梯度压缩加速方法。下面进行详细讲解。

图1为paramsserver(ps)结构的分布式深度梯度压缩训练架构,图2为本发明实施例基于allreduce的分布式深度梯度压缩训练架构。其中ps架构每个机器各自的gpu组成闭环,传递intra-node压缩后梯度;工作机之间无通信连接,工作机和参数服务器之间传递inter-node压缩后梯度。allreduce架构不存在参数服务器,工作机之间形成环形闭环传递路径,gpu之间传递压缩后梯度。

allreduce其实是一类算法,目标是高效得将不同机器中的数据整合(reduce)之后再把结果分发给各个机器。在深度学习应用中,数据往往是一个向量或者矩阵,通常用的整合则有sum、max、min等。

allreduce具体实现的方法有很多种,最单纯的实现方式就是每个worker(可以为gpu)将自己的数据发给其他的所有worker,然而这种方式存在大量的浪费。

一个略优的实现是利用主从式架构,将一个worker设为master,其余所有worker把数据发送给master之后,由master进行整合元算,完成之后再分发给其余worker。不过这种实现master往往会成为整个网络的瓶颈。

ringallreduce作为allreduce的一种形式,如图3所示。不同gpu间的数据是环形传递,假设p为gpu数量,n为传递参数的分块数,则每一个gpu需要传递的参数量为2n/p(p-1)。

这里可以发现,参数传递量和p(也就是gpu数量)无关,即通信的带宽不随着gpu数量的增加而增加;反观ps结构,参数传递量随着工作机数量增大而增大,相对allreduce方法具备带宽瓶颈。

并且,由于同机器之间gpu和不同机器之间的带宽不同,所以使用相同的梯度压缩算法不是最优的组合。

如图4所示,由于节点内(intra-node)是gpu之间通过nvlink、pcieswicth或者pciehostbridge连接,速度和带宽远远超过服务器之间的网卡。所以采用稀疏算法会大大的损耗模型训练过程中的梯度信息,所以在节点内压缩(intra-nodecompress)模块只将梯度从fp32转成fp16,不仅仅可以减少一半的通信带宽,而且对于神经网络优化器训练网络向前传递和向后传递精度影响很小。

节点间(inter-node)由于受到服务器之间网络带宽影响,在精度影响较小的情况下尽量压缩梯度。

使用误差反馈随机梯度下降error-feedback-sgd(ef-sgd)算法:

步骤如下:

1.针对每一次训练进行解压缩,得到pt=ηgt+et,gt为随机梯度下降值这里et为偏差值,初始值为0。

2.δt=c(pt),c为梯度压缩算法,这里我们采用topk算法,即取梯度前k个值进行数据整合(reduce)。

3.更新参数xt+1=xt-δt,et+1=pt-δt。

本发明的ef-sgd方法在imagenet训练resnet50加速10%情况下,准确率持平。

从而,针对intra-node将fp32转成fp16,针对inter-node使用ef-sgd方法压缩梯度,相对于稀疏方法损失降低。并且,allreduce架构相对于paramsserver通信结构消除了带宽瓶颈。

本发明实施例提供的一种基于allreduce分布式训练梯度压缩加速方法可以软件功能模块的形式实现并作为独立的产品销售或使用,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1