今天无聊看到了ring-allreduce的gpu通信算法,本来希望在
相关网页
上看看相关介绍的,但是在baidu research上却搜不到相关的东西,后来看了看
baidu-allreduce
代码的注释,才明白。这是一个说明起来挺简单的算法,自己打算随便说说。
觉得英文好的可以直接看看GitHub上注释,写的很清晰:
https://github.com/baidu-research/baidu-allreduce/blob/master/collectives.cu#L156
如无特殊说明,本博客的图片都来自于
知乎上的一个回答
,主要原因是baidu research上找不到这篇文章,所以相关的图例只在这个知乎回答里找到了
一般的多卡gpu训练有一个很大的缺陷,就是因为每次都需要一个gpu从其他gpu上收集训练的梯度,然后将新的模型分发到其他gpu上。如下图:
版权声明:本文为dpppBR原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。