使用 Tensorflow 的 Horovod 局部梯度聚合 1.X

Local Gradient Aggregation for Horovod using Tensorflow 1.X

我正在尝试使用 Horovod 在不同的服务器上分发训练 GPU。按照建议 Here.

我想实现局部梯度聚合。在解释中修改看起来很简单 optimizer = hvd.DistributedOptimizer(opt, backward_passes_per_step=4).
但是尝试在我的示例模型中使用它会导致以下错误。

tensorflow.python.framework.errors_impl.FailedPreconditionError: 2 root error(s) found.
[1,4]<stderr>:  (0) Failed precondition: Attempting to use uninitialized value aggregation_variables_4/aggregation_counter
[1,4]<stderr>:   [[node aggregation_variables_4/aggregation_counter/read

我使用的是原生 TensorFlow 1.15,不是 keras 或最新的 tensorflow 版本。

有这方面的工作示例吗?或者有人知道如何实施吗?

我已经解决了问题。如错误消息中所示 aggregation_counter 变量未初始化。我正在使用 sess.run(tf.global_variables_initializer())。为了解决这个问题,我添加了 sess.run(tf.local_variables_initializer())。这样做已经成功了。我还不确定为什么全局变量初始化程序无法初始化 aggregation_counter 变量。