Use PickleError base class to detect all pickle errors (#6917)

* Use PickleError base class to detect all pickle errors

* Update changelog with #6917

* Add pickle test for torch ScriptModule

Co-authored-by: Ken Witham <k.witham@kri.neu.edu>
Co-authored-by: Akihiro Nitta <nitta@akihironitta.com>
This commit is contained in:
SpontaneousDuck 2021-04-14 16:24:32 -04:00 committed by GitHub
parent 03a73b37bc
commit dcff5036a8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 3 deletions

View File

@ -243,7 +243,10 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
- Fixed `--gpus` default for parser returned by `Trainer.add_argparse_args` ([#6898](https://github.com/PyTorchLightning/pytorch-lightning/pull/6898))
- Fixed `AttributeError for `require_backward_grad_sync` when running manual optimization with sharded plugin ([#6915](https://github.com/PyTorchLightning/pytorch-lightning/pull/6915))
- Fixed pickle error checker to now check for `pickle.PickleError` to catch all pickle errors ([#6917](https://github.com/PyTorchLightning/pytorch-lightning/pull/6917))
- Fixed `AttributeError` for `require_backward_grad_sync` when running manual optimization with sharded plugin ([#6915](https://github.com/PyTorchLightning/pytorch-lightning/pull/6915))
- Fixed multi-gpu join for Horovod ([#6954](https://github.com/PyTorchLightning/pytorch-lightning/pull/6954))

View File

@ -61,7 +61,7 @@ def is_picklable(obj: object) -> bool:
try:
pickle.dumps(obj)
return True
except (pickle.PicklingError, AttributeError):
except (pickle.PickleError, AttributeError):
return False

View File

@ -15,6 +15,8 @@ import inspect
import pytest
from torch.jit import ScriptModule
from pytorch_lightning.utilities.parsing import (
AttributeDict,
clean_namespace,
@ -203,7 +205,7 @@ def test_is_picklable(tmpdir):
pass
true_cases = [None, True, 123, "str", (123, "str"), max]
false_cases = [unpicklable_function, UnpicklableClass]
false_cases = [unpicklable_function, UnpicklableClass, ScriptModule()]
for case in true_cases:
assert is_picklable(case) is True