`ProgressBar` created in `LightningModule.configure_callbacks` does not override default `ProgressBar`
#16,990 建立於 2023年3月7日
倉庫指標
- Star
- (26,687 star)
- PR 合併指標
- (平均合併 9天 15小時) (30 天內合併 3 個 PR)
描述
Bug description
Currently, the only way to truly override the default progress bar is to pass one to the Trainer.__init__ using the callbacks kwarg. When a progress bar is created via LightningModule.configure_callbacks, it does not override the default progress bar and instead co-exists with it. This likely happens because the Trainer does not call _callback_connector.configure_progress_bar when calling LightningModule.configure_callbacks.
How to reproduce
- Create a
LightningModule:
import pytorch_lightning as lightning
class MyModule(lightning.LightningModule):
...
def training_step(self, batch, batch_idx):
print("Callbacks:", list(self.trainer.callbacks))
...
def configure_callbacks(self):
return [ProgressBarBase()]
module = MyModule()
- Train without passing additional
callbacks:
trainer = pl.Trainer()
trainer.fit(module)
- Both progress bars are in the callbacks as can be seen in the
printwe defined intraining_step. Output will look something like this:
Callbacks: [TQDMProgressBar(), ProgressBarBase()]
Why is this a bug?
Passing multiple ProgressBars to Trainer.__init__ is prohibited with a MisconfigurationException. Having multiple ProgressBars in the way described above raises no error. It also causes weird output, because both progress bars are being updated.
cc @borda @awaelchli