setup logger for training and testing. Args: save_dir(str): location to save log file distributed_rank(int): device rank when multi-gpu environment filename (string): log save name. mode(str): log file write mode, `append` or `override`. default is `a`. Retur
(save_dir, distributed_rank=0, filename="log.txt", mode="a")
| 261 | |
| 262 | |
| 263 | def setup_logger(save_dir, distributed_rank=0, filename="log.txt", mode="a"): |
| 264 | """setup logger for training and testing. |
| 265 | Args: |
| 266 | save_dir(str): location to save log file |
| 267 | distributed_rank(int): device rank when multi-gpu environment |
| 268 | filename (string): log save name. |
| 269 | mode(str): log file write mode, `append` or `override`. default is `a`. |
| 270 | |
| 271 | Return: |
| 272 | logger instance. |
| 273 | """ |
| 274 | loguru_format = ( |
| 275 | "<green>{time:YYYY-MM-DD HH:mm:ss}</green> | " |
| 276 | "<level>{level: <8}</level> | " |
| 277 | "<cyan>{name}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>") |
| 278 | |
| 279 | logger.remove() |
| 280 | save_file = os.path.join(save_dir, filename) |
| 281 | if mode == "o" and os.path.exists(save_file): |
| 282 | os.remove(save_file) |
| 283 | # only keep logger in rank0 process |
| 284 | if distributed_rank == 0: |
| 285 | logger.add( |
| 286 | sys.stderr, |
| 287 | format=loguru_format, |
| 288 | level="INFO", |
| 289 | enqueue=True, |
| 290 | ) |
| 291 | logger.add(save_file) |
| 292 | |
| 293 | # redirect stdout/stderr to loguru |
| 294 | redirect_sys_output("INFO") |
| 295 | |
| 296 | |
| 297 | def build_scheduler(config, optimizer, n_iter_per_epoch): |