From a4f7497254a2b199552833a240f75fd5d90ec0cf Mon Sep 17 00:00:00 2001 From: Philipp Singer Date: Sat, 23 Jan 2021 17:07:13 +0100 Subject: [PATCH] fix Neptune logger creating multiple experiments when gpus > 1 (#3256) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * DP device fix * potential fix * fix merge * update tests Co-authored-by: Adrian Wälchli Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- pytorch_lightning/loggers/neptune.py | 2 +- tests/loggers/test_neptune.py | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/pytorch_lightning/loggers/neptune.py b/pytorch_lightning/loggers/neptune.py index 803302f87545f..41585754c5f26 100644 --- a/pytorch_lightning/loggers/neptune.py +++ b/pytorch_lightning/loggers/neptune.py @@ -199,7 +199,7 @@ def __init__( self._prefix = prefix self._kwargs = kwargs self.experiment_id = experiment_id - self._experiment = self._create_or_get_experiment() + self._experiment = None log.info(f'NeptuneLogger will work in {"offline" if self.offline_mode else "online"} mode') diff --git a/tests/loggers/test_neptune.py b/tests/loggers/test_neptune.py index 14d6e32d4023e..23c0719b7d12c 100644 --- a/tests/loggers/test_neptune.py +++ b/tests/loggers/test_neptune.py @@ -29,6 +29,8 @@ def test_neptune_online(neptune): # It's important to check if the internal variable _experiment was initialized in __init__. # Calling logger.experiment would cause a side-effect of initializing _experiment, # if it wasn't already initialized. + assert logger._experiment is None + _ = logger.experiment assert logger._experiment == created_experiment assert logger.name == created_experiment.name assert logger.version == created_experiment.id @@ -37,10 +39,9 @@ def test_neptune_online(neptune): @patch('pytorch_lightning.loggers.neptune.neptune') def test_neptune_existing_experiment(neptune): logger = NeptuneLogger(experiment_id='TEST-123') - - neptune.Session.with_default_backend().get_project().get_experiments.assert_called_once_with(id='TEST-123') - + neptune.Session.with_default_backend().get_project().get_experiments.assert_not_called() experiment = logger.experiment + neptune.Session.with_default_backend().get_project().get_experiments.assert_called_once_with(id='TEST-123') assert logger.experiment_name == experiment.get_system_properties()['name'] assert logger.params == experiment.get_parameters() assert logger.properties == experiment.get_properties() @@ -50,7 +51,8 @@ def test_neptune_existing_experiment(neptune): @patch('pytorch_lightning.loggers.neptune.neptune') def test_neptune_offline(neptune): logger = NeptuneLogger(offline_mode=True) - + neptune.Session.assert_not_called() + _ = logger.experiment neptune.Session.assert_called_once_with(backend=neptune.OfflineBackend()) assert logger.experiment == neptune.Session().get_project().create_experiment()