大模型分布式并行技术--数据并行优化
创始人
2025-07-05 10:31:41
0

通信融合

从上文知道数据并行中需要同步每一个模型梯度, 这是通过进程间的 Allreduce 通信实现的。如果一个模型 有非常多的参数,则数据并行训练的每一个 step 中会有非常多次的 Allreduce 通信,下图为融合梯度同步示例。

融合梯度同步示例融合梯度同步示例

通信的耗时可以从通信延迟(lantency) 和数据传输时间消耗两方面考虑。单次通信延迟时间相对固定, 而 传输时间由通信的数据量和带宽决定。减少总的通信消耗, 可以通过减少通信频率来实现, 通信融合是一个可 行的手段,通过将 N 个梯度的 Allreduce 通信合并成一次 Allreduce 通信,可以减少 N- 1 次通信延迟时间。

常用的 Allreduce 融合实现方式是在通信前将多个梯度 tensors 拼接成一个内存地址连续的大 tensor,梯度同 步时仅对拼接后的大 tensor 做一次 Allreduce 操作。参数更新时将大 tensor 切分还原回之前的多个小 tensors,完 成每个梯度对应参数的更新。

通信计算重叠

除了降低绝对的通信耗时,还可以从降低整体训练耗时角度来优化,可以考虑通信和计算的异步流水实现。 数据并行中的梯度同步 Allreduce 通信是在训练的反向过程中进行的, 而 Allreduce 后得到的同步梯度是在训练 的更新过程中才被使用, 在反向中并没有被使用。也就是说上一个梯度的通信和下一个梯度的计算间并没有依 赖,通信和计算可以并行,让两者的耗时相互重叠掩盖,减少反向的耗时,下图为通信计算并行相互重叠示例。

通信计算并行相互重叠示例。通信计算并行相互重叠示例。

通信和计算的重叠通常是将通信和计算算子调度到不同的流 (stream) 上实现的。通信算子调度到通信流, 计 算算子调度到计算流, 同一个流上的算子间是顺序执行的, 不同流上的算子可以并行执行, 从而实现反向中梯 度通信和计算的并行重叠。需要注意的是, 当通信和计算被调度在不同的流上执行时, 需要考虑两个流之间依 赖和同步关系。

  • 某个梯度 Allreduce 通信进行前,该梯度的反向计算已经完成。
  • 某个梯度对应参数的更新计算开始前,该梯度的 Allreduce 通信已经完成。

在梯度同步的数据并行场景中,开发者需要需要通过 stream 间的同步功能保证:

以上两个方法是数据并行中常用的减少通信时间消耗, 提高并行加速比的优化策略。如果能做到通信和计 算的重叠程度越高,那么数据并行的加速比越接近 100% ,多卡并行对训练吞吐提升的效率也就越高。

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...