关于paddle框架中hierarchical allreduce(2D ncclallreduce)代码实现以及使用方法的疑问
Created by: Frank00001
我仔细浏览了paddle针对2D ncclallreduce算法开源的代码,主要有两点疑问: 1、在机器内,各个节点是否应该使用ncclreducescatter进行同步通信? 根据腾讯提出的hirerarchical allreduce,如下图所示,在第一阶段各个组内intra rings时,每个计算节点都会接收上一个相邻节点发送的数据,并发送数据到相邻的下一个节点上,形成一个环形ring的逻辑。 但是在paddle实现这一同步算法时(Add multi-ncclcomm and 2D ncclallreduce support. #17263),第一阶段在第各个组内进行intra ring同步时,使用ncclreduce函数,这就没有构成一个环形ring的过程,请问此处代码是不是应该用ncclreducescatter进行替换? 2、关于2D ncclallreduce的使用方法 我在飞桨GPU训练优秀实践的教程中,没有找到ringallreduce以及hierarchical allreduce(2D ncclallreduce)的具体使用方法。如下图所示,如果想使用hierarchical allreduce的话,是不是设置dist_strategy.use_hierarchical_allreduce=True即可,这个参数设置未在文档中进行说明;并且ringallreduce同步方式的使用方法也未在文档中说明。
十分期待您的解答!