Paddle下训练模型,训练程序停止后GPU未正常释放解决

Paddle下训练模型,训练程序停止后GPU未正常释放解决

  • 摘要 使用PaddleDetection 训练模型,由于程序报错,训练程序停止,查看GPU的使用情况发现使用的显卡无对应运行的程序,但显卡的内存并未正常释放。本博文将对这个问题记录一下解决方案,防止再出现类似的问题。

查看GPU的使用情况

  • 1、运行nvidia-smi
    如图所示,GPU6、GPU7并无运行程序,但其占用率却很高,使用Paddle设置多线程(threads)进行数据读取(DataLoader),其实是假的多线程,他是开了N个子进程(PID都连着)进行模拟多线程工作,所以你的程序跑完或者中途kill掉主进程的话,子进程的GPU显存并不会被释放,需要手动一个一个kill才行。
    Paddle下训练模型,训练程序停止后GPU未正常释放解决_第1张图片
  • 2、运行fuser -v /dev/nvidia*
    运行指令,得到如下占用程序
    Paddle下训练模型,训练程序停止后GPU未正常释放解决_第2张图片

杀死僵尸进程

强行关掉所有当前并未执行的僵尸进程,运行命令:

  • 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
  • 验证
    再次运行程序验证僵尸进程是否杀死
    如图所示:
    Paddle下训练模型,训练程序停止后GPU未正常释放解决_第3张图片

你可能感兴趣的:(内存释放,操作系统,ubuntu,运维)