Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Tensorflow中实施局部设备放置_Tensorflow - Fatal编程技术网

在Tensorflow中实施局部设备放置

在Tensorflow中实施局部设备放置,tensorflow,Tensorflow,我正在尝试创建一个分布式Tensorflow应用程序,其中包含一个服务器和一个或多个使用它的客户端 指定哪些变量或操作应该放在服务器中很容易。只需使用定义“服务器”作业的ClusterSpec启动tf.train.Server,然后执行以下操作: with tf.device('/job:server/task:0'): server_vars = ... server_ops = ... 但是,如果我想在客户端放置其他VAR或OP,那么我必须为每个客户端定义一个新作业,为它启动一个新

我正在尝试创建一个分布式Tensorflow应用程序,其中包含一个服务器和一个或多个使用它的客户端

指定哪些变量或操作应该放在服务器中很容易。只需使用定义“服务器”作业的ClusterSpec启动tf.train.Server,然后执行以下操作:

with tf.device('/job:server/task:0'):
  server_vars = ...
  server_ops = ...
但是,如果我想在客户端放置其他VAR或OP,那么我必须为每个客户端定义一个新作业,为它启动一个新的tf.train.Server,定义放置在每个特定客户端上的新VAR和OP,并在ClusterSpec中包含所有客户端地址和端口

有没有办法使用tf.device在本地放置ops和VAR?不一定要连接到任何特定设备(CPU、GPU),但不能远程连接到服务器

# No device is specified, so it's up to TF to decide where to place it.
# Let's say it decides to place it locally. How can we enforce that?
# Is there a tf.device(/local/) or similar?
client_vars = ...
client_ops = ...

with tf.Session('grpc://%s' % SERVER) as session:
  # Do stuff.
  # Can we run client ops from this session?

注意:我假设服务器是被动工作的,从不尝试直接访问任何客户机ops或VAR。相反,客户端访问服务器ops和VAR。

如果您没有本地运行
tf.server
,那么本地运行ops的唯一选项就是创建本地会话
tf.session()
,并在该会话中运行ops。不同的会话无法直接通信。如果您使用的是分布式TensorFlow,那么您必须从分布式会话中获取数据,并自己将数据馈送到本地会话中。(维卡也一样)

没有
设备/本地
。您可以使用
tf.device(/job:../task:/…)
语法在本地放置ops,因为客户端知道它运行的是哪个作业/任务,但这会迫使我在客户端启动tf.train.Server并向其打开会话,以便在本地运行ops,不是吗?这对我来说确实是个问题,因为例如Tensorflow C API(用于Windows)不支持启动服务器。