在DistributedDataParallel (DDP)中,PyTorch不仅提供了Point-to-point communication这样的底层通讯方式,也提供了gather,all_gather,all_reduce,reduce,scatter这样的经封装的通讯方式.
但在文档中没有提供详细的说明.
在查找资料的过程中,在一个tutorials找到了相应的图解,一目了然.
文中图片与参数均来自官方doc与tutorials,本文仅作为个人笔记使用.
故,其中一些细节会略去,有兴趣的朋友可以参考手册与源代码.
1. 关于Point-to-point communication
send 和 recv是基础的通信设计, 可以实现复杂的通信功能.
同样的,也可能由于设计出现一些意外,造成无限期的等待.
2. 图解gather,all_gather,all_reduce,reduce,scatter
具体使用方法可以查阅官方docs

3. 提供的OP
不知道是不是doc版本的原因,为查阅的doc并没有像open CV的doc那样提供出op的超链接.
目前收集到的有:
dist.ReduceOp.SUM,
dist.ReduceOp.PRODUCT,
dist.ReduceOp.MAX,
dist.ReduceOp.MIN.
按照tutorial的说法:
一般来说,任何可交换的数学运算都可以用作运算符。

本文介绍了PyTorch中的DistributedDataParallel(DDP)模块,特别是其提供的点对点通信以及gather, all_gather, all_reduce, reduce, scatter等集体通信操作。这些操作在分布式训练中用于数据同步和模型更新。虽然官方文档缺乏详细说明,但通过教程和实例,我们可以理解这些操作的工作原理和用途。例如,all_reduce常用于平均梯度,而gather和scatter则涉及在进程间聚合和分布数据。
2305

被折叠的 条评论
为什么被折叠?



