From c1ac2872382d75dab68e6a7e46bf1084c5437e99 Mon Sep 17 00:00:00 2001 From: HAOCHENYE <21724054@zju.edu.cn> Date: Mon, 15 Aug 2022 22:40:28 +0800 Subject: [PATCH 1/5] right allign the log --- mmengine/runner/log_processor.py | 30 ++++++++++++++++++++----- tests/test_runner/test_log_processor.py | 6 ++++- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/mmengine/runner/log_processor.py b/mmengine/runner/log_processor.py index 7f36672b37..b4f2bc349e 100644 --- a/mmengine/runner/log_processor.py +++ b/mmengine/runner/log_processor.py @@ -139,20 +139,40 @@ def get_log_after_iter(self, runner, batch_idx: int, # 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) [9][100/270] + max_dataloader_len = len(current_loop.dataloader) + max_str_len = len(str(max_dataloader_len)) + cur_iter_str = str(cur_iter).rjust(max_str_len, '0') + 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 + max_str_len = len(str(max_epochs)) + 3 + cur_epoch_str = str(f'[{cur_epoch}]').rjust(max_str_len, ' ') 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}/{max_dataloader_len}] ') else: log_str = (f'Epoch({mode}) ' - f'[{cur_iter}/{len(current_loop.dataloader)}] ') + f'[{cur_iter_str}/{max_dataloader_len}] ') else: if mode == 'train': + max_str_len = len(str(runner.max_iters)) + cur_iter_str = str(cur_iter).rjust(max_str_len, '0') 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}' + max_dataloader_len = len(current_loop.dataloader) + max_str_len = len(str(max_dataloader_len)) + cur_iter_str = str(batch_idx + 1).rjust(max_str_len, '0') + 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} ' diff --git a/tests/test_runner/test_log_processor.py b/tests/test_runner/test_log_processor.py index bf496db730..d366c08b3c 100644 --- a/tests/test_runner/test_log_processor.py +++ b/tests/test_runner/test_log_processor.py @@ -91,7 +91,7 @@ def test_get_log_after_iter(self, by_epoch, mode): 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}][02/' f'{len(cur_loop.dataloader)}] ') else: log_str = (f'Epoch({mode}) [2/{len(cur_loop.dataloader)}] ') @@ -114,6 +114,9 @@ def test_get_log_after_iter(self, by_epoch, mode): 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}) [02/{max_iters}] ' else: max_iters = len(cur_loop.dataloader) log_str = f'Iter({mode}) [2/{max_iters}] ' @@ -238,6 +241,7 @@ def test_get_cur_loop(self): def setup(self): runner = MagicMock() runner.epoch = 1 + runner.max_epochs = 10 runner.iter = 10 runner.max_iters = 50 runner.train_dataloader = [0] * 20 From 231e1b05887c60227057377e837669fb7f9e0764 Mon Sep 17 00:00:00 2001 From: HAOCHENYE <21724054@zju.edu.cn> Date: Thu, 25 Aug 2022 18:37:20 +0800 Subject: [PATCH 2/5] fix as comment --- mmengine/runner/log_processor.py | 6 +++--- tests/test_runner/test_log_processor.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mmengine/runner/log_processor.py b/mmengine/runner/log_processor.py index b4f2bc349e..fed376f821 100644 --- a/mmengine/runner/log_processor.py +++ b/mmengine/runner/log_processor.py @@ -145,7 +145,7 @@ def get_log_after_iter(self, runner, batch_idx: int, # Epoch(train) [9][100/270] max_dataloader_len = len(current_loop.dataloader) max_str_len = len(str(max_dataloader_len)) - cur_iter_str = str(cur_iter).rjust(max_str_len, '0') + cur_iter_str = str(cur_iter).rjust(max_str_len) if mode in ['train', 'val']: # Right Align the epoch log: @@ -165,13 +165,13 @@ def get_log_after_iter(self, runner, batch_idx: int, else: if mode == 'train': max_str_len = len(str(runner.max_iters)) - cur_iter_str = str(cur_iter).rjust(max_str_len, '0') + cur_iter_str = str(cur_iter).rjust(max_str_len) log_str = (f'Iter({mode}) ' f'[{cur_iter_str}/{runner.max_iters}] ') else: max_dataloader_len = len(current_loop.dataloader) max_str_len = len(str(max_dataloader_len)) - cur_iter_str = str(batch_idx + 1).rjust(max_str_len, '0') + cur_iter_str = str(batch_idx + 1).rjust(max_str_len) log_str = (f'Iter({mode}) [{cur_iter_str}' f'/{len(current_loop.dataloader)}] ') # Concatenate lr, momentum string with log header. diff --git a/tests/test_runner/test_log_processor.py b/tests/test_runner/test_log_processor.py index d366c08b3c..2affa73f9a 100644 --- a/tests/test_runner/test_log_processor.py +++ b/tests/test_runner/test_log_processor.py @@ -91,7 +91,7 @@ def test_get_log_after_iter(self, by_epoch, mode): if by_epoch: if mode in ['train', 'val']: cur_epoch = log_processor._get_epoch(self.runner, mode) - log_str = (f'Epoch({mode}) [{cur_epoch}][02/' + log_str = (f'Epoch({mode}) [{cur_epoch}][ 2/' f'{len(cur_loop.dataloader)}] ') else: log_str = (f'Epoch({mode}) [2/{len(cur_loop.dataloader)}] ') @@ -116,7 +116,7 @@ def test_get_log_after_iter(self, by_epoch, mode): log_str = f'Iter({mode}) [11/{max_iters}] ' elif mode == 'val': max_iters = len(cur_loop.dataloader) - log_str = f'Iter({mode}) [02/{max_iters}] ' + log_str = f'Iter({mode}) [ 2/{max_iters}] ' else: max_iters = len(cur_loop.dataloader) log_str = f'Iter({mode}) [2/{max_iters}] ' From 40cd08b3b0a7a21375aad13eaa8fd6475227b4b9 Mon Sep 17 00:00:00 2001 From: HAOCHENYE <21724054@zju.edu.cn> Date: Sun, 20 Nov 2022 16:44:50 +0800 Subject: [PATCH 3/5] Add comments for magic number 3 --- mmengine/runner/log_processor.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/mmengine/runner/log_processor.py b/mmengine/runner/log_processor.py index 3ba74bd1f4..12aaac2717 100644 --- a/mmengine/runner/log_processor.py +++ b/mmengine/runner/log_processor.py @@ -141,11 +141,11 @@ def get_log_after_iter(self, runner, batch_idx: int, # 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) [9][100/270] - max_dataloader_len = len(current_loop.dataloader) - max_str_len = len(str(max_dataloader_len)) + # Epoch(train) [ 9][010/270] + # ... ||| ||| + # Epoch(train) [ 10][100/270] + dataloader_len = len(current_loop.dataloader) + max_str_len = len(str(dataloader_len)) cur_iter_str = str(cur_iter).rjust(max_str_len) if mode in ['train', 'val']: @@ -155,14 +155,16 @@ def get_log_after_iter(self, runner, batch_idx: int, # 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}]" max_str_len = len(str(max_epochs)) + 3 cur_epoch_str = str(f'[{cur_epoch}]').rjust(max_str_len, ' ') tag['epoch'] = cur_epoch log_str = (f'Epoch({mode}){cur_epoch_str}' - f'[{cur_iter_str}/{max_dataloader_len}] ') + f'[{cur_iter_str}/{dataloader_len}] ') else: log_str = (f'Epoch({mode}) ' - f'[{cur_iter_str}/{max_dataloader_len}] ') + f'[{cur_iter_str}/{dataloader_len}] ') else: if mode == 'train': max_str_len = len(str(runner.max_iters)) @@ -170,8 +172,8 @@ def get_log_after_iter(self, runner, batch_idx: int, log_str = (f'Iter({mode}) ' f'[{cur_iter_str}/{runner.max_iters}] ') else: - max_dataloader_len = len(current_loop.dataloader) - max_str_len = len(str(max_dataloader_len)) + dataloader_len = len(current_loop.dataloader) + max_str_len = len(str(dataloader_len)) cur_iter_str = str(batch_idx + 1).rjust(max_str_len) log_str = (f'Iter({mode}) [{cur_iter_str}' f'/{len(current_loop.dataloader)}] ') From 92c1abd99150b84782b72fedf2caaed4f7414261 Mon Sep 17 00:00:00 2001 From: HAOCHENYE <21724054@zju.edu.cn> Date: Sun, 20 Nov 2022 20:40:07 +0800 Subject: [PATCH 4/5] remove max_len_str --- mmengine/runner/log_processor.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/mmengine/runner/log_processor.py b/mmengine/runner/log_processor.py index 12aaac2717..cce92a2985 100644 --- a/mmengine/runner/log_processor.py +++ b/mmengine/runner/log_processor.py @@ -145,8 +145,7 @@ def get_log_after_iter(self, runner, batch_idx: int, # ... ||| ||| # Epoch(train) [ 10][100/270] dataloader_len = len(current_loop.dataloader) - max_str_len = len(str(dataloader_len)) - cur_iter_str = str(cur_iter).rjust(max_str_len) + cur_iter_str = str(cur_iter).rjust(len(str(dataloader_len))) if mode in ['train', 'val']: # Right Align the epoch log: @@ -157,8 +156,8 @@ def get_log_after_iter(self, runner, batch_idx: int, max_epochs = runner.max_epochs # 3 means the three characters: "[", "]", and " " occupied in # " [{max_epochs}]" - max_str_len = len(str(max_epochs)) + 3 - cur_epoch_str = str(f'[{cur_epoch}]').rjust(max_str_len, ' ') + cur_epoch_str = f'[{cur_epoch}]'.rjust( + len(str(max_epochs)) + 3, ' ') tag['epoch'] = cur_epoch log_str = (f'Epoch({mode}){cur_epoch_str}' f'[{cur_iter_str}/{dataloader_len}] ') @@ -167,14 +166,13 @@ def get_log_after_iter(self, runner, batch_idx: int, f'[{cur_iter_str}/{dataloader_len}] ') else: if mode == 'train': - max_str_len = len(str(runner.max_iters)) - cur_iter_str = str(cur_iter).rjust(max_str_len) + cur_iter_str = str(cur_iter).rjust(len(str(runner.max_iters))) log_str = (f'Iter({mode}) ' f'[{cur_iter_str}/{runner.max_iters}] ') else: dataloader_len = len(current_loop.dataloader) - max_str_len = len(str(dataloader_len)) - cur_iter_str = str(batch_idx + 1).rjust(max_str_len) + 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. From 9196e2102d805fb3a7798f32d76e6afa773fbc6b Mon Sep 17 00:00:00 2001 From: Zaida Zhou <58739961+zhouzaida@users.noreply.github.com> Date: Sun, 20 Nov 2022 21:58:59 +0800 Subject: [PATCH 5/5] Update mmengine/runner/log_processor.py --- mmengine/runner/log_processor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mmengine/runner/log_processor.py b/mmengine/runner/log_processor.py index cce92a2985..a1e408f4b9 100644 --- a/mmengine/runner/log_processor.py +++ b/mmengine/runner/log_processor.py @@ -154,7 +154,7 @@ def get_log_after_iter(self, runner, batch_idx: int, # 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 + # 3 means the three characters: "[", "]", and " " occupied in # " [{max_epochs}]" cur_epoch_str = f'[{cur_epoch}]'.rjust( len(str(max_epochs)) + 3, ' ')