Google Cloud ML引擎中的分布式Tensorflow设备放置

Google Cloud ML引擎中的分布式Tensorflow设备放置,tensorflow,gpu,distributed-computing,google-cloud-ml,multi-gpu,Tensorflow,Gpu,Distributed Computing,Google Cloud Ml,Multi Gpu,我正在google cloud ML引擎中运行一个大型分布式Tensorflow模型。我想使用带有GPU的机器。 我的图表由两个主要部分组成:输入/数据读取器功能和计算部分 我希望将变量放在PS任务中,输入部分放在CPU中,计算部分放在GPU上。 功能tf.train.replica\u device\u setter自动将变量放入PS服务器 这就是我的代码的样子: 带有tf.device(tf.train.replica\u device\u setter(cluster=cluster\u

我正在google cloud ML引擎中运行一个大型分布式Tensorflow模型。我想使用带有GPU的机器。 我的图表由两个主要部分组成:输入/数据读取器功能和计算部分

我希望将变量放在PS任务中,输入部分放在CPU中,计算部分放在GPU上。 功能
tf.train.replica\u device\u setter
自动将变量放入PS服务器

这就是我的代码的样子:

带有tf.device(tf.train.replica\u device\u setter(cluster=cluster\u spec)):
输入\张量=模型。输入\ fn(…)
输出张量=模型。模型(输入张量…)
是否可以将
tf.device()
replica\u device\u setter()
一起使用,如:

带有tf.device(tf.train.replica\u device\u setter(cluster=cluster\u spec)):
使用tf.device(“/cpu:0”)
输入\张量=模型。输入\ fn(…)
使用tf.device(“/gpu:0”)
张量dict=model.model(输入张量,…)
replica\u divice\u setter()
是否会被覆盖,变量是否不会放置在PS服务器中


此外,由于集群中的设备名称类似于
job:master/replica:0/task:0/gpu:0
如何对Tensorflow
tf.device(无论是什么/gpu:0)

块中除变量外的任何操作都会自动固定到
“/job:worker”
,这将默认为“worker”作业中第一个任务管理的第一个设备

您可以使用嵌入式设备块将它们固定到另一个设备(或任务):

带tf.device(tf.train.replica_device_setter)(ps_tasks=2,ps_device=“/job:ps”,
worker_device=“/job:worker”):
v1=tf.Variable(1.,name=“v1”)#固定到/job:ps/task:0(默认为/cpu:0)
v2=tf.Variable(2.,name=“v2”)#固定到/job:ps/task:1(默认为/cpu:0)
v3=tf.Variable(3.,name=“v3”)#固定到/job:ps/task:0(默认为/cpu:0)
s=v1+v2#固定到/job:worker(默认为任务:0/cpu:0)
使用tf.device(“/task:1”):
p1=2*s#固定到/job:worker/task:1(默认为/cpu:0)
使用tf.device(“/cpu:0”):
p2=3*s#固定到/job:worker/task:1/cpu:0

指定您自己的tf.device()会覆盖外部作用域中的任何副本设备设置器只有一个后续步骤:假设我正在进行图形复制之间的操作,如果我使用tf.device(“/task:1”)删除
我是否可以期望在
cpu:0
中为所有不同的工作进程计算
p2=3*s