分布式执行开始后,如何将输入运算符添加到tensorflow图中?
我想使用分布式tensorflow以流式方式使用参数服务器对模型进行训练。worker设置类似于以下内容:分布式执行开始后,如何将输入运算符添加到tensorflow图中?,tensorflow,Tensorflow,我想使用分布式tensorflow以流式方式使用参数服务器对模型进行训练。worker设置类似于以下内容: def列_模型(文件名、参数): 带tf.装置(tf.train.replica\u装置\u setter( worker_device='/job:worker/task:%d'%params.task_index,cluster=cluster]: input\u op=构造\u输入\u op(文件名) 全局_步长=tf.变量(0) 列车运行=构造列车运行(输入运行、全局运行、参数)
def列_模型(文件名、参数):
带tf.装置(tf.train.replica\u装置\u setter(
worker_device='/job:worker/task:%d'%params.task_index,cluster=cluster]:
input\u op=构造\u输入\u op(文件名)
全局_步长=tf.变量(0)
列车运行=构造列车运行(输入运行、全局运行、参数)
init_op=tf.global_variables_initializer()
saver=tf.train.saver(tf.global\u variables()+tf.local\u variables())
主管=tf.train.supervisor(
is_chief=params.task_index==0,
logdir=参数培训\总结\目录,
init_op=init_op,
储蓄者=储蓄者,
全局步=全局步,
保存模式(秒=0)
将supervisor.managed_会话(server.target)作为sess:
虽然不是supervisor.should_stop()和step您可以在图形对象上尝试。_unsafe_unfinalize(),但更可靠的解决方案是提前创建所有需要的操作(在同时运行图形时修改图形会导致性能/线程安全问题)您可以尝试。\u unsafe_unfinalize()
在图形对象上,尽管一个更健壮的解决方案是提前创建所需的所有操作(在运行图形时/同时修改图形会导致性能/线程安全问题)@YaroslavBulatov-您能回答这个问题吗?谢谢
def train_model(filenames, params):
with tf.device(tf.train.replica_device_setter(
worker_device='/job:worker/task:%d' % params.task_index, cluster=cluster)):
input_op = construct_input_op(filenames)
global_step = tf.Variable(0)
train_op = construct_train_op(input_op, global_step, params)
init_op = tf.global_variables_initializer()
saver = tf.train.Saver(tf.global_variables() + tf.local_variables())
supervisor = tf.train.Supervisor(
is_chief=params.task_index == 0,
logdir=params.training_summary_dir,
init_op=init_op,
saver=saver,
global_step=global_step,
save_model_secs=0)
with supervisor.managed_session(server.target) as sess:
while not supervisor.should_stop() and step <= params.max_steps:
sess.run(train_op)
supervisor.stop()
cluster = tf.train.ClusterSpec({"ps": [params.param_server_host], "worker": params.worker_hosts})
server = tf.train.Server(cluster, job_name="worker", task_index=params.task_index)
while True:
filenames = wait_for_new_training_data(...)
train_model(filenames, params)