python - 按需将张量发送到分布式 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())
...
这可能吗?先感谢您!
解决方案
TensorFlow 使用RecvTensor
服务来传输张量。有SendOp
,RecvOp
与此服务相关。
SendOp
产生张量并RecvOp
尝试检索张量。SendOp
是本地的,只是在集合点中计算和缓冲张量。RecvOp
RecvTensor
如果张量在远程工作人员上,将发出请求(通过调用RecvFromRemoteAsync
)
有关更多详细信息,请参阅 TensorFlow架构。
Python 端只是将客户端图传递给 C++ 核心进行计算和通信。这样,要实现一个真正的SendTensor
Service,就需要修改TensorFlow核心。
推荐阅读
- python - 将长熊猫数据框转换为 numpy 2d 矩形数组
- java - 如何从super的关联类调用子类方法
- javascript - 当我点击我的图表时,我怎样才能做点什么?
- d3.js - D3.js .each() 具有传递数据的功能
- python - 从 QDataWidgetMapper 获得 2 个组合框
- visual-studio-code - PATH 变量是如何为 vscode 进程本身(不是集成终端)定义的?
- git - 如何向机器添加第二个 git 帐户?
- c - 如何为 Arduino 和 Teensy 配置 Visual Studio Code includePath
- python - 如何计算字符串出现在多个数据帧的列中的次数
- python - flask:如何对请求 JSON 和 JSON 模式进行验证?