(self, C_train, C_test)
| 579 | |
| 580 | class TesterMultiTaskDev(SolverMultiTaskDev): |
| 581 | def __init__(self, C_train, C_test): |
| 582 | torch.cuda.empty_cache() |
| 583 | |
| 584 | train_config = edict(C_train.config['common']) |
| 585 | ginfo = C_train.ginfo |
| 586 | config = train_config |
| 587 | |
| 588 | if C_test.config.get('common') is not None: |
| 589 | recursive_update(config, C_test.config.get('common')) |
| 590 | config = edict(config) |
| 591 | if 'out_dir' in config: |
| 592 | self.out_dir = config['out_dir'] + 'test_results/' |
| 593 | else: |
| 594 | self.out_dir = "./test_results/" |
| 595 | |
| 596 | if 'expname' in config: |
| 597 | self.tb_path = '{}events/{}'.format(self.out_dir, config['expname']) |
| 598 | self.ckpt_path = '{}checkpoints/{}'.format(self.out_dir, config['expname']) |
| 599 | self.logs_path = '{}logs/{}'.format(self.out_dir, config['expname']) |
| 600 | else: |
| 601 | save_path = config.get('save_path', os.path.dirname(os.path.abspath(C_train.config_file))) |
| 602 | self.save_path = save_path |
| 603 | self.tb_path = '{}/test_results/events'.format(save_path) |
| 604 | self.ckpt_path = '{}/test_results/checkpoints'.format(save_path) |
| 605 | self.logs_path = '{}/test_results/logs'.format(save_path) |
| 606 | if C_train.rank == 0: |
| 607 | os.makedirs(self.tb_path, exist_ok=True) |
| 608 | os.makedirs(self.ckpt_path, exist_ok=True) |
| 609 | os.makedirs(self.logs_path, exist_ok=True) |
| 610 | # self.tb_logger = SummaryWriter(self.tb_path) |
| 611 | project_name = config.get('project_name', os.path.dirname(C_train.config_file).split('/')[-1]) |
| 612 | self.tb_logger = SummaryWriter(log_dir=self.tb_path,name=C_train.config['expname'],project=project_name, overwrite_last_training=True) |
| 613 | |
| 614 | else: |
| 615 | while not os.path.exists(self.logs_path): |
| 616 | time.sleep(1) |
| 617 | |
| 618 | if ginfo.task_rank == 0: |
| 619 | assert C_train.rank == 0, "there shall be only one group" |
| 620 | self.logger = create_logger('global_logger', '{}/log_task_{}.txt'.format(self.logs_path, ginfo.task_id)) |
| 621 | |
| 622 | self.sync = config.get('sync', True) |
| 623 | self.C = C_train |
| 624 | |
| 625 | self.config = config |
| 626 | self.ginfo = ginfo |
| 627 | # change tensor .cuda |
| 628 | change_tensor_cuda() |
| 629 | |
| 630 | self.tmp = edict() |
| 631 | |
| 632 | ## random seed setting |
| 633 | rng = np.random.RandomState(self.config.get('random_seed', 0)) |
| 634 | self.randomseed_pool = rng.randint(999999, size=config.max_iter) |
| 635 | |
| 636 | ### VVV deterministic measures VVV |
| 637 | |
| 638 | if self.config.get('deterministic', False): |
nothing calls this directly
no test coverage detected