Tensorflow CPU RAM分配

时间:2018-04-10 12:33:23

标签: python python-3.x tensorflow

我在使用Tensorflow时遇到了令人难以置信的大量(CPU)RAM使用率,而大约每个变量都在GPU设备上分配,并且所有计算都在那里运行。即便如此,RAM使用率至少超过VRAM使用2倍。我试图理解为什么这样可以解决它是否可以得到纠正或是否是不可避免的。

问题

所以我的主要问题是: Tensorflow是否在(CPU)RAM上分配并维护所有GPU变量的副本?如果是,那么(在哪个阶段,见下文)分配了什么?为什么在CPU内存中分配它会有用呢?

更多信息

我有3个阶段,其中我看到RAM急剧增加。

  1. 首先,在定义图形时(我附加了VGG-19,它具有相当大的损失函数,迭代许多已翻译的激活图)。这为RAM使用增加了2 GB。
  2. 其次,定义优化器(我使用Adam)可以增加250MB。
  3. 初始化全局变量会增加750MB。
  4. 然后它保持稳定并且运行速度非常快(全部在GPU上)。 (这里提到的数据量是当我输入大小为8x8x3,批量大小为1的微小图像时。如果我执行的操作超过1x16x16x3,则该过程会因为溢出我的8GB RAM + 6GB交换限制而被杀死。

    请注意,我使用tf.ConfigProto(log_device_placement = True)记录变量放置,使用tf.RunMetadata和可视化在tensorboard上记录GPU使用情况。

    感谢您的帮助。

    系统信息

    • 我是否编写了自定义代码(与使用TensorFlow中提供的库存示例脚本相反):是
    • OS平台和发行版:Linux Ubuntu 17.10
    • 从(源或二进制)安装的TensorFlow:二进制文件
    • TensorFlow版本(使用下面的命令):1.7
    • Python版本:3.6.3
    • GCC /编译器版本(如果从源代码编译):6.4.0
    • CUDA / cuDNN版本:9.0
    • GPU型号和内存:NVidia GeForce Titan Xp

0 个答案:

没有答案