我在使用Tensorflow时遇到了令人难以置信的大量(CPU)RAM使用率,而大约每个变量都在GPU设备上分配,并且所有计算都在那里运行。即便如此,RAM使用率至少超过VRAM使用2倍。我试图理解为什么这样可以解决它是否可以得到纠正或是否是不可避免的。
所以我的主要问题是: Tensorflow是否在(CPU)RAM上分配并维护所有GPU变量的副本?如果是,那么(在哪个阶段,见下文)分配了什么?为什么在CPU内存中分配它会有用呢?
我有3个阶段,其中我看到RAM急剧增加。
然后它保持稳定并且运行速度非常快(全部在GPU上)。 (这里提到的数据量是当我输入大小为8x8x3,批量大小为1的微小图像时。如果我执行的操作超过1x16x16x3,则该过程会因为溢出我的8GB RAM + 6GB交换限制而被杀死。
请注意,我使用tf.ConfigProto(log_device_placement = True)记录变量放置,使用tf.RunMetadata和可视化在tensorboard上记录GPU使用情况。
感谢您的帮助。