我跑的ubuntu AWS機器的羣集上tensorflow分佈式以來模型,並輸出經由時間表爲什麼分佈式張量流時間線追蹤將QueueDequeue操作標記爲PS操作?
# Track statistics of the run using Timeline
run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
run_metadata = tf.RunMetadata()
# Run
loss_value, step = sess.run([train_op, global_step], options=run_options, run_metadata=run_metadata)
# Create timeline and write it to a json file
tl = timeline.Timeline(run_metadata.step_stats)
ctf = tl.generate_chrome_trace_format()
with open('timeline%d.json' % FLAGS.task_id, 'w') as f:
f.write(ctf)
痕跡當我觀看由工人機我看到這個生成的時間表: Timeline Trace for Worker Machine
請注意右側的QueueDequeue操作,該時間表所指的是/ job:ps/replica:0/task:0/cpu:0(參數服務器)的一部分。
由於ScatterUpdate QueueDequeue後如右圖所示的圖像中,我相信這個操作對應於一個工人試圖出列令牌,做一個分散的更新同步複製優化操作:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/training/sync_replicas_optimizer.py#L412
但即便如此,工作人員應該執行此操作,而不是參數服務器。爲什麼時間表說參數服務器正在執行此操作?
我正在使用tensorflow 0.11,僅限CPU。