Paddle下训练模型,训练程序停止后GPU未正常释放解决
- 摘要 使用PaddleDetection 训练模型,由于程序报错,训练程序停止,查看GPU的使用情况发现使用的显卡无对应运行的程序,但显卡的内存并未正常释放。本博文将对这个问题记录一下解决方案,防止再出现类似的问题。
查看GPU的使用情况
- 1、运行nvidia-smi
如图所示,GPU6、GPU7并无运行程序,但其占用率却很高,使用Paddle设置多线程(threads)进行数据读取(DataLoader),其实是假的多线程,他是开了N个子进程(PID都连着)进行模拟多线程工作,所以你的程序跑完或者中途kill掉主进程的话,子进程的GPU显存并不会被释放,需要手动一个一个kill才行。
- 2、运行fuser -v /dev/nvidia*
运行指令,得到如下占用程序
杀死僵尸进程
强行关掉所有当前并未执行的僵尸进程,运行命令:
- 1、kill -9 PID
kill -9 20894 20895 21248 21249 21885 21886 22455 22456 22743 22744 20894 20895 21248 21249 21885 21886 22455 22456 22743 22744
- 验证
再次运行程序验证僵尸进程是否杀死
如图所示: