[显存被占满,程序无法运行问题]ResourceExhaustedError (see above for traceback): OOM when allocating tensor

最近在实验室的服务器上跑tensorflow程序,一直都没有报错,但是今天却突然报错,而且出错提示显示的内容从未见到过,错误提示如下:

[显存被占满,程序无法运行问题]ResourceExhaustedError (see above for traceback): OOM when allocating tensor

错误提示资源耗尽,无法分配tensor出错。通过在网上查找原因以后才明白,是因为后台存在其他进程占用GPU资源。问题出在两方面,一个是有其他进程正在GPU上运行占用GPU资源,另外一个是由于所写的模型逻辑出了问题,比如分配大小等等。第二种情况需要自己重新检查模型数据和逻辑,一般情况下先考虑第一种情况,第一种情况的解决方案如下:

首先在命令行输入 nvidia-smi 显示GPU的使用情况

[显存被占满,程序无法运行问题]ResourceExhaustedError (see above for traceback): OOM when allocating tensor

每个参数的使用情况详见https://blog.csdn.net/Cloudox_/article/details/78651637

主要关心的参数为Memory-Usage,如上图所示,两块GPU的显存都被极大的占用了,但是GPU-Util(GPU利用率为0),那么说明后台有进程在消耗GPU资源。

命令行输入 fuser -v /dev/nvidia*,如下图所示就会显示使用GPU的进程:

[显存被占满,程序无法运行问题]ResourceExhaustedError (see above for traceback): OOM when allocating tensor

把消耗资源的进程关闭即可:命令行输入 kill -9 进程号 ,再次显示GPU的使用情况:

[显存被占满,程序无法运行问题]ResourceExhaustedError (see above for traceback): OOM when allocating tensor

至此,问题圆满解决!