在分布式TensorFlow中,是否可以跨不同的工作人员共享相同的队列?

时间:2016-09-19 17:03:56

标签: tensorflow

在TensorFlow中,我希望在不同机器上的不同工作人员之间共享一个文件名队列,这样每台机器都可以获得要训练的文件子集。我搜索了很多,似乎只有变量可以放在PS任务上进行共享。有没有人有任何例子?感谢。

1 个答案:

答案 0 :(得分:16)

通过在创建队列时设置可选的shared_name参数,可以跨工作程序共享相同的队列。与tf.Variable对象一样,您可以将队列放在可以从不同工作人员访问的任何设备上。例如:

with tf.device("/job:ps/task:0"):  # Place queue on parameter server.
  q = tf.FIFOQueue(..., shared_name="shared_queue")

一些注意事项:

  • shared_name的值必须对您要共享的特定队列唯一。不幸的是,Python API目前不使用作用域或自动名称统一来使这更容易,因此您必须手动确保这一点。

  • 您无需将队列放在参数服务器上。一种可能的配置是设置一个额外的"输入作业" (例如"/job:input")包含一组执行预处理的任务,并导出共享队列以供工作人员使用。