fuser 使用—— YOLOV5内存溢出——kill nvidai-smi 无pid 的 GPU 进程

场景:
    当我们使用YOLOV5训练模型时,官方的建议也是使用尽可能大的batch size这样BN更加的准确,训练速度也最快,但是当我们的batch size设置的过大会导致显卡内存溢出,而此时如果是多卡训练,很有可能出现长时间无法退出占用显存。
解决方法:
    第一种:使用nvidia-smi,下方有对应的pid。
    可以使用kill命令杀掉进程,如下图,可以用如下命令:
    sudo kill -9 35346 # 杀掉pid为35346的进程
    sudo klill -9 35346 55323  # 杀掉多个进程

    第二种:此时nvidia-smi没有进程号。
    如下图:
    

    这种情况,需要先找到对应的进程,这时可以使用fuser命令。
    详细的fuser命令,建议参考 https://www.jianshu.com/p/a7d69cc9e704,我们这里给出解决的建议步骤:
    1、列出当前有哪些占用GPU资源的pid,命令如下:
    
fuser -v /dev/nvidia*
    结果如下(我的很长,仅仅截取部分):
    
2、删除对应的pid进程。依旧选用kill命令,有如下方式:
1)手写对应的pid,以删除pid为49807 49808 49808的三个为例: 
sudo kill -9 49807 49808 49808 
2)使用fuser 的-k命令,可以一条命令删除所有相关pid:
fuser -k -SIGHUP /dev/nvidia*
3)使用fuser 的-k -i等命令,可以在删除每一个相关pid时会让你做确认:
fuser -m -v -k -i  /dev/nvidia*
参考链接:

猜你喜欢

转载自blog.csdn.net/u012863603/article/details/119779912
今日推荐