tf.Session
有参数target
,它可以是''
,grpc://ip:port
或tf.train.Server().target
,它们之间有什么区别?当我们创建session
时,是否意味着我们创建client
,如果我们client
是什么server
?
''
和grpc://localhost:port?
之间的区别是什么?我认为它们都在本地计算机上。 关于local_distributed_benchmark.py
的一些问题我在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()
。
如果我使用sess = tf.Session(config=default_config())
代替sess = tf.Session("grpc://"+host+FLAGS.port1, config=default_config())
,则会引发错误:
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 ].
怎么了?
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
启动? 答案 0 :(得分:0)
它是会话主机的位置(可以执行session.run调用的东西)。
''是本地主(本地运行时)。
tf.train.Server(...)。target是本地主服务器(分布式运行时)。它的格式为grpc:// localhost:port
以下是对术语(主人,工人,客户)的一些解释: task assignment in tensorflow distributed process