def test_session(test_spec): spec_util.tick(test_spec, 'trial') spec_util.tick(test_spec, 'session') spec_util.save(test_spec, unit='trial') session = Session(test_spec) session_metrics = session.run() assert isinstance(session_metrics, dict)
def test_experiment(): spec = spec_util.get('demo.json', 'dqn_cartpole') spec_util.save(spec, unit='experiment') spec = spec_util.override_spec(spec, 'test') spec_util.tick(spec, 'experiment') experiment_df = Experiment(spec).run() assert isinstance(experiment_df, pd.DataFrame)
def test_trial_demo(): spec = spec_util.get('demo.json', 'dqn_cartpole') spec_util.save(spec, unit='experiment') spec = spec_util.override_spec(spec, 'test') spec_util.tick(spec, 'trial') trial_metrics = Trial(spec).run() assert isinstance(trial_metrics, dict)
def train(self, specfile, specname): "enjoy + optimizes agent + periodic eval" logger.info( f'Running lab mode:train with specfile:{specfile} specname:{specname}' ) spec = spec_util.get(specfile, specname) # FIXME Why does this need to be in env? os.environ['lab_mode'] = 'train' spec_util.save(spec) # first save the new spec spec_util.tick(spec, 'trial') Trial(spec).run()
def __init__(self, spec, global_nets=None): self.spec = spec self.index = self.spec['meta']['session'] util.set_random_seed(self.spec) util.set_cuda_id(self.spec) util.set_logger(self.spec, logger, 'session') spec_util.save(spec, unit='session') self.agent, self.env = make_agent_env(self.spec, global_nets) with util.ctx_lab_mode('eval'): # env for eval self.eval_env = make_env(self.spec) logger.info(util.self_desc(self))
def test_demo_performance(): spec = spec_util.get('demo.json', 'dqn_cartpole') spec_util.save(spec, unit='experiment') for env_spec in spec['env']: env_spec['max_frame'] = 2000 spec_util.tick(spec, 'trial') trial = Trial(spec) spec_util.tick(spec, 'session') session = Session(spec) session.run() last_reward = session.agent.body.train_df.iloc[-1]['total_reward'] assert last_reward > 50, f'last_reward is too low: {last_reward}'
def dev(self, specfile, specname): "train + limit the number of trials & sessions. Useful for iterative development." logger.info( f'Running lab mode:dev with specfile:{specfile} specname:{specname}' ) spec = spec_util.get(specfile, specname) # FIXME Why does this need to be in env? os.environ['lab_mode'] = 'dev' spec_util.save(spec) # first save the new spec # spec = spec_util.override_dev_spec(spec) spec['meta']['max_session'] = 1 spec['meta']['max_trial'] = 2 spec_util.tick(spec, 'trial') Trial(spec).run()
def run_spec(spec, lab_mode): '''Run a spec in lab_mode''' os.environ['lab_mode'] = lab_mode # set lab_mode spec = spec_util.override_spec(spec, lab_mode) # conditionally override spec if lab_mode in TRAIN_MODES: spec_util.save(spec) # first save the new spec if lab_mode == 'search': spec_util.tick(spec, 'experiment') Experiment(spec).run() else: spec_util.tick(spec, 'trial') Trial(spec).run() elif lab_mode in EVAL_MODES: Session(spec).run() else: raise ValueError(f'Unrecognizable lab_mode not of {TRAIN_MODES} or {EVAL_MODES}')
def __init__(self, spec): self.spec = spec self.index = self.spec['meta']['experiment'] util.set_logger(self.spec, logger, 'trial') spec_util.save(spec, unit='experiment')
def test_trial(test_spec): spec_util.tick(test_spec, 'trial') spec_util.save(test_spec, unit='trial') trial = Trial(test_spec) trial_metrics = trial.run() assert isinstance(trial_metrics, dict)