在进行分布式异步训练时,需要让所有工作人员在某个时间等待同步模型参数,例如,在完成一个纪元时同步并计算验证集上的auc。
MPI_BARRIER在使用MPI时已经足够了,张量流中是否有类似内容?
答案 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 在本地运行同步训练循环