Skip to content

Commit 82298ad

Browse files
authored
Fix torch.load() in PersistentDataset and GDSDataset (#8177)
### Description Frequently getting warning massage in a newer Pytorch version (2.4.1 in my case): "_You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature._" This pull request fixes an issue with the `torch.load()` function in the `PersistentDataset` and `GDSDataset` classes by adding `weights_only=False`. The fix ensures that the `torch.load()` function maintains load consistency in future versions of PyTorch. ### Types of changes <!--- Put an `x` in all the boxes that apply, and remove the not applicable items --> - [x] Non-breaking change (fix or new feature that would not break existing functionality). - [ ] Breaking change (fix or new feature that would cause existing functionality to change). - [ ] New tests added to cover the changes. - [ ] Integration tests passed locally by running `./runtests.sh -f -u --net --coverage`. - [ ] Quick tests passed locally by running `./runtests.sh --quick --unittests --disttests`. - [ ] In-line docstrings updated. - [ ] Documentation updated, tested `make html` command in the `docs/` folder. --------- Signed-off-by: bnbqq8 <bnbqq8@i.smu.edu.cn>
1 parent 5b2d78e commit 82298ad

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

monai/data/dataset.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import warnings
2323
from collections.abc import Callable, Sequence
2424
from copy import copy, deepcopy
25+
from inspect import signature
2526
from multiprocessing.managers import ListProxy
2627
from multiprocessing.pool import ThreadPool
2728
from pathlib import Path
@@ -371,7 +372,10 @@ def _cachecheck(self, item_transformed):
371372

372373
if hashfile is not None and hashfile.is_file(): # cache hit
373374
try:
374-
return torch.load(hashfile)
375+
if "weights_only" in signature(torch.load).parameters:
376+
return torch.load(hashfile, weights_only=False)
377+
else:
378+
return torch.load(hashfile)
375379
except PermissionError as e:
376380
if sys.platform != "win32":
377381
raise e
@@ -1670,4 +1674,7 @@ def _load_meta_cache(self, meta_hash_file_name):
16701674
if meta_hash_file_name in self._meta_cache:
16711675
return self._meta_cache[meta_hash_file_name]
16721676
else:
1673-
return torch.load(self.cache_dir / meta_hash_file_name)
1677+
if "weights_only" in signature(torch.load).parameters:
1678+
return torch.load(self.cache_dir / meta_hash_file_name, weights_only=False)
1679+
else:
1680+
return torch.load(self.cache_dir / meta_hash_file_name)

0 commit comments

Comments
 (0)