如何通过Apache mod_wsgi django调用keras模型时释放占用的GPU内存?

时间:2017-05-12 06:37:53

标签: django apache memory keras

我的服务器配置如下:

  1. apache 2.4.23。
  2. Mod_wsgi 4.5.9
  3. 通过使用Django框架和apache服务器,我们称之为Keras深度学习模型。 成功调用模型后,模型一直在GPU内存中运行,导致GPU内存无法释放,除非关闭apache服务器

    所以,当用Apache + Mod_wsgi + Django调用Keras模型时,有没有办法控制GPU内存的释放

    谢谢!

    Runtime memory footprint screenshots

3 个答案:

答案 0 :(得分:7)

对于无法使K.clear_session()工作的人们,还有另一种解决方案:

from numba import cuda
cuda.select_device(0)
cuda.close()

Tensorflow只是为GPU分配内存,而CUDA负责管理GPU内存。

如果您用K.clear_session()清除了所有图形后CUDA出于某种原因拒绝释放GPU内存,则可以使用cuda库直接控制CUDA清除GPU内存。 / p>

答案 1 :(得分:5)

from keras import backend as K
K.clear_session()

这将清除当前会话(Graph),因此应从GPU中删除过时的模型。如果它不起作用,你可能需要建立模型'并重新加载它。

答案 2 :(得分:1)

是的,但是最新的方法使我的spyder console kerner崩溃了,尽管GPU内存又重新可用了

from numba import cuda
cuda.select_device(0)
cuda.close()