pytorch - 僵尸进程不允许释放 GPU 内存
解决方案
我遇到了类似的问题,GPU 上的 pytorch 进程变成了僵尸并使用了 GPU 内存。此外,在我的情况下,该过程在 GPU 中显示 100% 的使用率(GPU-util
在nvidia-smi
输出中)。到目前为止,我发现的唯一解决方案是重新启动系统。
如果您想尝试其他解决方案,我在重新启动之前尝试过(没有成功):
- 杀死僵尸进程的父进程:见这个答案。此后,子僵尸进程成为
init
(pid=1)的子进程。init
应该自动收割僵尸进程,但这在我的情况下没有发生(仍然可以使用 找到该进程ps
,并且未释放 gpu 内存)。 - 发送
SIGCHLD
到init
(command:kill -17 1
),强制收割,但init
仍然没有收割进程,gpu 内存仍在使用中。 - 正如这个答案所建议的,我检查了其他可能相关并使用 GPU: 的子进程
fuser -v /dev/nvidia*
,但在我的案例中没有找到其他 python 进程(除了原始的僵尸进程)。 - 正如本期
/dev/nvidia0
所建议的,通过运行来杀死正在访问的进程fuser -k /dev/nvidia0
。这并不影响僵尸进程。 - 使用 nvidia-smi: 清除 gpu
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
using num_workers=5
,我怀疑这可能是罪魁祸首,但我不能确定。该进程突然挂起,没有抛出异常或任何东西,并使 GPU 无法使用。
我正在使用版本:pytorch 1.7.1+cu110
,nvidia-driver 455.45.01,在 Ubuntu 18.04 中运行
推荐阅读
- wordpress - 在使用多个域的 Wordpress 安装的多个页面上显示相同的 ACF Pro 内容
- android - 我的 JobIntentService 在 JobParameters.completeWork 方法中有很多崩溃?
- visual-studio - Mads Kristensen 扩展的 Web 编译器 - VS Code Mac 下载
- c# - 如何使用 webview2 获取 HTTP 请求正文
- javascript - 从 Livewire eventDispatch 向 Alpine.js 发送消息
- sql - 在另一列中选择具有特定条目的 ID
- java - 为什么我的罐子没有用 MC 龙头着色?
- dbt - 如何使用 DBT 验证查询?
- javascript - MSAL 2.*.js 是否适用于 IE 11?
- flutter - 你如何测试一个消耗流的颤振块