【问题标题】:How to use Distributed Tensorflow on remote machines?如何在远程机器上使用分布式 TensorFlow?
【发布时间】:2018-04-10 03:52:45
【问题描述】:

我正在尝试在三台机器上运行分布式 Tensorflow 脚本:我的本地机器运行参数服务器和两台远程机器,我可以访问正在运行的工作作业。我正在关注 Tensorflow 文档中的 this example,将 IP 地址和唯一端口号传递给每个工作人员作业,并将 tf.train.Server 中的 protocol 选项设置为 'grpc'。但是,当我运行脚本时,所有三个进程都在我的本地主机上启动,并且没有一个作业在远程机器上。有没有我错过的步骤?

我的(删节的)代码:

# Define flags
tf.app.flags.DEFINE_string("ps_hosts", "localhost:2223", 
                        "comma-separated list of hostname:port pairs")
tf.app.flags.DEFINE_string("worker_hosts", 
"server1.com:2224,server2.com:2225",
                        "comma-separated list of hostname:port pairs")

tf.app.flags.DEFINE_string("job_name", "worker", "One of 'ps', 'worker'")
tf.app.flags.DEFINE_integer("task_index", 0, "Index of task within the job")

ps_hosts = FLAGS.ps_hosts.split(",")
worker_hosts = FLAGS.worker_hosts.split(",")

cluster = tf.train.ClusterSpec({"ps": ps_hosts, "worker": worker_hosts})
server = tf.train.Server(cluster, job_name=FLAGS.job_name, task_index=FLAGS.task_index, protocol='grpc')

if FLAGS.job_name == "ps":
    server.join()
elif FLAGS.job_name == "worker":
    # Between-graph replication
    with tf.device(tf.train.replica_device_setter(cluster=cluster, worker_device="/job:worker/task:{}".format(FLAGS.task_index))):
        # Create model...
        sv = tf.train.Supervisor(is_chief=(FLAGS.task_index == 0),
                                 logdir="./checkpoint",
                                 init_op=init_op,
                                 summary_op=summary,
                                 saver=saver,
                                 global_step=global_step,
                                 save_model_secs=600)

        with sv.managed_session(server.target, 
                                 config=config_proto) as sess:
            # Train model...

这段代码导致两个问题:

  1. 两个工作人员作业都给出了关于没有得到对方响应的错误:

来自worker0:

2018-04-09 23:48:39.749679: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:worker/replica:0/task:1

来自worker1:

2018-04-09 23:49:30.439166: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:worker/replica:0/task:0
  1. 我可以通过使用device_filter 来解决之前的问题,但是所有作业都是在我的本地计算机上启动的,而不是在远程服务器上启动的。

如何让这两个工作作业在远程服务器上运行?

【问题讨论】:

    标签: python tensorflow machine-learning distributed-computing


    【解决方案1】:

    我的理解是您必须在集群的所有主机上运行此脚本。与

    “--job_name=ps”参数服务器上的参数和

    "--job_name=worker --task_index=[0,1]" 在工作人员上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-07
      • 2021-09-23
      • 1970-01-01
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 2021-01-11
      相关资源
      最近更新 更多