如何理解tf.Session的目标?

时间:2017-10-08 04:22:01

标签: python c++ tensorflow grpc

tf.Session有参数target,它可以是''grpc://ip:porttf.train.Server().target,它们之间有什么区别?当我们创建session时,是否意味着我们创建client,如果我们client是什么server

更新

  1. 什么是主人?是首席工作人员吗? ''grpc://localhost:port?之间的区别是什么?我认为它们都在本地计算机上。
  2. 关于local_distributed_benchmark.py

    的一些问题
    1. 我在print(add_op.device)中添加create_graph(device1, device2),输出为/job:worker/task:0,为什么不/job:worker/task:1?如果在其他任务(工作人员)上创建操作,则创建tf.Session("grpc://"+host+FLAGS.port1, config=default_config()),此会话如何运行这些操作,例如程序上的init_op = tf.initialize_all_variables()

    2. 如果我使用sess = tf.Session(config=default_config())代替sess = tf.Session("grpc://"+host+FLAGS.port1, config=default_config()),则会引发错误:

    3. Cannot assign a device for operation 'update': Operation was explicitly assigned to /job:worker/task:1 but avail able devices are [ /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/gpu:0 ]. 怎么了?

      1. 如果我删除runcmd("python %s --task=1"%(sys.argv[0]))并将with tf.device(device2):更改为with tf.device(device1):,程序将输出CreateSession still waiting for response from worker: /job:worker/replica:0/task:1。我只使用目标task:0的会话,并且不在ops上使用任何task:1,那么为什么程序会等待task:1 worker启动?

1 个答案:

答案 0 :(得分:0)

它是会话主机的位置(可以执行session.run调用的东西)。

  • ''是本地主(本地运行时)。

  • tf.train.Server(...)。target是本地主服务器(分布式运行时)。它的格式为grpc:// localhost:port

  • grpc:// ip:port是监听ip的主人

以下是对术语(主人,工人,客户)的一些解释: task assignment in tensorflow distributed process