[英]Distributed TensorFlow with in-memory data
我需要隨機生成合成的內存數據(以pandas DataFrames的形式),並將其提供給分布在多個參數服務器和工作器上的TensorFlow Estimator。 我怎樣才能做到這一點? 哪個服務器應該負責生成數據,如何將它們傳遞給其他服務器? 沿着這些方向會有什么作用嗎?
def main(_):
ps_hosts = FLAGS.ps_hosts.split(",")
worker_hosts = FLAGS.worker_hosts.split(",")
#Create a cluster from the parameter server and worker hosts.
cluster = tf.train.ClusterSpec({"ps": ps_hosts, "worker": worker_hosts})
#Create and start a server for the local task.
server = tf.train.Server(cluster, job_name=FLAGS.job_name, task_index=FLAGS.task_index)
if FLAGS.job_name == "ps":
server.join()
elif FLAGS.job_name == "worker":
if FLAGS.task_index==0:
train_data, train_labels = generate_synthetic_data()
eval_data, eval_labels = generate_synthetic_data()
test_data, test_labels = generate_synthetic_data()
with tf.device(tf.train.replica_device_setter( worker_device="/job:worker/task:%d" % FLAGS.task_index, cluster=cluster)):
# Run training
train_and_evaluate()
if __name__ == "__main__":
tf.app.run(main=main, argv=[sys.argv[0]])
或者,類似地,在https://www.tensorflow.org/tutorials/estimators/linear#overview中,他們創建兩個pandas數據幀,然后將其提供給Estimator。 該代碼將如何並行化?
TF Estimators目前不容易支持單個共享輸入管道。 相反,每個工人都有自己獨立的輸入管道,以最大化吞吐量。
因此,在每個worker中生成一個單獨的合成數據幀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.