use_locking = True在TensorFlow优化器中做了什么?

dan*_*jar 6 multithreading locking tensorflow

它是否只能防止异步更新,还是会导致对变量的其他访问等待更新?我在同一时间使用相同的模型进行训练和推理,并希望确保始终在一致的模型上进行推理.

mrr*_*rry 10

use_locking=True在创建TensorFlow 优化器或变量赋值 op 时传递会导致围绕变量的相关更新获取锁定.同时创建的同一变量的其他优化器/赋值use_locking=True将被序列化.

但是,使用此选项时,您应该记住两个注意事项:

  • 在锁定下不执行对变量的读取,因此可以看到中间状态和部分应用的更新.序列化读取需要额外的协调,例如提供的协调tf.train.SyncReplicasOptimizer.

  • 写入(优化器/赋值)到同一个变量use_locking=False仍然是可能的,并且不会获得锁定.程序员负责确保不会发生这些写操作.