Tensorflow CPU RAM分配

Ken*_*eth 6 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.

然后它保持稳定并且运行速度非常快(全部在GPU上).(这里提到的数据量是当我输入大小为8x8x3,批量大小为1的小图像时.如果我执行的操作超过1x16x16x3,则进程会因为溢出我的8GB RAM + 6GB交换限制而被杀死).

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

感谢您的任何帮助.

系统信息

  • 我是否编写了自定义代码(而不是使用TensorFlow中提供的库存示例脚本):是的
  • 操作系统平台和发行版: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