python - 张量对于图形分布来说太大 - "InternalError: Message length was negative"

标签 python tensorflow distribution

我尝试运行以下图表: Graph that causes the error.

不幸的是,我收到以下错误消息:

tensorflow.python.framework.errors.InternalError: Message length was negativ
 [[Node: random_uniform_1_S1 = _Recv[client_terminated=false,
  recv_device= "/job:worker/replica:0/task:1/cpu:0",
  send_device="/job:worker/replica:0/task:0/cpu:0",
  send_device_incarnation=3959744268201087672,
  tensor_name="edge_18_random_uniform_1",
  tensor_type=DT_DOUBLE,
  _device="/job:worker/replica:0/task:1/cpu:0"]()]]

我注意到,如果 random_uniform_1 的大小为 800MB,则不会出现此错误消息,但如果大小为 8GB,则会出现此错误消息。

(请注意,random_uniform_1 必须从一台设备传输到另一台设备。)

问题:如果张量必须在设备之间传输,张量的大小是否有限制?

最佳答案

是的,目前在进程之间发送单个张量时有2GB 限制。此限制是由 TensorFlow 通信层中使用的 Protocol Buffer 表示(更准确地说,由 protoc 编译器生成的自动生成的 C++ 包装器)施加的。

我们正在研究解除此限制的方法。同时,您可以通过手动添加 tf.split()tf.slice()tf.concat() 来解决此问题code> 操作来划分张量以进行传输。如果您有非常大的 tf.Variable 对象,则可以使用 variable partitioners自动执行此转换。请注意,在您的程序中,内存中同时有多个 8GB 张量,因此峰值内存利用率将至少为 16GB。

关于python - 张量对于图形分布来说太大 - "InternalError: Message length was negative",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39301773/

相关文章:

python - 如何创建 Azure Artifacts 公共(public)源,以便无需凭据即可 pip 安装开源项目的夜间版本?

python - 如何检查函数是否阻塞?

tensorflow - tensorflow 是否通过pdf传播梯度

tensorflow - 如何堆叠Tensorflow的conv2d_transpose()的多层

python - 如果文件已经打开,xlwings.book 会挂起

python - 谷歌应用引擎 Python : get image upload size server-side

TensorFlow 新的 contrib.data.Dataset 对象是如何工作的?

.net - .Net中如何跨进程共享对象?

perl - 如何打包我的 Perl 脚本以在没有 Perl 的机器上运行?

r - 模拟二元帕累托分布