标签: horovod

如何查看NCCL的版本

我远程访问高性能计算节点。我不确定 NVIDIA Collective Communications Library (NCCL) 是否安装在我的目录中。有没有办法检查NCCL是否安装?

python nvidia tensorflow horovod

11
推荐指数
1
解决办法
2万
查看次数

将数据从 `tf.data.Dataset` 分发给多个工作人员(例如 Horovod)

使用 Horovod,您基本上运行 N 个独立实例(因此它是图间复制的一种形式),并且它们通过特殊的 Horovod 操作(基本上是广播 + 减少)进行通信。

现在让我们说实例 0 或其他一些外部实例加载您的数据(通过tf.data.Dataset)。你将如何分发iterator.get_next()到每个实例?使用 Horovod 广播效率低下,因为您会将所有数据复制到所有实例。

在每个实例中都有数据集,并在那里完成所有加载,然后shard在数据集上使用也将是低效的,因为您会在任何地方加载数据,然后丢弃 (N-1)/N 个数据。所以这就是为什么也不想要分片,而是只在单个(生产者/数据集工作人员)实例中加载数据集,然后将批次分发给所有火车工作人员。

我猜 TFMultiDeviceIterator提供了一些类似的功能(或基本上完全相同),但我不确定它是否与 Horovod 一起使用,以及您将如何设置它?

或者,也许您可​​以通过 TF 工作人员以某种方式进行分发(指南?(也许这也是您的配置MultiDeviceIterator方式?)

如果可能的话,这应该通过 TensorFlow 操作/函数(有许多相关的函数可能已经给了我这个,但我可能不知道它们,或者误解了它是如何工作的)。或者也许答案是 TensorFlow 还没有提供任何这样的功能?(知道这仍然很有用。然后我会用 C++ 实现我自己的解决方案,包装为 TensorFlow。但在此之前,最好知道这是否真的有必要。)

(相关的还有这个 Horovod 问题。)

(这个问题实际上比 Horovod 更通用一些,尽管 Horovod 可能是一个很好的例子。对于分布式 TensorFlow,您可能总是遇到这个问题?)

(我收集了所有的概述分布式TensorFlow术语和方面在这里,多为澄清。)

(相关的是(也许?)还有这个这个这个这个这个问题。)

python tensorflow tensorflow-datasets horovod

8
推荐指数
1
解决办法
986
查看次数

Tensorflow镜像策略和Horovod分布策略

我试图了解 Tensorflow 镜像策略和 Horovod 分布策略之间的基本区别是什么。

从文档和源代码调查中,我发现 Horovod ( https://github.com/horovod/horovod ) 正在使用消息传递协议 (MPI) 在多个节点之间进行通信。具体来说它使用了MPI的all_reduce、all_gather。

根据我的观察(我可能是错的)镜像策略也使用 all_reduce 算法(https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/distribute)。

他们都使用数据并行、同步训练方法。所以我有点困惑他们有什么不同?差异仅在实现上还是存在其他(理论上)差异?

镜像策略与horovod相比性能如何?

mpi deep-learning tensorflow horovod distributed-tensorflow

5
推荐指数
1
解决办法
882
查看次数