分布式tensorflow复制的训练示例:grpc_tensorflow_server - 没有这样的文件或目录

时间:2016-08-18 21:04:14

标签: python tensorflow gpu distributed-computing grpc

我正在尝试按照此博客中的说明进行distributed tensorflow实施:Distributed TensorFlow by Leo K. Tam。我的目标是执行此post

中提到的replicated training

我已完成步骤installing tensorflow并成功运行以下命令并获得结果:

sudo bazel-bin/tensorflow/cc/tutorials_example_trainer --use_gpu

现在接下来我要实现的是通过以下命令在其中一个节点上启动gRPC server

bazel-bin/tensorflow/core/distributed_runtime/rpc/grpc_tensorflow_server --cluster_spec='worker|192.168.555.254:2500;192.168.555.255:2501' --job_name=worker --task_id=0 &

但是,当我运行它时,我收到以下错误:rpc/grpc_tensorflow_server:No such file directory

-bash: bazel-bin/tensorflow/core/distributed_runtime/rpc/grpc_tensorflow_server: No such file or directory

我的rpc文件夹的内容是:

 libgrpc_channel.pic.a              libgrpc_remote_master.pic.lo       libgrpc_session.pic.lo             libgrpc_worker_service_impl.pic.a  _objs/                             
 libgrpc_master_service_impl.pic.a  libgrpc_remote_worker.pic.a        libgrpc_tensor_coding.pic.a        libgrpc_worker_service.pic.a       
 libgrpc_master_service.pic.lo      libgrpc_server_lib.pic.lo          libgrpc_worker_cache.pic.a         librpc_rendezvous_mgr.pic.a

我显然错过了介于两者之间的一个步骤,这在博客中没有提及。我的目标是能够运行上面提到的命令(启动gRPC server),以便我可以在其中一个节点上启动工作进程。

1 个答案:

答案 0 :(得分:2)

grpc_tensorflow_server二进制文件是Distributed TensorFlow的预发布版本中使用的临时度量,它不再默认构建或包含在二进制分发中。它的替换是tf.train.Server Python类,它更易于编程和使用。

您可以使用tf.train.Server编写简单的Python脚本来重现grpc_tensorflow_server的行为:

# ps.py. Run this on 192.168.0.1. (IP addresses changed to be valid.)
import tensorflow as tf
server = tf.train.Server({"ps": ["192.168.0.1:2222"]},
                         {"worker": ["192.168.0.2:2222", "192.168.0.3:2222"]},
                         job_name="ps", task_index=0)
server.join()

# worker_0.py. Run this on 192.168.0.2.
import tensorflow as tf
server = tf.train.Server({"ps": ["192.168.0.1:2222"]},
                         {"worker": ["192.168.0.2:2222", "192.168.0.3:2222"]},
                         job_name="worker", task_index=0)
server.join()

# worker_1.py. Run this on 192.168.0.3. (IP addresses changed to be valid.)
import tensorflow as tf
server = tf.train.Server({"ps": ["192.168.0.1:2222"]},
                         {"worker": ["192.168.0.2:2222", "192.168.0.3:2222"]},
                         job_name="worker", task_index=1)
server.join()

显然,这个例子可以清理并使用命令行标志等重复使用,但TensorFlow没有为这些规定特定的表单。需要注意的主要事项是(i)每个TensorFlow任务有一个tf.train.Server实例,(ii)所有Server个实例必须使用相同的“集群定义”构造(字典映射作业名称为()每个任务都由一对唯一的job_nametask_index标识。

在相应的计算机上运行三个脚本后,您可以创建另一个脚本来连接它们:

import tensorflow as tf

sess = tf.Session("grpc://192.168.0.2:2222")
# ...