Incorrect progress bar during validation
🐛 Bug

when running for multiple epochs, the progress bar doesn't look right.
While during training the progress bar looks fine (percentage increases and rewrites over) - in the example below this goes on fine until 67% of the epoch. However, during validation instead of switching to "Validating", the "training" progress bar is printed over it, and again on a new line for every validation iteration.
Here's where i think the "validation" message is printed: https://github.com/PyTorchLightning/pytorch-lightning/blob/master/pytorch_lightning/callbacks/progress.py#L349
and immediately after that, it's overwritten: https://github.com/PyTorchLightning/pytorch-lightning/blob/master/pytorch_lightning/callbacks/progress.py#L350
Epoch 0:  67%|██████▋   | 1000/1500 [00:03<00:01, 284.98it/s, loss=0.054, v_num=14]
Epoch 0:  68%|██████▊   | 1014/1500 [00:03<00:01, 288.05it/s, loss=0.054, v_num=14]
Epoch 0:  78%|███████▊  | 1166/1500 [00:03<00:01, 322.01it/s, loss=0.054, v_num=14]
Epoch 0:  89%|████████▉ | 1332/1500 [00:03<00:00, 357.92it/s, loss=0.054, v_num=14]
Epoch 0: 100%|██████████| 1500/1500 [00:03<00:00, 391.67it/s, loss=0.054, v_num=14]
Epoch 1:  67%|██████▋   | 1000/1500 [00:03<00:01, 270.00it/s, loss=0.051, v_num=14]
Epoch 1:  78%|███████▊  | 1174/1500 [00:03<00:01, 309.87it/s, loss=0.051, v_num=14]
Epoch 1:  91%|█████████ | 1358/1500 [00:03<00:00, 349.22it/s, loss=0.051, v_num=14]
Epoch 1: 100%|██████████| 1500/1500 [00:03<00:00, 377.86it/s, loss=0.051, v_num=14]
Epoch 2:  67%|██████▋   | 1000/1500 [00:04<00:02, 238.99it/s, loss=0.049, v_num=14]
Epoch 2:  74%|███████▎  | 1104/1500 [00:04<00:01, 260.11it/s, loss=0.049, v_num=14]
Epoch 2:  88%|████████▊ | 1314/1500 [00:04<00:00, 302.46it/s, loss=0.049, v_num=14]
Epoch 2: 100%|██████████| 1500/1500 [00:04<00:00, 337.50it/s, loss=0.049, v_num=14]
Epoch 3:  67%|██████▋   | 1000/1500 [00:03<00:01, 251.44it/s, loss=0.047, v_num=14]
Epoch 3:  70%|███████   | 1050/1500 [00:04<00:01, 262.49it/s, loss=0.047, v_num=14]
Epoch 3:  84%|████████▍ | 1260/1500 [00:04<00:00, 306.74it/s, loss=0.047, v_num=14]
Epoch 3: 100%|██████████| 1500/1500 [00:04<00:00, 354.20it/s, loss=0.047, v_num=14]
Epoch 4:  67%|██████▋   | 1000/1500 [00:04<00:02, 233.42it/s, loss=0.047, v_num=14]
Epoch 4:  70%|███████   | 1050/1500 [00:04<00:01, 243.11it/s, loss=0.047, v_num=14]
Epoch 4:  84%|████████▍ | 1260/1500 [00:04<00:00, 284.35it/s, loss=0.047, v_num=14]
Epoch 4: 100%|██████████| 1500/1500 [00:04<00:00, 328.15it/s, loss=0.047, v_num=14]
Epoch 5:  67%|██████▋   | 1000/1500 [00:04<00:02, 210.54it/s, loss=0.046, v_num=14]
Epoch 5:  70%|███████   | 1050/1500 [00:04<00:02, 219.27it/s, loss=0.046, v_num=14]
Epoch 5:  84%|████████▍ | 1260/1500 [00:04<00:00, 255.91it/s, loss=0.046, v_num=14]
Validating:  61%|██████▏   | 307/500 [00:00<00:00, 1482.33it/s]
Epoch 5: 100%|██████████| 1500/1500 [00:05<00:00, 295.12it/s, loss=0.046, v_num=14]
Epoch 6:  67%|██████▋   | 1000/1500 [00:04<00:02, 211.04it/s, loss=0.046, v_num=14]

To Reproduce
Take sample code from project page and run for multiple epochs (see below amended code)

Code sample

import os
import torch
from torch import nn
import torch.nn.functional as F
from torchvision.datasets import MNIST
from torch.utils.data import DataLoader, random_split
from torchvision import transforms
import pytorch_lightning as pl


class LitAutoEncoder(pl.LightningModule):

    def __init__(self):
        super().__init__()
        self.encoder = nn.Sequential(nn.Linear(28 * 28, 128), nn.ReLU(), nn.Linear(128, 3))
        self.decoder = nn.Sequential(nn.Linear(3, 128), nn.ReLU(), nn.Linear(128, 28 * 28))

    def forward(self, x):
        # in lightning, forward defines the prediction/inference actions
        embedding = self.encoder(x)
        return embedding

    def training_step(self, batch, batch_idx):
        # training_step defined the train loop. It is independent of forward
        x, y = batch
        x = x.view(x.size(0), -1)
        z = self.encoder(x)
        x_hat = self.decoder(z)
        loss = F.mse_loss(x_hat, x)

        result = pl.TrainResult(loss)
        return result

    def validation_step(self, batch, batch_idx):
        x, y = batch
        x = x.view(x.size(0), -1)
        z = self.encoder(x)
        x_hat = self.decoder(z)
        loss = F.mse_loss(x_hat, x)

        result = pl.EvalResult(loss)
        return result

    def configure_optimizers(self):
        optimizer = torch.optim.Adam(self.parameters(), lr=1e-3)
        return optimizer



dataset = MNIST(os.getcwd(), download=True, transform=transforms.ToTensor())
train, val, unused = random_split(dataset, [1000, 500, len(dataset) - 1000 - 500])

autoencoder = LitAutoEncoder()
trainer = pl.Trainer(max_epochs=10)
trainer.fit(autoencoder, DataLoader(train), DataLoader(val))

The expected behaviour is:

The correct progress bar for "validation" to be printed in the console
Not to be overwritten by the "training" progress bar
Not a new line for every iteration

Enviroment:
Windows with pytorch 1.6.0 (or nightly) from conda
pytorch-lighting from master