0

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

我想实现局部梯度聚合。在解释中,修改看起来很容易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 版本。

有一个可行的例子吗?或者有人知道如何实现它?

4

1 回答 1

0

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

于 2021-07-23T09:22:01.987 回答