首页 > 解决方案 > 按需将张量发送到分布式 TensorFlow 中的其他工作节点

问题描述

对于具有至少两个工作节点的分布式 TensorFlow 环境,我试图以“按需”方式将张量从一个工作节点发送到另一个工作节点。理想情况下,接收工作节点可以阻塞,直到它接收到张量。我希望接收工作节点能够像使用常规张量一样使用张量。

工作节点不需要在一个集群中,但我想如果它们在一个集群中会更容易实现这一点。

我很好奇这是否可以使用 RecvFromRemoteAsync 之类的东西来完成,但我不确定这在 Python 级别上究竟如何使用。

换句话说,我正在努力实现:

在发送工作节点:

...
sendTensor(to=recv_worker, tensor) # where recv_worker is some IP and Port
...

然后,在接收工作节点:

...
# the next line would ideally block until the tensor is received:
received_tensor=recvTensor(from=send_worker) # where send_worker is some IP and Port
# do something with the tensor, e.g.:
print(received_tensor.eval())
...

这可能吗?先感谢您!

标签: pythontensorflow

解决方案


TensorFlow 使用RecvTensor服务来传输张量。有SendOpRecvOp与此服务相关。

  • SendOp产生张量并RecvOp尝试检索张量。
  • SendOp是本地的,只是在集合点中计算和缓冲张量。
  • RecvOpRecvTensor如果张量在远程工作人员上,将发出请求(通过调用RecvFromRemoteAsync

有关更多详细信息,请参阅 TensorFlow架构

Python 端只是将客户端图传递给 C++ 核心进行计算和通信。这样,要实现一个真正的SendTensorService,就需要修改TensorFlow核心。


推荐阅读