首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分布式Tensorflow被困在sess.run()

分布式Tensorflow被困在sess.run()
EN

Stack Overflow用户
提问于 2017-01-09 08:42:06
回答 1查看 697关注 0票数 0

我想在多台机器,多个GPU上运行tensorflow。作为第一步,在单机上试用分布式tensorflow (遵循tensorflow教程tos/distributed/)

贝娄是sess.run()标记的线条

代码语言:javascript
复制
import tensorflow as tf
cluster = tf.train.ClusterSpec({"local": ["localhost:2222", "localhost:2223"]})
server = tf.train.Server(cluster, job_name="local", task_index=0)
a = tf.constant(8)
b = tf.constant(9)
sess = tf.Session('grpc://localhost:2222')

在这里之前,一切都很正常,但是当我运行sess.run()时,它会停止运行。

代码语言:javascript
复制
    sess.run(tf.mul(a,b))

如果有人已经做过分布式tensorflow的工作,请让我知道解决方案或其他教程的工作良好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-09 15:52:12

默认情况下,分布式TensorFlow将被阻塞,直到tf.train.ClusterSpec中指定的所有服务器都启动为止。这发生在与服务器的第一次交互中,这通常是第一次sess.run()调用。因此,如果您还没有启动侦听localhost:2223的服务器,那么TensorFlow会一直阻塞直到您启动为止。

对于这个问题有几个解决方案,取决于您以后的目标:

  1. localhost:2223上启动服务器。在另一个进程中,运行以下脚本: 将tensorflow导入为tf群集=tf.train.ClusterSpec({“本地”:"localhost:2222","localhost:2223"})服务器=tf.train.Server( job_name="local",task_index=1) server.join() #永远等待传入连接。
  2. 从原始tf.train.ClusterSpec中删除任务1: 导入tf集群=tf.train.ClusterSpec({“本地”:"localhost:2222"})服务器=tf.train.Server(群集,job_name=“本地”,task_index=0) #.
  3. 在创建tf.Session时指定“设备筛选器”,以便会话只使用任务0.config=tf.ConfigProto(device_filters="/job:local/task:0")) = tf.Session("grpc://localhost:2222“)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41544009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档