python - 如何理解tf.Session的target?

标签 python c++ tensorflow grpc

tf.Session有参数target,可以是'', grpc://ip:port,或者tf.train.Server().target,它们有什么区别?当我们创建一个session时,是否意味着我们创建了一个client,如果我们有client 什么是server

更新

  1. 什么是主人?是总工吗? ''grpc://localhost:port? 之间有什么区别?我认为它们都在本地计算机上。

关于你的一些问题local_distributed_benchmark.py

  1. 我在create_graph(device1, device2)中添加print(add_op.device),输出为/job:worker/task:0 ,为什么不是 /job:worker/task:1?而你创建tf.Session("grpc://"+host+FLAGS.port1, config=default_config()),如果ops是在其他tasks(worker)上创建的,这个session如何运行这些操作,例如程序中的 init_op = tf.initialize_all_variables()

  2. 如果我使用 sess = tf.Session(config=default_config()) 而不是 sess = tf.Session("grpc://"+host+FLAGS. port1, config=default_config()),会报错:

无法为操作“更新”分配设备:操作已明确分配给/job:worker/task:1 但可用设备为 [/job:localhost/replica:0/task:0/cpu:0,/job:localhost/拷贝:0/任务:0/GPU:0]。 怎么了?

  1. 如果我删除runcmd("python %s --task=1"%(sys.argv[0]))并更改 with tf.device(device2): with tf.device(device1):,程序会输出CreateSession still waiting for response from worker:/job:worker/replica:0/task:1。我只使用目标 task:0 的 session ,并且没有在 task:1 上使用任何 ops,那么为什么程序会等待 task:1 worker 开始?

最佳答案

它是 session 管理器(可以执行 session.run 调用的东西)的位置。

  • ''是本地master(本地运行时)。

  • tf.train.Server(...).target 是本地主机(分布式运行时)。它的格式为 grpc://localhost:port

  • grpc://ip:port 是监听ip的master

这里是一些术语的解释(master、worker、client): task assignment in tensorflow distributed process

关于python - 如何理解tf.Session的target?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46627470/

相关文章:

python - Steam FileUploader 发布请求 : Missing SteamID

python - 按最后一个特殊字符将数据帧列拆分为 2 部分

c++ - 在 C++ 中初始化静态字符串成员

android - 从 TensorFlow Android Camera Demo 重新训练 Inception5h 模型

python - 如何阻止 numpy hstack 更改 opencv 中的像素值

python - 具有自定义层的 PyTorch 网络在 CPU 上运行良好,但在移动到 GPU 时会出现 cudaErrorIllegalAddress

c++ - 获取机器属性

c++ - HDF5:我需要明确设置字节顺序吗?

python - 为什么 tensorflow 线性回归预测全为0?

tensorflow - 如何转换在 Edge TPU 板的自定义数据集上训练的模型?