How to disable progress bar in Pytorch Lightning

I would like to know if these issues can be solved or else how can I disable the progress bar and instead, just print some log details on the screen.

As far as I know this problem is still unresolved. The pl team points that it is "TQDM related thing" and they can't do anything about it. Maybe you want to read this issue

My temporary fix is :

from tqdm import tqdm

class LitProgressBar(ProgressBar):
   
    def init_validation_tqdm(self):
        bar = tqdm(            
            disable=True,            
        )
        return bar

bar = LitProgressBar()
trainer = Trainer(callbacks=[bar])

This method simply disables the validation progress bar and allows you to keep the correct training bar [refer 1 and 2]. Note that using progress_bar_refresh_rate=0 will disable the update of all progress bars.

Further solution: (Update1 2021-07-22)

According to this answer, the tqdm seems to only be glitching in the PyCharm console. So, a possible answer is to do something with Pycharm setting. Fortunately, I find this answer

  1. Go to "Edit configurations". Click on the run/debug configuration that is being used. There should be an option "Emulate terminal in output console". Check that. Image added for reference. image

  2. Along with the position argument also set the leave argument. The code should look like this. I have added ncols so that the progress bar doesn't take up whole of the console.

from tqdm import tqdm import time
for i in tqdm(range(5), position=0, desc="i", leave=False, colour='green', ncols=80):
    for j in tqdm(range(10), position=1, desc="j", leave=False, colour='red', ncols=80):
        time.sleep(0.5) 

When the code is now run, the output of the console is as shown below.

i:  20%|████████▍                                 | 1/5 [00:05<00:20,  5.10s/it] 
j:  60%|████████████████████████▌            | 6/10 [00:03<00:02,  1.95it/s] 

Follwing the above two steps, we can display the progress bar in the Pycharm in the normal way. To finish the step2 in the Pytorch-lightning, we need to override functions init_train_tqdm(), init_validation_tqdm(), init_test_tqdm() to change the ncols. Some codes like this (hope it helps):

class LitProgressBar(ProgressBar):

    def init_train_tqdm(self) -> tqdm:
        """ Override this to customize the tqdm bar for training. """
        bar = tqdm(
            desc='Training',
            initial=self.train_batch_idx,
            position=(2 * self.process_position),
            disable=self.is_disabled,
            leave=True,
            dynamic_ncols=False,  # This two lines are only for pycharm
            ncols=100,
            file=sys.stdout,
            smoothing=0,
        )
        return bar

    def init_validation_tqdm(self) -> tqdm:
        """ Override this to customize the tqdm bar for validation. """
        # The main progress bar doesn't exist in `trainer.validate()`
        has_main_bar = self.main_progress_bar is not None
        bar = tqdm(
            desc='Validating',
            position=(2 * self.process_position + has_main_bar),
            disable=self.is_disabled,
            leave=False,
            dynamic_ncols=False,
            ncols=100,
            file=sys.stdout
        )
        return bar

    def init_test_tqdm(self) -> tqdm:
        """ Override this to customize the tqdm bar for testing. """
        bar = tqdm(
            desc="Testing",
            position=(2 * self.process_position),
            disable=self.is_disabled,
            leave=True,
            dynamic_ncols=False,
            ncols=100,
            file=sys.stdout
        )
        return bar

If it does not work for you, please update the version of Pytorch-lightning to the lastest one.


F.Y.I. show_progress_bar=False deprecated since version 0.7.2, but you can use progress_bar_refresh_rate=0


update:

progress_bar_refresh_rate has been deprecated in v1.5 and will be removed in v1.7. To disable the progress bar, set enable_progress_bar to false

progress_bar_refresh_rate: How often to refresh progress bar (in steps). Value ``0`` disables progress bar.
    Ignored when a custom progress bar is passed to :paramref:`~Trainer.callbacks`. Default: None, means
    a suitable value will be chosen based on the environment (terminal, Google COLAB, etc.).

    .. deprecated:: v1.5
        ``progress_bar_refresh_rate`` has been deprecated in v1.5 and will be removed in v1.7.
        Please pass :class:`~pytorch_lightning.callbacks.progress.TQDMProgressBar` with ``refresh_rate``
        directly to the Trainer's ``callbacks`` argument instead. To disable the progress bar,
        pass ``enable_progress_bar = False`` to the Trainer.

enable_progress_bar: Whether to enable to progress bar by default.

Use the command show_progress_bar=False in Trainer.

Tags:

Pytorch

Tqdm