跳到主内容
快讯直播
AI智模界
AI 词典

计算通信重叠:让 GPU 边算边传的省时术

计算通信重叠(Compute-Communication Overlap)是分布式训练里的一种调度技巧:让 GPU 在做计算的同时,把需要跨设备传输的数据传出去,用计算时间“盖住”通信时间,从而缩短整体训练耗时。

为什么需要它?以数据并行(Data Parallel)为例。每张卡先算前向和反向,再通过 AI 词典:AllReduce">AllReduce 汇总梯度。如果严格串行,流程是“算完—等通信—再更新”,通信期间计算单元闲着。模型越大,梯度越多,等待越明显。重叠的做法是把梯度切成小块:反向传播算到某一层,就把这层梯度立刻发出去做 AllReduce,同时继续算前面层的反向。通信和计算在不同硬件流上并行,等最后一块梯度算完时,很多通信已经做完了。

另一个常见场景是流水线并行(Pipeline Parallel)。一张卡算当前微批次(micro-batch)的第 k 层,同时把上一层算好的激活值发给下一张卡;下游卡收到后接着算。原本“发完再算”的串行链条,变成“边发边算”的并行链条。

打个比方:仓库打包发货。串行做法是等所有包裹打包完,再叫车统一装运;装车时打包工只能干等。重叠做法是边打包边把已完成包裹装车,司机和打包工同时干活。省下的时间不是车开得更快,而是把“等车”的空档填上了。

但重叠不是魔法。它的理论上限取决于较慢的那一边:若计算耗时 10 毫秒、通信耗时 8 毫秒,理想重叠后约等于 10 毫秒,而不是 18 毫秒;若通信耗时 20 毫秒,则仍有 10 毫秒暴露在外。通信量过大、计算太碎、依赖关系太紧时,收益会下降。它还依赖异步通信、独立计算流、可切分的通信块,以及通信库和框架的支持。

和相邻概念的区别:

方法主要作用是否减少通信量
计算通信重叠把通信塞进计算空档不减少
通信压缩压缩梯度或激活值减少
梯度累积攒几次再通信降低通信频率

对从业者来说,重叠做得好不好,不能只看代码里有没有异步调用,要看 profiling(性能剖析)里通信是否真被隐藏、计算利用率是否上来。普通职场人可以把它理解成“并行处理”的老智慧:别让快的人等慢的人,让两边同时动起来。具体支持情况以所用框架和通信库的官方页面为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。