1

我是 TensorFlow 的新手。我目前很想跟踪检查点的 IO 时间和带宽(最好是检查点训练过程中所用 IO 时间的百分比),这是由高级提供的内部检查点机制执行的tf.train.MonitoredTrainingSession,可以通过添加一段 tf.train.CheckpointSaverHook时间来初始化tf.train.MonitoredTrainingSession.

我正在考虑使用一个tf.train.CheckpointSaverListener(即使用before_saveafter_save方法)来记录时间和跟踪IO。但是我有一个问题,我正在考虑的这种日志记录技术会给我一个适当的百分比计算(即Time taken for checkpointing IO / Time taken for Training * 100%)吗?

我怀疑,这个检查点是通过与训练不同的线程异步完成的。我一直在研究 TensorFlow 代码以找出答案,但我认为在这里提出这个问题可以加速我的探索。

我愿意接受任何关于使用任何其他替代技术的建议(例如使用 TensorBoard、IO 分析工具等)

4

1 回答 1

1

我相信会的。

检查点不是异步完成的。您希望检查点包含变量/参数的一致快照,因此不希望检查点与可能更新参数值的其他操作异步。

CheckpointSaverHook显式使用来Session执行保存检查点(源代码)并等待它完成的操作(它基本上是调用tf.train.Saver.save)。

因此,您认为应该可以正常工作 -以您程序中任何其他 sCheckpointSaverListener所花费的时间为模。CheckpointSaverListener

希望有帮助。

于 2018-07-11T02:37:57.073 回答