Project-MONAI / Project-MONAI/MONAI
ResourceWarning: Implicitly cleaning up
オープン
まだ誰も着手していません。
bug
- 主要言語
- Python
- スター
- 8.7k
- フォーク
- 1.6k
- 平均マージ
- 5日 1時間
- マージ済み PR(30日)
- 20
説明
Describe the bug
warning message from
python -W error -c "import monai"
with pytorch 2.0
Traceback (most recent call last):
File "/usr/local/anaconda3/envs/py38/lib/python3.8/weakref.py", line 642, in _exitfunc
f()
File "/usr/local/anaconda3/envs/py38/lib/python3.8/weakref.py", line 566, in __call__
return info.func(*info.args, **(info.kwargs or {}))
File "/usr/local/anaconda3/envs/py38/lib/python3.8/tempfile.py", line 818, in _cleanup
_warnings.warn(warn_message, ResourceWarning)
ResourceWarning: Implicitly cleaning up <TemporaryDirectory '/var/folders/6f/fdkl7m0x7sz3nj_t7p3ccgz00000gp/T/tmpqtvvcx_b'>
debugging further looks like it's triggered via importing pytorch ignite
/usr/local/anaconda3/envs/py38/lib/python3.8/site-packages/ignite/handlers/checkpoint.py(17)<module>()
-> from torch.distributed.optim import ZeroRedundancyOptimizer
<frozen importlib._bootstrap>(991)_find_and_load()
<frozen importlib._bootstrap>(975)_find_and_load_unlocked()
<frozen importlib._bootstrap>(671)_load_unlocked()
<frozen importlib._bootstrap_external>(843)exec_module()
<frozen importlib._bootstrap>(219)_call_with_frames_removed()
/usr/local/anaconda3/envs/py38/lib/python3.8/site-packages/torch/distributed/optim/__init__.py(20)<module>()
-> from .named_optimizer import _NamedOptimizer
<frozen importlib._bootstrap>(991)_find_and_load()
<frozen importlib._bootstrap>(975)_find_and_load_unlocked()
<frozen importlib._bootstrap>(671)_load_unlocked()
<frozen importlib._bootstrap_external>(843)exec_module()
<frozen importlib._bootstrap>(219)_call_with_frames_removed()
/usr/local/anaconda3/envs/py38/lib/python3.8/site-packages/torch/distributed/optim/named_optimizer.py(10)<module>()
-> from torch.distributed._shard.sharded_tensor import ShardedTensor
<frozen importlib._bootstrap>(991)_find_and_load()
<frozen importlib._bootstrap>(961)_find_and_load_unlocked()
<frozen importlib._bootstrap>(219)_call_with_frames_removed()
<frozen importlib._bootstrap>(991)_find_and_load()
<frozen importlib._bootstrap>(975)_find_and_load_unlocked()
<frozen importlib._bootstrap>(671)_load_unlocked()
<frozen importlib._bootstrap_external>(843)exec_module()
<frozen importlib._bootstrap>(219)_call_with_frames_removed()
/usr/local/anaconda3/envs/py38/lib/python3.8/site-packages/torch/distributed/_shard/__init__.py(1)<module>()
-> from .api import (
<frozen importlib._bootstrap>(991)_find_and_load()
<frozen importlib._bootstrap>(975)_find_and_load_unlocked()
<frozen importlib._bootstrap>(671)_load_unlocked()
<frozen importlib._bootstrap_external>(843)exec_module()
<frozen importlib._bootstrap>(219)_call_with_frames_removed()
/usr/local/anaconda3/envs/py38/lib/python3.8/site-packages/torch/distributed/_shard/api.py(6)<module>()
-> from torch.distributed._shard.sharded_tensor import (
<frozen importlib._bootstrap>(991)_find_and_load()
<frozen importlib._bootstrap>(975)_find_and_load_unlocked()
<frozen importlib._bootstrap>(671)_load_unlocked()
<frozen importlib._bootstrap_external>(843)exec_module()
<frozen importlib._bootstrap>(219)_call_with_frames_removed()
/usr/local/anaconda3/envs/py38/lib/python3.8/site-packages/torch/distributed/_shard/sharded_tensor/__init__.py(9)<module>()
-> from torch.distributed._shard.partial_tensor import _PartialTensor
<frozen importlib._bootstrap>(991)_find_and_load()
<frozen importlib._bootstrap>(975)_find_and_load_unlocked()
<frozen importlib._bootstrap>(671)_load_unlocked()
<frozen importlib._bootstrap_external>(843)exec_module()
<frozen importlib._bootstrap>(219)_call_with_frames_removed()
/usr/local/anaconda3/envs/py38/lib/python3.8/site-packages/torch/distributed/_shard/partial_tensor.py(8)<module>()
-> from torch.distributed.nn.functional import (
<frozen importlib._bootstrap>(991)_find_and_load()
<frozen importlib._bootstrap>(961)_find_and_load_unlocked()
<frozen importlib._bootstrap>(219)_call_with_frames_removed()
<frozen importlib._bootstrap>(991)_find_and_load()
<frozen importlib._bootstrap>(975)_find_and_load_unlocked()
<frozen importlib._bootstrap>(671)_load_unlocked()
<frozen importlib._bootstrap_external>(843)exec_module()
<frozen importlib._bootstrap>(219)_call_with_frames_removed()
/usr/local/anaconda3/envs/py38/lib/python3.8/site-packages/torch/distributed/nn/__init__.py(3)<module>()
-> from .api.remote_module import RemoteModule
<frozen importlib._bootstrap>(991)_find_and_load()
<frozen importlib._bootstrap>(975)_find_and_load_unlocked()
<frozen importlib._bootstrap>(671)_load_unlocked()
<frozen importlib._bootstrap_external>(843)exec_module()
<frozen importlib._bootstrap>(219)_call_with_frames_removed()
/usr/local/anaconda3/envs/py38/lib/python3.8/site-packages/torch/distributed/nn/api/remote_module.py(24)<module>()
-> from torch.distributed.nn.jit import instantiator
<frozen importlib._bootstrap>(1042)_handle_fromlist()
<frozen importlib._bootstrap>(219)_call_with_frames_removed()
<frozen importlib._bootstrap>(991)_find_and_load()
<frozen importlib._bootstrap>(975)_find_and_load_unlocked()
<frozen importlib._bootstrap>(671)_load_unlocked()
<frozen importlib._bootstrap_external>(843)exec_module()
<frozen importlib._bootstrap>(219)_call_with_frames_removed()
/usr/local/anaconda3/envs/py38/lib/python3.8/site-packages/torch/distributed/nn/jit/instantiator.py(19)<module>()
-> _TEMP_DIR = tempfile.TemporaryDirectory()
/usr/local/anaconda3/envs/py38/lib/python3.8/tempfile.py(781)__init__()
-> self._finalizer = _weakref.finalize(
> /usr/local/anaconda3/envs/py38/lib/python3.8/weakref.py(519)__init__()
-> if len(args) >= 3:
(fyi @vfdev-5 )
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
python -W error -c "import monai" で警告を再現し、PyTorch Ignite を経由して一時ディレクトリが作成される torch.distributed.nn.jit.instantiator.py までのインポートチェーンを調査します。MONAI がクリーンアップ警告の発生を回避できるかを確認します。完了条件は、インポートによって報告された ResourceWarning が発生しなくなることです。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python, pytorch
- 領域
- machine-learning
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 25/100