在python tensorflow工作簿执行后取消分配内存

时间:2016-12-20 16:17:11

标签: python docker tensorflow nvidia

为了限制内存使用量,我阅读How to prevent tensorflow from allocating the totality of a GPU memory?并尝试了以下代码:

# Assume that you have 12GB of GPU memory and want to allocate ~4GB:
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333)
sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))

这些命令释放了内存,但代码完成后内存未解除分配。此问题描述: https://github.com/tensorflow/tensorflow/issues/3701建议的修复方法是更新驱动程序 “将GPU驱动程序从352.79升级到367.35(最新版本)后,问题就消失了。 “ 不幸的是,我无法更新到最新版本的驱动程序。此问题是否已得到解决。

我还考虑过限制docker容器的可用内存。 阅读https://devblogs.nvidia.com/parallelforall/nvidia-docker-gpu-server-application-deployment-made-easy/状态“容器可以被限制在系统上的一组有限资源(例如一个CPU核心和1GB内存)”但内核目前不支持这一点,这里我尝试向新增加1GB内存docker instance:

nvidia-docker run -m 1024m -d -it -p 8889:8889 -v /users/user1234/jupyter:/notebooks --name tensorflow-gpu-1GB tensorflow/tensorflow:latest-cpu

但这似乎不可能作为接收警告: 警告:您的内核不支持交换限制功能,内存限制而无需交换。“

在tensorflow python工作簿完成后是否有释放内存的命令?

Update

杀死/重启笔记本后,内存被解除分配。但是如何在笔记本内完成后释放内存。

1 个答案:

答案 0 :(得分:0)

除非您在对象上使用delxdel,否则Ipython和jupyter笔记本将无法释放内存:

https://ipython.org/ipython-doc/3/interactive/magics.html

  

%XDEL:   删除变量,尝试从IPython机器引用它的任何地方清除它。默认情况下,它使用用户命名空间中命名对象的标识来删除以其他名称保存的引用。该对象也将从输出历史记录中删除。