跳到主要内容

显存没有释放

1. 检查显存占用

首先使用如下命令检查 GPU 显存使用情况:

nvidia-smi

若程序已关闭但仍有显存占用,说明有残留进程未结束。

2. 查找并结束占用显存的进程

步骤一:查找进程

使用 ps -ef 命令查看所有进程:

ps -ef

重点关注 PID(进程ID)、PPID(父进程ID)、CMD(启动命令)三列。一般自己启动的训练进程(如 python train.py)才会占用显存。

步骤二:结束进程

假设要结束的进程ID为 594 和 797,可执行:

kill -9 594 797

多卡并行时,进程较多,建议用如下方法批量结束:

  1. 通过关键字过滤自己的进程(如 train):
ps -ef | grep train
  1. 获取所有相关进程ID并批量结束:
ps -ef | grep train | awk '{print $2}' | xargs kill -9

注:出现 No such process 可忽略,因 grep 进程本身也会被过滤。

3. Linux 管道符号说明

Linux 命令中的 |(管道)用于将前一个命令的输出作为下一个命令的输入,非常适合批量处理和筛选。例如:

  • 查找某目录下所有 txt 文件:
ls | grep .txt

管道用法广泛,能极大提升命令行处理效率。