簡體   English   中英

具有內存數據的分布式TensorFlow

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM