예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
 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()
예제 #5
0
    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))
예제 #6
0
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}'
예제 #7
0
 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()
예제 #8
0
파일: run_lab.py 프로젝트: webserg/SLM-Lab
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}')
예제 #9
0
 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')
예제 #10
0
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)