1. 问题描述
在基于Linux
操作系统环境下的GPU
服务器上跑深度学习代码时,我们常常会因为如不正常退出等问题导致资源没被正常回收而出现GPU
显存不足的情况,此时再次运行学习代码就会出现如下图所示报错情况。从图片上可以看出我10.91GiB
的显存仅剩下362.38MiB
,报错提示原因也是ResourceExhaustedError
(资源耗尽错误)。
Traceback
2. 解决方法
2.1 传统方法
- 传统方法当然是重启呀,这是在不知道解决办法时的万能钥匙,手动滑稽。
2.2 杀死进程法
- 使用
fuser
命令显示所有占用nvidia设备的进程processID
。(说明:fuser
命令 能展列出当前磁盘上的某个文件、挂载点、以及网络端口的使用情况,并显示使用其资源的进程processID
,默认情况下每个文件名后面跟一个字母表示访问类型)
sudo fuser /dev/nvidia*
-
操作过程如下:
使用fuser命令 -
使用
kill
命令将占用Nvidia
设备的进程杀掉,并再次使用fuser
命令确认。(说明:使用kill
命令时默认的命令参数为-15
,而kill -15
代表的信号为SIGTERM
,这是告诉进程进行终止操作,这并不能保证一定杀干净;而kill -9
代表的信号是SIGKILL
,表示进程被杀死,不能被忽略)
kill -9 PID
sudo fuser /dev/nvidia*
- 其中我的
PID
为上图的22448
,操作过程如下图所示:
使用kill命令
3.备注
- 到此问题就解决了,继续学习。
- 问题是本人在
Ubuntu 16.04
系统下使用tensorflow
框架在Nvidia GTX 1080Ti
上进行机器学习时遇到的。因为经常会遇到,所以做了问题总结,希望对出现同样问题的你有所帮助。
网友评论