| 503 | |
| 504 | |
| 505 | def choose_logger( |
| 506 | logger_name: Literal['csv', 'tensorboard', 'wandb'], |
| 507 | out_dir: Path, |
| 508 | project_name: str, |
| 509 | log_interval: int = 1, |
| 510 | resume: Optional[bool] = None, |
| 511 | **kwargs: Any, |
| 512 | ): |
| 513 | if logger_name == 'csv': |
| 514 | return CSVLogger( |
| 515 | root_dir=(out_dir / 'logs'), |
| 516 | name='csv', |
| 517 | flush_logs_every_n_steps=log_interval, |
| 518 | **kwargs, |
| 519 | ) |
| 520 | if logger_name == 'tensorboard': |
| 521 | return TensorBoardLogger( |
| 522 | root_dir=(out_dir / 'logs'), name='tensorboard', **kwargs |
| 523 | ) |
| 524 | if logger_name == 'wandb': |
| 525 | return WandbLogger(project=project_name, resume=resume, **kwargs) |
| 526 | raise ValueError( |
| 527 | f"`--logger_name={logger_name}` is not a valid option. Choose from 'csv', 'tensorboard', 'wandb'." |
| 528 | ) |
| 529 | |
| 530 | |
| 531 | def humanize_seconds(seconds: Union[float, int]): |