def test_load_yaml_opts(): """ Load options using static method (no singleton) """ reset_options_instance() opt = Options.load_yaml_opts('tests/default.yaml') assert (opt == OptionsDict({'message': 'default'})) assert Options._Options__instance is None
def train(self): self.status = 'training' Logger()('training {}'.format(self.path_opts)) if self.generation == 0: opts = Options.load_yaml_opts(self.path_opts) nb_epochs = opts['engine']['nb_epochs'] # we can start training from scratch or from checkpoint ckpt_name = '' if opts['exp']['resume'] is None else opts['exp'][ 'resume'] else: # load parent options opts = Options.load_yaml_opts(self.parent) nb_epochs = opts['engine']['nb_epochs'] + Options( )['pbt']['mutation_rate'] ckpt_name, path_ckpt = find_ckpt(self.exp_dir, Options()['pbt']['resume']) # if we start training from best epoch and not last epoch, # we must remove some extra data in logs.json if Options()['pbt']['resume'] != 'last': ckpt = torch.load(path_ckpt) path_logs = os.path.join(self.exp_dir, 'logs.json') logs = json.load(open(path_logs)) for k, v in logs.items(): if 'train_epoch' in k or 'eval_epoch' in k: logs[k] = logs[k][:ckpt['epoch'] + 1] with open(path_logs, 'w') as f: json.dump(logs, f) cmd = '{} -o {} --exp.dir {} --exp.resume {} --engine.nb_epochs {}'.format( Options()['pbt']['cmd']['train'], self.path_opts, self.exp_dir, ckpt_name, nb_epochs) Logger()(cmd) job_id = slurm_submit(cmd) while True: status = get_job_status(job_id) Logger()('training job {} is {} in {}'.format( job_id, status, self.exp_dir)) if slurm_is_idle(job_id): break time.sleep(10) self.status = 'trained'
""" # Load options using static method (no singleton) - cli: `python test/test_options4.py` - expected behavior: ``` OptionsDict({'message': 'default'}) OptionsDict({'message': 'adam', 'sgd': True, 'nested': OptionsDict({'message': 'lol'}), 'adam': True}) OptionsDict({'message': 'sgd', 'nested': OptionsDict({'message': 'save'}), 'sgd': True}) ``` """ from bootstrap.lib.options import Options if __name__ == '__main__': print(Options.load_yaml_opts('test/default.yaml')) print(Options.load_yaml_opts('test/adam.yaml')) print(Options.load_yaml_opts('test/saved.yaml'))