Pytorch 僵尸进程不允许释放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)到目前为止,我找到的唯一解决方案是重新启动系统。 如果您想尝试其他解决方案,我在重新启动前尝试过(未成功): 杀死僵尸进程的父进程:请参阅。在此之后,

我正在GPU中加载NLP模型以进行推断。 但一旦推断结束,GPU不会释放其内存:

但是随后命令
ps-a | grep python
给了我


如何解决这个问题?

我遇到了一个类似的问题,GPU上的pytorch进程变成了僵尸,留下了GPU内存。此外,在我的例子中,该过程在GPU中显示了100%的使用率(
nvidia smi
输出中的
GPU util
到目前为止,我找到的唯一解决方案是重新启动系统。

如果您想尝试其他解决方案,我在重新启动前尝试过(未成功):

  • 杀死僵尸进程的父进程:请参阅。在此之后,子僵尸进程成为
    init
    (pid=1)的子进程
    init
    应该自动捕获僵尸进程,但在我的例子中没有发生这种情况(进程仍然可以通过
    ps
    找到,并且gpu内存没有被释放)
  • SIGCHLD
    发送到
    init
    (命令:
    kill-17 1
    ),以强制收割,但
    init
    仍然没有收割进程,gpu内存仍在使用
  • 正如所建议的,我使用GPU检查了其他可能相关的子进程:
    fuser-v/dev/nvidia*
    ,但在我的案例中没有找到其他python进程(除了原始的僵尸进程)
  • 如中所建议的,通过运行
    fuser-k/dev/nvidia0
    来终止正在访问
    /dev/nvidia0
    的进程。这并没有影响僵尸进程
  • 正在使用nvidia smi清除gpu:
    nvidia smi--gpu重置-i
    ,但该设备当前正被一个或多个其他进程使用。。。请先关闭使用此设备的所有进程…
最后,唯一的解决方案是重新启动系统

我不确定首先是什么导致了这个错误。我在一个GPU中接受了pytorch脚本培训,并且多次使用相同的脚本,没有问题。我使用了
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
到目前为止,我找到的唯一解决方案是重新启动系统。

如果您想尝试其他解决方案,我在重新启动前尝试过(未成功):

  • 杀死僵尸进程的父进程:请参阅。在此之后,子僵尸进程成为
    init
    (pid=1)的子进程
    init
    应该自动捕获僵尸进程,但在我的例子中没有发生这种情况(进程仍然可以通过
    ps
    找到,并且gpu内存没有被释放)
  • SIGCHLD
    发送到
    init
    (命令:
    kill-17 1
    ),以强制收割,但
    init
    仍然没有收割进程,gpu内存仍在使用
  • 正如所建议的,我使用GPU检查了其他可能相关的子进程:
    fuser-v/dev/nvidia*
    ,但在我的案例中没有找到其他python进程(除了原始的僵尸进程)
  • 如中所建议的,通过运行
    fuser-k/dev/nvidia0
    来终止正在访问
    /dev/nvidia0
    的进程。这并没有影响僵尸进程
  • 正在使用nvidia smi清除gpu:
    nvidia smi--gpu重置-i
    ,但该设备当前正被一个或多个其他进程使用。。。请先关闭使用此设备的所有进程…
最后,唯一的解决方案是重新启动系统

我不确定首先是什么导致了这个错误。我在一个GPU中接受了pytorch脚本培训,并且多次使用相同的脚本,没有问题。我使用了
Dataloader
使用
num_workers=5
,我怀疑这可能是罪魁祸首,但我不能确定。进程突然挂起,没有抛出异常或任何东西,并使GPU无法使用

我使用的版本是:pytorch
1.7.1+cu110
,nvidia驱动程序455.45.01,运行在Ubuntu 18.04中