Pytorch 僵尸进程不允许释放GPU内存
我正在GPU中加载NLP模型以进行推断。 但一旦推断结束,GPU不会释放其内存: 但是随后命令Pytorch 僵尸进程不允许释放GPU内存,pytorch,nvidia,zombie-process,Pytorch,Nvidia,Zombie Process,我正在GPU中加载NLP模型以进行推断。 但一旦推断结束,GPU不会释放其内存: 但是随后命令ps-a | grep python给了我 如何解决这个问题?我遇到了一个类似的问题,GPU上的pytorch进程变成了僵尸,留下了GPU内存。此外,在我的例子中,该过程在GPU中显示了100%的使用率(nvidia smi输出中的GPU util)到目前为止,我找到的唯一解决方案是重新启动系统。 如果您想尝试其他解决方案,我在重新启动前尝试过(未成功): 杀死僵尸进程的父进程:请参阅。在此之后,
ps-a | grep python
给了我
如何解决这个问题?我遇到了一个类似的问题,GPU上的pytorch进程变成了僵尸,留下了GPU内存。此外,在我的例子中,该过程在GPU中显示了100%的使用率(
nvidia smi
输出中的GPU util
)到目前为止,我找到的唯一解决方案是重新启动系统。
如果您想尝试其他解决方案,我在重新启动前尝试过(未成功):
- 杀死僵尸进程的父进程:请参阅。在此之后,子僵尸进程成为
(pid=1)的子进程init
应该自动捕获僵尸进程,但在我的例子中没有发生这种情况(进程仍然可以通过init
找到,并且gpu内存没有被释放)ps
- 将
发送到SIGCHLD
(命令:init
),以强制收割,但kill-17 1
仍然没有收割进程,gpu内存仍在使用init
- 正如所建议的,我使用GPU检查了其他可能相关的子进程:
,但在我的案例中没有找到其他python进程(除了原始的僵尸进程)fuser-v/dev/nvidia*
- 如中所建议的,通过运行
来终止正在访问fuser-k/dev/nvidia0
的进程。这并没有影响僵尸进程/dev/nvidia0
- 正在使用nvidia smi清除gpu:
,但该设备当前正被一个或多个其他进程使用。。。请先关闭使用此设备的所有进程…nvidia smi--gpu重置-i
Dataloader
使用num_workers=5
,我怀疑这可能是罪魁祸首,但我不能确定。进程突然挂起,没有抛出异常或任何东西,并使GPU无法使用
我使用的版本是:pytorch
1.7.1+cu110
,nvidia驱动程序455.45.01,运行于Ubuntu 18.04我遇到了类似的问题,GPU上的pytorch进程变成了僵尸,留下了GPU内存。此外,在我的例子中,该过程在GPU中显示了100%的使用率(nvidia smi
输出中的GPU util
)到目前为止,我找到的唯一解决方案是重新启动系统。
如果您想尝试其他解决方案,我在重新启动前尝试过(未成功):
- 杀死僵尸进程的父进程:请参阅。在此之后,子僵尸进程成为
(pid=1)的子进程init
应该自动捕获僵尸进程,但在我的例子中没有发生这种情况(进程仍然可以通过init
找到,并且gpu内存没有被释放)ps
- 将
发送到SIGCHLD
(命令:init
),以强制收割,但kill-17 1
仍然没有收割进程,gpu内存仍在使用init
- 正如所建议的,我使用GPU检查了其他可能相关的子进程:
,但在我的案例中没有找到其他python进程(除了原始的僵尸进程)fuser-v/dev/nvidia*
- 如中所建议的,通过运行
来终止正在访问fuser-k/dev/nvidia0
的进程。这并没有影响僵尸进程/dev/nvidia0
- 正在使用nvidia smi清除gpu:
,但该设备当前正被一个或多个其他进程使用。。。请先关闭使用此设备的所有进程…nvidia smi--gpu重置-i
Dataloader
使用num_workers=5
,我怀疑这可能是罪魁祸首,但我不能确定。进程突然挂起,没有抛出异常或任何东西,并使GPU无法使用
我使用的版本是:pytorch1.7.1+cu110
,nvidia驱动程序455.45.01,运行在Ubuntu 18.04中