答案 0 :(得分:0)
我遇到了类似的问题,GPU 上的一个 pytorch 进程变成了僵尸进程,并使用了 GPU 内存。此外,在我的情况下,该过程显示 GPU 使用率为 100%(GPU-util
输出中的 nvidia-smi
)。 目前我找到的唯一解决方案是重新启动系统。
如果您想尝试其他解决方案,我在重新启动之前尝试过(没有成功):
init
(pid=1) 的子进程。 init
应该自动获取僵尸进程,但在我的情况下没有发生这种情况(仍然可以通过 ps
找到该进程,并且未释放 GPU 内存)。SIGCHLD
到init
(命令:kill -17 1
),强制收割,但是init
依然没有收割进程,gpu内存还在使用。 fuser -v /dev/nvidia*
,但在我的案例中没有发现其他 python 进程(除了原始僵尸进程) ./dev/nvidia0
来终止访问fuser -k /dev/nvidia0
的进程。这并没有影响僵尸进程。nvidia-smi --gpu-reset -i <device>
,但这抛出了 device is currently being used by one or more other processes... Please first kill all processes using this device...
最后,唯一的解决办法是重新启动系统。
我不确定首先是什么导致了错误。我在单个 GPU 中进行了 pytorch 脚本训练,并且多次使用相同的脚本没有问题。我使用 Dataloader
使用了 num_workers=5
,我怀疑这可能是罪魁祸首,但我不能确定。进程突然挂了,没有抛出异常或任何东西,导致 GPU 无法使用。
我使用的版本是:pytorch 1.7.1+cu110
,nvidia-driver 455.45.01,在 Ubuntu 18.04 中运行