在TensorFlow中,我希望在不同机器上的不同工作人员之间共享一个文件名队列,这样每台机器都可以获得要训练的文件子集。我搜索了很多,似乎只有变量可以放在PS任务上进行共享。有没有人有任何例子?感谢。
答案 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"
)包含一组执行预处理的任务,并导出共享队列以供工作人员使用。