2016-10-03 29 views
2

我跑的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。

回答

0

看起來像這樣是正確的,並且在PS上執行出列操作。只是工作人員依賴這個操作,這意味着工作人員基本上正在等待成功的出隊。

相關問題