2
它只能防止异步更新,还是会导致对变量的其他访问等待更新?我同时使用相同的模型进行训练和推理,并且要确保推理总是在一致的模型上完成。什么是use_locking = True在TensorFlow优化器中做什么?
它只能防止异步更新,还是会导致对变量的其他访问等待更新?我同时使用相同的模型进行训练和推理,并且要确保推理总是在一致的模型上完成。什么是use_locking = True在TensorFlow优化器中做什么?
当创建TensorFlow optimizer或变量assignment op时,通过use_locking=True
会导致在变量的相关更新周围获取锁定。将使用use_locking=True
创建的同一变量上的其他优化器/赋值将被序列化。
然而,有两个警告,你应该考虑使用该选项时承担:
读取到下锁不执行变量,因此可以看到中间状态和部分应用的更新。序列化读取需要额外的协调,例如由tf.train.SyncReplicasOptimizer
提供的协调。
写入(优化器/赋值)与use_locking=False
相同的变量仍然是可能的,并且不会获取该锁。程序员负责确保不会发生这些写操作。