【发布时间】:2019-04-29 03:37:43
【问题描述】:
Horovod 将NCCL 和 MPI 组合成一个用于分布式深度学习的包装器,例如 TensorFlow。 我以前没有听说过 NCCL,正在研究它的功能。 NVIDIA网站上关于NCCL的说明如下:
NVIDIA 集合通信库 (NCCL) 实现了针对 NVIDIA GPU 进行了性能优化的多 GPU 和多节点集合通信原语。
从关于 NCCL 的 introduction video 我了解到 NCCL 通过 PCIe、NVLink、Native Infiniband、以太网工作,它甚至可以检测通过 RDMA 的 GPU Direct 在当前硬件拓扑中是否有意义并透明地使用它。
所以我质疑为什么 Horovod 需要 MPI?据我了解,MPI 还用于通过 allreduce 范式在分布式节点之间有效地交换梯度。但据我了解,NCCL 已经支持这些功能。
那么 MPI 是否仅用于轻松调度集群上的作业?对于 CPU 上的分布式深度学习,因为我们不能在那里使用 NCCL?
如果有人能解释 MPI 和/或 NCCL 在哪些场景中用于分布式深度学习,以及他们在训练工作中的职责是什么,我将不胜感激。
【问题讨论】:
-
this 没有回答您的问题吗?
-
我的问题更针对于在 Horovod 培训期间使用 NCCL 的哪些操作以及 MPI 仍然需要哪些操作,因为它们在功能上重叠很多。
-
@Alex:也许this presentation 可以给你一些关于在 Horovod 中使用 MPI 的提示。
标签: python tensorflow deep-learning mpi