分布式TensorFlow:关于使用tf.train.Supervisor.start_queue_runners

时间:2017-01-16 21:30:11

标签: tensorflow distributed-computing

我正在查看distributed inception model in TF的代码,其中我在inception_distributed_train.py中对tf.train.Supervisor.start_queue_runners的使用提出了以下问题:

  1. 为什么我们需要明确地调用sv.start_queue_runners() inception_distributed_train.py中的264269行?在API doc. of start_queue_runners中,我发现没有必要这样做 电话原因是:

      

    请注意,图表键中收集的队列运行器密钥为QUEUE_RUNNERS   已创建会话时已自动启动   主管,所以除非你有非收集的队列运行器来启动   你不需要明确地调用它。

  2. 我注意到queue_runners的值在调用中 行sv.start_queue_runners和行264不同 inception_distributed_train.py中的269。但事实并非如此 chief_queue_runners也在收藏中 tf.GraphKeys.QUEUE_RUNNERS(所有QUEUE_RUNNERS都是在263行中获得的)?如果 所以,由于269已经存在,因此不需要行chief_queue_runners 已在第264行开始。

  3. 此外,您能否向我解释或向我展示一些关于在tf.train.Supervisor中创建队列的参考资料?

  4. 谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

不是答案,但是一些一般说明如何找到答案:)

首先,使用github的责任,inception_distributed已于4月13日签入,而start_queue_runners中的评论于4月15日被添加,因此可能会更改功能但是在所有使用它的地方都没有更新。

你可以注释掉那一行,看看事情是否仍然有效。如果没有,您可以在创建队列运行器的位置添加import pdb; pdb.set_trace()(即here),并查看谁在创建这些额外的无人值守队列运行器。

此外,Supervisor开发似乎已经放缓,事情正在转移到FooSession(来自评论here)。那些提供了更强大的培训架构(由于临时网络错误,您的工作人员不会崩溃),但是关于如何使用它们的例子并不多。