Skip to content

Commit 3c5530c

Browse files
williamFalconvanpeltBorda
authored
Wandb bug/wandb multi (#1360)
* Allow reinits in sub procs * Dont create an experiment on pickle, name, or project * Comments consistency * Fix test * Apply suggestions from code review Co-authored-by: Chris Van Pelt <[email protected]> Co-authored-by: Jirka Borovec <[email protected]>
1 parent dd5a059 commit 3c5530c

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

pytorch_lightning/loggers/wandb.py

+9-5
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,11 @@ def __init__(self, name: Optional[str] = None, save_dir: Optional[str] = None,
6565

6666
def __getstate__(self):
6767
state = self.__dict__.copy()
68+
# args needed to reload correct experiment
69+
state['_id'] = self._experiment.id if self._experiment is not None else None
70+
6871
# cannot be pickled
6972
state['_experiment'] = None
70-
# args needed to reload correct experiment
71-
state['_id'] = self.experiment.id
7273
return state
7374

7475
@property
@@ -87,7 +88,7 @@ def experiment(self) -> Run:
8788
os.environ['WANDB_MODE'] = 'dryrun'
8889
self._experiment = wandb.init(
8990
name=self._name, dir=self._save_dir, project=self._project, anonymous=self._anonymous,
90-
id=self._id, resume='allow', tags=self._tags, entity=self._entity)
91+
reinit=True, id=self._id, resume='allow', tags=self._tags, entity=self._entity)
9192
# save checkpoints in wandb dir to upload on W&B servers
9293
if self._log_model:
9394
self.save_dir = self._experiment.dir
@@ -109,8 +110,11 @@ def log_metrics(self, metrics: Dict[str, float], step: Optional[int] = None) ->
109110

110111
@property
111112
def name(self) -> str:
112-
return self.experiment.project_name()
113+
# don't create an experiment if we don't have one
114+
name = self._experiment.project_name() if self._experiment else None
115+
return name
113116

114117
@property
115118
def version(self) -> str:
116-
return self.experiment.id
119+
# don't create an experiment if we don't have one
120+
return self._experiment.id if self._experiment else None

tests/loggers/test_wandb.py

+2
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ class Experiment:
5050
trainer_options = dict(max_epochs=1, logger=logger)
5151

5252
trainer = Trainer(**trainer_options)
53+
# Access the experiment to ensure it's created
54+
trainer.logger.experiment
5355
pkl_bytes = pickle.dumps(trainer)
5456
trainer2 = pickle.loads(pkl_bytes)
5557

0 commit comments

Comments
 (0)