Deep learning TensorFlow奇怪的内存使用

Deep learning TensorFlow奇怪的内存使用,deep-learning,tensorflow,gpu,memory,Deep Learning,Tensorflow,Gpu,Memory,我在一台Ubuntu19.10机器(带KDE桌面环境)上,有8GB内存、一个i5 8250u和一个MX130 gpu(2GB VRAM),运行一台带有tensorflow gpu的Jupyter笔记本电脑 我只是训练一些模型来测试它们的内存使用情况,我看不出我所看到的有任何意义。在培训期间,我使用KSysGUARD和NVIDIA系统监视器()来监视我的系统 当我点击“train”时,在NVIDIA S.M.上显示内存使用率为100%(或接近100%,如95/97%),GPU使用情况良好 我总是在

我在一台Ubuntu19.10机器(带KDE桌面环境)上,有8GB内存、一个i5 8250u和一个MX130 gpu(2GB VRAM),运行一台带有tensorflow gpu的Jupyter笔记本电脑

我只是训练一些模型来测试它们的内存使用情况,我看不出我所看到的有任何意义。在培训期间,我使用KSysGUARD和NVIDIA系统监视器()来监视我的系统

  • 当我点击“train”时,在NVIDIA S.M.上显示内存使用率为100%(或接近100%,如95/97%),GPU使用情况良好

  • 我总是在NVIDIA S.M.中查看进程列表,“python”只占用大约60MB的vram空间

  • 在KSysGUARD中,python的内存使用量始终在700mb左右

  • 对此可能有一些解释,问题是,一个有2个神经元的模型(当然是密集连接的xD)的gpu内存使用率达到90%,就像一个有2亿个参数的模型一样。我使用的批量大小为128

    我想了想,如果我没有错的话,一个有2亿个参数的模型应该占用200000000*4字节*128字节,也就是1024gb。 这意味着我在某些事情上肯定是错的,但我太无私了,不能为自己保留这个谜语,所以我决定给你一个机会来解决这个问题;D


    PS:英语不是我的主要语言。

    默认情况下,Tensorflow会在目标GPU中分配所有可用的VRAM。有一个叫做内存增长的实验特性,让你控制它,基本上停止了分配所有VRAM的初始化过程,并在需要时执行


    好的,这意味着我所有的VRAM都被分配给了tensorflow,即使他使用了所有2GB中的1mb。这意味着,我的问题是tensorflow进程没有显示在系统监视器中,导致一个不在列表中的进程实际占用了所有内存。。。对吧?好吧,我发现了记忆是如何工作的。但有一件事我还不确定:我怎么能只在2GB的vram上训练这么大的模型(2.5亿个参数)?Tensorflow必须适应内存中的神经网络、数据等,所以你训练的模型仍然在2GB的vram限制内。@DennisOrlando如果我的帖子回答了你的问题,你可以接受它。