Example #1
0
def run_by_mode(spec_file, spec_name, lab_mode):
    logger.info(f'Running lab in mode: {lab_mode}')
    spec = spec_util.get(spec_file, spec_name)
    info_space = InfoSpace()
    analysis.save_spec(spec, info_space, unit='experiment')

    # '@' is reserved for 'enjoy@{prepath}'
    os.environ['lab_mode'] = lab_mode.split('@')[0]
    os.environ['PREPATH'] = util.get_prepath(spec, info_space)
    reload(logger)  # to set PREPATH properly

    if lab_mode == 'search':
        info_space.tick('experiment')
        Experiment(spec, info_space).run()
    elif lab_mode.startswith('train'):
        if '@' in lab_mode:
            prepath = lab_mode.split('@')[1]
            spec, info_space = util.prepath_to_spec_info_space(prepath)
        else:
            info_space.tick('trial')
        Trial(spec, info_space).run()
    elif lab_mode.startswith('enjoy'):
        prepath = lab_mode.split('@')[1]
        spec, info_space = util.prepath_to_spec_info_space(prepath)
        Session(spec, info_space).run()
    elif lab_mode.startswith('enjoy'):
        prepath = lab_mode.split('@')[1]
        spec, info_space = util.prepath_to_spec_info_space(prepath)
        Session(spec, info_space).run()
    elif lab_mode == 'dev':
        spec = util.override_dev_spec(spec)
        info_space.tick('trial')
        Trial(spec, info_space).run()
    else:
        logger.warn('lab_mode not recognized; must be one of `search, train, enjoy, benchmark, dev`.')
Example #2
0
def test_session(test_spec, test_info_space):
    test_info_space.tick('trial')
    test_info_space.tick('session')
    analysis.save_spec(test_spec, test_info_space, unit='trial')
    session = Session(test_spec, test_info_space)
    session_data = session.run()
    assert isinstance(session_data, pd.DataFrame)
Example #3
0
def test_experiment(test_info_space):
    spec = spec_util.get('demo.json', 'dqn_cartpole')
    analysis.save_spec(spec, test_info_space, unit='experiment')
    spec = spec_util.override_test_spec(spec)
    test_info_space.tick('experiment')
    experiment_data = Experiment(spec, test_info_space).run()
    assert isinstance(experiment_data, pd.DataFrame)
Example #4
0
def test_trial_demo(test_info_space):
    spec = spec_util.get('demo.json', 'dqn_cartpole')
    analysis.save_spec(spec, test_info_space, unit='experiment')
    spec = spec_util.override_test_spec(spec)
    spec['meta']['eval_frequency'] = 1
    test_info_space.tick('trial')
    trial_data = Trial(spec, test_info_space).run()
    assert isinstance(trial_data, pd.DataFrame)
Example #5
0
 def __init__(self, spec, info_space=None):
     info_space = info_space or InfoSpace()
     init_thread_vars(spec, info_space, unit='trial')
     self.spec = spec
     self.info_space = info_space
     self.coor, self.index = self.info_space.get_coor_idx(self)
     self.session_data_dict = {}
     self.data = None
     analysis.save_spec(spec, info_space, unit='trial')
     logger.info(f'Initialized trial {self.index}')
Example #6
0
 def __init__(self, spec, info_space=None):
     info_space = info_space or InfoSpace()
     init_thread_vars(spec, info_space, unit='trial')
     self.spec = spec
     self.info_space = info_space
     self.coor, self.index = self.info_space.get_coor_idx(self)
     self.session_data_dict = {}
     self.data = None
     analysis.save_spec(spec, info_space, unit='trial')
     logger.info(f'Initialized trial {self.index}')
Example #7
0
 def __init__(self, spec, info_space):
     self.spec = spec
     self.info_space = info_space
     self.index = self.info_space.get('experiment')
     self.trial_data_dict = {}
     self.data = None
     analysis.save_spec(spec, info_space, unit='experiment')
     SearchClass = getattr(search, spec['meta'].get('search'))
     self.search = SearchClass(self)
     logger.info(f'Initialized experiment {self.index}')
