关于all_reduce

本文介绍了分布式训练中的同步和异步方法,重点讲解了AllReduce算法,包括其基本原理、主从式实现的局限以及RingAllReduce算法如何通过环形结构减少数据传输量,从而避免网络瓶颈问题。
摘要由CSDN通过智能技术生成

分布式训练一般分为同步训练和异步训练:

  • 同步训练中所有的worker读取mini-batch的不同部分,同步计算损失函数的gradient,最后将每个worker的gradient整合之后更新模型。
  • 异步训练中每个worker独立读取训练数据,异步更新模型参数。
  • 通常同步训练利用AllReduce来整合不同worker计算的gradient,异步训练则是基于参数服务器架构(parameter server)。

AllReduce其实是一类算法,目标是高效得将不同机器中的数据整合(reduce)之后再把结果分发给各个机器。在深度学习应用中,数据往往是一个向量或者矩阵,通常用的整合则有Sum、Max、Min等。下图展示了AllReduce在有四台机器,每台机器有一个长度为四的向量时的输入和输出。

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

AllReduce还有很多种不同的实现,多数实现都是基于某一些对数据或者运算环境的假设,来优化网络带宽的占用或者延迟。

Ring AllReduce算法

Ring AllReduce算法分为两个阶段:

  • 将N个worker分布在一个环上,并且把每个worker的数据分成N份,接下来我们具体看第k个worker,这个worker会把第k份数据发给下一个worker,同时从前一个worker收到第k-1份数据。之后worker会把收到的第k-1份数据和自己的第k-1份数据整合,再将整合的数据发送给下一个worker。以此循环N次之后,每一个worker都会包含最终整合结果的一份。
  • 每个worker将整合好的部分发送给下一个worker。worker在收到数据之后更新自身数据对应的部分即可。

假设每个worker的数据是一个长度为S的向量,那么个Ring AllReduce里,每个worker发送的数据量是O(S),和worker的数量N无关。这样就避免了主从架构中master需要处理O(S*N)的数据量而成为网络瓶颈的问题。

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,我了解到du.all_reduce可能是一个函数或方法的名称。在引用中,给出了一系列方法的调用,但是不清楚与du.all_reduce有何关联。引用中介绍了TensorFlow中的tf.reduce_sum操作,该操作用于在指定维度上对张量进行求和。然而,并没有直接与du.all_reduce相关的信息。引用中提到了一些与名称操作相关的方法,但同样无法确定与du.all_reduce的联系。 由于缺乏具体相关信息,我无法给出du.all_reduce的确切含义或用途。如果您能提供更多关于du.all_reduce的上下文或参考资料,我将能够更准确地回答您的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【Python之路Day4】基础篇](https://blog.csdn.net/weixin_29051245/article/details/113503326)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [对tf.reduce_sum tensorflow维度上的操作详解](https://download.csdn.net/download/weixin_38506713/14863879)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值