[PyTorch]图解DistributedDataParallel (DDP)的通信方式:gather,all_gather,all_reduce,reduce,scatter

在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的说法:
一般来说,任何可交换的数学运算都可以用作运算符。

猜你喜欢

转载自blog.csdn.net/ftimes/article/details/121034996