我之所以这样问是因为它对我来说是全新的(它更多的是关于Linux问题中的计算机网络,而不是TF,但也许有人已经做过了)
由于我的GPU无法计算我需要的输入数据,我不得不从我的CPU获取资源,但有时甚至CPU + GPU也无法应对所有操作。我可以使用与我的计算机在网络中的另一台计算机的处理器,但我不知道我应该如何编码(我可以访问该计算机,但在那个区域我不是那么好在Linux中:p)
我正在查看TF网页,但他们只是告诉资源何时是本地的。 Here当我的GPU无法处理所有信息时,我发现通常with tf.device('/cpu:0'): ...
要解决,我想也许它可能像with tf.device('other_computer/cpu:0'):
那样但我认为我会必须更改行sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
,同时我必须访问另一台计算机,但我不知道该怎么做
无论如何,如果有人以前这样做了,我会很感激知道它。我接受任何可以使用的参考资料
由于
答案 0 :(得分:0)
TensorFlow支持使用由网络连接的多台计算机的CPU(以及可能的GPU)进行分布式计算。你对with tf.device():
块有用的直觉是正确的。这是一个广泛的主题,但设置分布式TensorFlow计算有三个主要步骤:
创建tf.train.Server
,将群集中的计算机映射到TensorFlow 作业,这些是任务的列表。您需要在要使用的每台计算机上创建tf.train.Server
,并使用相同的cluster definition对其进行配置。
构建TensorFlow图。使用with tf.device("/job:foo/task:17"):
定义一个节点块,这些节点将放置在您在步骤1中定义的名为"foo"
的作业的第17个任务中。有一些便捷方法可用于应用设备映射策略,例如{{ 3}},有助于简化常见培训拓扑的这项任务。
创建连接到本地服务器的tf.train.replica_device_setter()
。如果您将服务器创建为server = tf.train.Server(...)
,则会将您的会话创建为sess = tf.Session(server.target, ...)
。
有一个关于分布式TensorFlow可用tf.Session
的更长教程,以及一些使用群集here训练初始图像识别模型的示例代码。