当我通常从命令行运行python脚本时,例如python test.py
,GPU内存将在脚本完成后立即释放。
在这个test.py
脚本中,我只是加载了一个keras构建的模型来评估和预测一些数据。没有培训过程。
但是,如果我打开'spyder'并在'spyder'中运行此脚本,结果会出现在'ipython'部分,但是然后我从命令行输入nvidia-smi
,GPU内存不会被释放。
所以,我尝试的是关闭这个'ipython'内核并开始一个新内核。但是我的所有其他变量都将丢失。在'spyder'model.evaluate(x, y)
之后有没有一种可靠的释放GPU内存的方法?
以下是一些屏幕截图:
答案 0 :(得分:1)
通常,tensorflow后端将保留GPU上的所有内存。它可能并不真正使用所有内存,但它将被其他程序使用,直到tensorflow后端终止。因此,在nvidia-smi
中,即使tensorflow已经释放了其框架中的先前内存,您也会看到内存不会释放。