我试图使用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版本。
有这样的例子吗?或者有人知道如何实现它?
发布于 2021-07-23 09:22:01
我已经解决了这个问题。如错误消息所示,aggregation_counter变量未初始化。我在用sess.run(tf.global_variables_initializer())。为了解决这个问题,我添加了sess.run(tf.local_variables_initializer())。这样做已经成功了。我还不确定为什么全局变量初始化器无法初始化aggregation_counter变量。
https://stackoverflow.com/questions/68222820
复制相似问题