深图的大量内存消耗

时间:2018-12-14 18:10:18

标签: python tensorflow

我测试过构建一个包含250,000 matmul个操作的深图(每个操作都使用“ slim” 2x2张量)。运行代码后,我发现在图的构建过程中,内存消耗急剧增加,总计达到3.28 GiB。

x = tf.placeholder(shape=(2, 1), dtype=tf.float64)
for i in range(250000):
    x = tf.eye(2, dtype=tf.float64) @ x

考虑到每个操作都由2x2-float64张量组成的事实,这应该占用大约250000 * 4 * 8 = 8 MiB,这意味着剩余的内存消耗必须以某种开销的形式出现,以维持图形结构。对于给定的参数,每次操作总计13.12 KiB,这看起来太多了。我无法想象为什么张量流需要分配这么多的内存才能构建图形。

所以我有两个问题:

  1. 是否有这种大内存消耗的解释?
  2. 对于包含>〜1,000,000个操作的图形,是否可以减少内存消耗?

我在Ubuntu 16.04上使用Python 3.6,并通过不支持GPU的pip安装了tensorflow 1.12.0。


编辑

与PyTorch上类似的图形结构相比,可以合理地消耗162 MiB的内存。

x = torch.ones(size=(2, 1), dtype=torch.float64, requires_grad=True)
for i in range(250000):
    x = torch.eye(2, dtype=torch.float64) @ x

0 个答案:

没有答案