显存没有释放
1. 检查显存占用
首先使用如下命令检查 GPU 显存使用情况:
nvidia-smi
若程序已关闭但仍有显存占用,说明有残留进程未结束。
2. 查找并结束占用显存的进程
步骤一:查找进程
使用 ps -ef 命令查看所有进程:
ps -ef
重点关注 PID(进程ID)、PPID(父进程ID)、CMD(启动命令)三列。一般自己启动的训练进程(如 python train.py)才会占用显存。
步骤二:结束进程
假设要结束的进程ID为 594 和 797,可执行:
kill -9 594 797
多卡并行时,进程较多,建议用如下方法批量结束:
- 通过关键字过滤自己的进程(如 train):
ps -ef | grep train
- 获取所有相关进程ID并批量结束:
ps -ef | grep train | awk '{print $2}' | xargs kill -9
注:出现
No such process可忽略,因 grep 进程本身也会被过滤。
3. Linux 管道符号说明
Linux 命令中的 |(管道)用于将前一个命令的输出作为下一个命令的输入,非常适合批量处理和筛选。例如:
- 查找某目录下所有 txt 文件:
ls | grep .txt
管道用法广泛,能极大提升命令行处理效率。