它是否只防止异步更新,还是还会导致对变量的其他访问等待更新?我同时使用相同的模型进行训练和推理,并希望确保推理总是在一致的模型上完成。
在创建TensorFlow优化器或变量赋值操作时传递use_locking=True
,会导致在变量的相关更新周围获取锁。对同样用use_locking=True
创建的变量的其他优化器/赋值将被序列化。
对变量的读取不是在锁下执行的,因此可以看到中间状态和部分应用的更新。序列化读需要额外的协调,如
tf.train.SyncReplicasOptimizer
提供的。对
use_locking=False
相同变量的写(优化器/赋值)仍然是可能的,并且不会获得锁。程序员负责确保这些写操作不发生。