无论如何都要像张量流中的MPI_BARRIER那样做吗?

时间:2016-12-16 05:59:55

标签: tensorflow distributed-computing

在进行分布式异步训练时,需要让所有工作人员在某个时间等待同步模型参数,例如,在完成一个纪元时同步并计算验证集上的auc。

MPI_BARRIER在使用MPI时已经足够了,张量流中是否有类似内容?

1 个答案:

答案 0 :(得分:0)

您可以使用共享计数器变量来实现障碍。 IE,从Little Book of Semaphores的3.6.4开始,你可以做这样的事情

 # N is number of workers
 def barrier():
    sess.run(counter_adder_ops[0])
    while sess.run(counter_vars[0]) % N != 0:
      time.sleep(FLAGS.sleep_interval)
    sess.run(counter_adder_ops[1])
    while sess.run(counter_vars[1]) % N != 0:
      time.sleep(FLAGS.sleep_interval)
培训期间

for i in range(FLAGS.iters):
        barrier()
        sess.run(sync_op)
        barrier()
        old_val, updated_val = sess.run([local_param_var, train_op])

这里有一个完整的example  在本地运行同步训练循环