AttributeError: 'DataSplitter' object has no attribute '_has_setup_TrainerFn.FITTING'

Hi,

I am trying to follow the SCVI tutorial. I got this error message when running “vae.train()”:

GPU available: True, used: True
TPU available: False, using: 0 TPU cores
IPU available: False, using: 0 IPUs

AttributeError Traceback (most recent call last)
Cell In[8], line 1
----> 1 vae.train()

File /opt/conda/lib/python3.11/site-packages/scvi/model/base/_training_mixin.py:77, in UnsupervisedTrainingMixin.train(self, max_epochs, use_gpu, train_size, validation_size, batch_size, early_stopping, plan_kwargs, **trainer_kwargs)
66 trainer_kwargs[es] = (
67 early_stopping if es not in trainer_kwargs.keys() else trainer_kwargs[es]
68 )
69 runner = TrainRunner(
70 self,
71 training_plan=training_plan,
(…)
75 **trainer_kwargs,
76 )
—> 77 return runner()

File /opt/conda/lib/python3.11/site-packages/scvi/train/_trainrunner.py:74, in TrainRunner.call(self)
71 if hasattr(self.data_splitter, “n_val”):
72 self.training_plan.n_obs_validation = self.data_splitter.n_val
—> 74 self.trainer.fit(self.training_plan, self.data_splitter)
75 self._update_history()
77 # data splitter only gets these attrs after fit

File /opt/conda/lib/python3.11/site-packages/scvi/train/_trainer.py:186, in Trainer.fit(self, *args, **kwargs)
180 if isinstance(args[0], PyroTrainingPlan):
181 warnings.filterwarnings(
182 action=“ignore”,
183 category=UserWarning,
184 message=“LightningModule.configure_optimizers returned None”,
185 )
→ 186 super().fit(*args, **kwargs)

File /opt/conda/lib/python3.11/site-packages/pytorch_lightning/trainer/trainer.py:740, in Trainer.fit(self, model, train_dataloaders, val_dataloaders, datamodule, train_dataloader, ckpt_path)
735 rank_zero_deprecation(
736 “trainer.fit(train_dataloader) is deprecated in v1.4 and will be removed in v1.6.”
737 " Use trainer.fit(train_dataloaders) instead. HINT: added ‘s’"
738 )
739 train_dataloaders = train_dataloader
→ 740 self._call_and_handle_interrupt(
741 self._fit_impl, model, train_dataloaders, val_dataloaders, datamodule, ckpt_path
742 )

File /opt/conda/lib/python3.11/site-packages/pytorch_lightning/trainer/trainer.py:685, in Trainer._call_and_handle_interrupt(self, trainer_fn, *args, **kwargs)
675 r"“”
676 Error handling, intended to be used only for main trainer function entry points (fit, validate, test, predict)
677 as all errors should funnel through them
(…)
682 **kwargs: keyword arguments to be passed to trainer_fn
683 “”"
684 try:
→ 685 return trainer_fn(*args, **kwargs)
686 # TODO: treat KeyboardInterrupt as BaseException (delete the code below) in v1.7
687 except KeyboardInterrupt as exception:

File /opt/conda/lib/python3.11/site-packages/pytorch_lightning/trainer/trainer.py:777, in Trainer._fit_impl(self, model, train_dataloaders, val_dataloaders, datamodule, ckpt_path)
775 # TODO: ckpt_path only in v1.7
776 ckpt_path = ckpt_path or self.resume_from_checkpoint
→ 777 self._run(model, ckpt_path=ckpt_path)
779 assert self.state.stopped
780 self.training = False

File /opt/conda/lib/python3.11/site-packages/pytorch_lightning/trainer/trainer.py:1138, in Trainer._run(self, model, ckpt_path)
1136 self.call_hook(“on_before_accelerator_backend_setup”)
1137 self.accelerator.setup_environment()
→ 1138 self._call_setup_hook() # allow user to setup lightning_module in accelerator environment
1140 # check if we should delay restoring checkpoint till later
1141 if not self.training_type_plugin.restore_checkpoint_after_pre_dispatch:

File /opt/conda/lib/python3.11/site-packages/pytorch_lightning/trainer/trainer.py:1438, in Trainer._call_setup_hook(self)
1435 self.training_type_plugin.barrier(“pre_setup”)
1437 if self.datamodule is not None:
→ 1438 self.datamodule.setup(stage=fn)
1439 self.call_hook(“setup”, stage=fn)
1441 self.training_type_plugin.barrier(“post_setup”)

File /opt/conda/lib/python3.11/site-packages/pytorch_lightning/core/datamodule.py:461, in LightningDataModule.track_data_hook_calls..wrapped_fn(*args, **kwargs)
459 else:
460 attr = f"has{name}
{stage}"
→ 461 has_run = getattr(obj, attr)
462 setattr(obj, attr, True)
464 elif name == “prepare_data”:

AttributeError: ‘DataSplitter’ object has no attribute ‘_has_setup_TrainerFn.FITTING’

Hi, could paste the scvi-tools and PyTorch Lightning versions you have installed?

Yes.

scvi version: 0.16.4
pl version: 1.5.10

Thanks.

Hi, I would recommend upgrading to the latest scvi-tools (1.0.0) and lightning (2.0.3) versions and seeing if the issue still persists

Works now. Thank you!

1 Like