Example #8
0
 def __init__(self, spec, info_space=None):
     info_space = info_space or InfoSpace()
     init_thread_vars(spec, info_space, unit='experiment')
     self.spec = spec
     self.info_space = info_space
     self.coor, self.index = self.info_space.get_coor_idx(self)
     self.trial_data_dict = {}
     self.data = None
     SearchClass = getattr(search, spec['meta'].get('search'))
     self.search = SearchClass(self)
     analysis.save_spec(spec, info_space, unit='experiment')
     logger.info(f'Initialized experiment {self.index}')
Example #9
0
 def __init__(self, spec, info_space=None):
     info_space = info_space or InfoSpace()
     init_thread_vars(spec, info_space, unit='experiment')
     self.spec = spec
     self.info_space = info_space
     self.coor, self.index = self.info_space.get_coor_idx(self)
     self.trial_data_dict = {}
     self.data = None
     SearchClass = getattr(search, spec['meta'].get('search'))
     self.search = SearchClass(self)
     analysis.save_spec(spec, info_space, unit='experiment')
     logger.info(f'Initialized experiment {self.index}')
Example #10
0
 def __init__(self, spec, info_space):
     self.spec = spec
     self.info_space = info_space
     self.index = self.info_space.get('trial')
     self.session_data_dict = {}
     self.data = None
     analysis.save_spec(spec, info_space, unit='trial')
     self.is_singleton = util.is_singleton(
         spec)  # singleton mode as opposed to multi-agent-env space
     self.SessionClass = Session if self.is_singleton else SpaceSession
     self.mp_runner = init_run_session if self.is_singleton else init_run_space_session
     logger.info(f'Initialized trial {self.index}')
Example #11
0
def test_session_total_t(test_spec, test_info_space):
    test_info_space.tick('trial')
    test_info_space.tick('session')
    analysis.save_spec(test_spec, test_info_space, unit='trial')
    spec = deepcopy(test_spec)
    env_spec = spec['env'][0]
    env_spec['max_tick'] = 30
    spec['meta']['max_tick_unit'] = 'total_t'
    session = Session(spec, test_info_space)
    assert session.env.max_tick_unit == 'total_t'
    session_data = session.run()
    assert isinstance(session_data, pd.DataFrame)
Example #12
0
 def __init__(self, spec, info_space):
     self.spec = spec
     self.info_space = info_space
     self.index = self.info_space.get('trial')
     self.session_data_dict = {}
     self.data = None
     analysis.save_spec(spec, info_space, unit='trial')
     self.is_singleton = len(spec['agent']) == 1 and len(
         spec['env']
     ) == 1 and spec['body'][
         'num'] == 1  # singleton mode as opposed to multi-agent-env space
     self.SessionClass = Session if self.is_singleton else SpaceSession
     logger.info(f'Initialized trial {self.index}')
Example #13
0
def run_new_mode(spec_file, spec_name, lab_mode):
    '''Run to generate new data with `search, train, dev`'''
    spec = spec_util.get(spec_file, spec_name)
    info_space = InfoSpace()
    analysis.save_spec(spec, info_space, unit='experiment')  # first save the new spec
    if lab_mode == 'search':
        info_space.tick('experiment')
        Experiment(spec, info_space).run()
    elif lab_mode.startswith('train'):
        info_space.tick('trial')
        Trial(spec, info_space).run()
    elif lab_mode == 'dev':
        spec = spec_util.override_dev_spec(spec)
        info_space.tick('trial')
        Trial(spec, info_space).run()
    else:
        raise ValueError(f'Unrecognizable lab_mode not of {TRAIN_MODES}')
Example #14
0
def test_trial(test_spec, test_info_space):
    test_info_space.tick('trial')
    analysis.save_spec(test_spec, test_info_space, unit='trial')
    trial = Trial(test_spec, test_info_space)
    trial_data = trial.run()
    assert isinstance(trial_data, pd.DataFrame)