[Enhance] Right align the log (#436)

* right allign the log

* fix as comment

* Add comments for magic number 3

* remove max_len_str

* Update mmengine/runner/log_processor.py

Co-authored-by: Zaida Zhou <58739961+zhouzaida@users.noreply.github.com>
This commit is contained in:
Mashiro 2022-11-21 11:55:18 +08:00 committed by GitHub
parent c478bdca27
commit b06234cfcd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 6 deletions

View File

@ -140,20 +140,40 @@ class LogProcessor:
# train: Epoch [5/10000] ... (divided by `max_iter`)
# val/test: Epoch [5/2000] ... (divided by length of dataloader)
if self.by_epoch:
# Align the iteration log:
# Epoch(train) [ 9][010/270]
# ... ||| |||
# Epoch(train) [ 10][100/270]
dataloader_len = len(current_loop.dataloader)
cur_iter_str = str(cur_iter).rjust(len(str(dataloader_len)))
if mode in ['train', 'val']:
# Right Align the epoch log:
# Epoch(train) [9][100/270]
# ... ||
# Epoch(train) [100][100/270]
cur_epoch = self._get_epoch(runner, mode)
max_epochs = runner.max_epochs
# 3 means the three characters: "[", "]", and " " occupied in
# " [{max_epochs}]"
cur_epoch_str = f'[{cur_epoch}]'.rjust(
len(str(max_epochs)) + 3, ' ')
tag['epoch'] = cur_epoch
log_str = (f'Epoch({mode}) [{cur_epoch}]'
f'[{cur_iter}/{len(current_loop.dataloader)}] ')
log_str = (f'Epoch({mode}){cur_epoch_str}'
f'[{cur_iter_str}/{dataloader_len}] ')
else:
log_str = (f'Epoch({mode}) '
f'[{cur_iter}/{len(current_loop.dataloader)}] ')
f'[{cur_iter_str}/{dataloader_len}] ')
else:
if mode == 'train':
cur_iter_str = str(cur_iter).rjust(len(str(runner.max_iters)))
log_str = (f'Iter({mode}) '
f'[{cur_iter}/{runner.max_iters}] ')
f'[{cur_iter_str}/{runner.max_iters}] ')
else:
log_str = (f'Iter({mode}) [{batch_idx + 1}'
dataloader_len = len(current_loop.dataloader)
cur_iter_str = str(batch_idx + 1).rjust(
len(str(dataloader_len)))
log_str = (f'Iter({mode}) [{cur_iter_str}'
f'/{len(current_loop.dataloader)}] ')
# Concatenate lr, momentum string with log header.
log_str += f'{lr_str} '

View File

@ -91,7 +91,7 @@ class TestLogProcessor:
if by_epoch:
if mode in ['train', 'val']:
cur_epoch = log_processor._get_epoch(self.runner, mode)
log_str = (f'Epoch({mode}) [{cur_epoch}][2/'
log_str = (f'Epoch({mode}) [{cur_epoch}][ 2/'
f'{len(cur_loop.dataloader)}] ')
else:
log_str = (f'Epoch({mode}) [2/{len(cur_loop.dataloader)}] ')
@ -114,6 +114,9 @@ class TestLogProcessor:
if mode == 'train':
max_iters = self.runner.max_iters
log_str = f'Iter({mode}) [11/{max_iters}] '
elif mode == 'val':
max_iters = len(cur_loop.dataloader)
log_str = f'Iter({mode}) [ 2/{max_iters}] '
else:
max_iters = len(cur_loop.dataloader)
log_str = f'Iter({mode}) [2/{max_iters}] '
@ -238,6 +241,7 @@ class TestLogProcessor:
def setup(self):
runner = MagicMock()
runner.epoch = 1
runner.max_epochs = 10
runner.iter = 10
runner.max_iters = 50
runner.train_dataloader = [0] * 20