parser = argparse.ArgumentParser() parser.add_argument("plots", nargs='+', help=",".join(sorted(funcs))) args, _ = parser.parse_known_args() config = Config( version=0, paper=False, clear_cache=False, no_block=False, show=False, fill=False, ext='.pdf', style='bmh', ) config.update_from_command_line() style_list = ['default', 'classic'] + sorted(style for style in plt.style.available if style != 'classic') assert config.style in style_list plt.rc('lines', linewidth=1) ext = config.ext ext = ext if ext.startswith('.') else '.' + ext color_cycle = plt.get_cmap("Dark2").colors # color_cycle = plt.get_cmap("Paired").colors # color_cycle = ['tab:blue', 'tab:orange', 'tab:green', 'tab:brown'] os.makedirs(plot_dir, exist_ok=True) if config.clear_cache: set_clear_cache(True)
def run_experiment(name, config, readme, distributions=None, durations=None, alg=None, task="grid", name_variables=None, env_kwargs=None): name = sanitize(name) durations = durations or {} parser = argparse.ArgumentParser() parser.add_argument("duration", choices=list(durations.keys()) + ["local"]) args, _ = parser.parse_known_args() _config = DEFAULT_CONFIG.copy() env_kwargs = env_kwargs or {} env_kwargs['task'] = task env_config = get_env_config(**env_kwargs) _config.update(env_config) if alg: alg_config = getattr(alg_module, "{}_config".format(alg)) _config.update(alg_config) alg_name = sanitize(alg_config.alg_name) else: alg_name = "" _config.update(config) _config.update_from_command_line() _config.env_name = "{}_env={}".format(name, sanitize(env_config.env_name)) if args.duration == "local": _config.exp_name = "alg={}".format(alg_name) with _config: return training_loop() else: run_kwargs = Config( kind="slurm", pmem=5000, ignore_gpu=False, ) duration_args = durations[args.duration] if 'config' in duration_args: _config.update(duration_args['config']) del duration_args['config'] run_kwargs.update(durations[args.duration]) run_kwargs.update_from_command_line() if name_variables is not None: name_variables_str = "_".join("{}={}".format( sanitize(str(k)), sanitize(str(getattr(_config, k)))) for k in name_variables.split(",")) _config.env_name = "{}_{}".format(_config.env_name, name_variables_str) exp_name = "{}_alg={}_duration={}".format(_config.env_name, alg_name, args.duration) build_and_submit(name=exp_name, config=_config, distributions=distributions, **run_kwargs)
def run_experiment( name, base_config, readme, distributions=None, durations=None, name_variables=None, alg_configs=None, env_configs=None, late_config=None): name = sanitize(name) durations = durations or {} parser = argparse.ArgumentParser() if env_configs is not None: parser.add_argument('env') if alg_configs is not None: parser.add_argument('alg') parser.add_argument("duration", choices=list(durations.keys()) + ["local"], default="local", nargs="?") args, _ = parser.parse_known_args() config = DEFAULT_CONFIG.copy() config.update(base_config) if env_configs is not None: env_config = env_configs[args.env] config.update(env_config) if alg_configs is not None: alg_config = alg_configs[args.alg] config.update(alg_config) if late_config is not None: config.update(late_config) config.update_from_command_line() env_name = sanitize(config.get('env_name', '')) if name: config.env_name = "{}_env={}".format(name, env_name) else: config.env_name = "env={}".format(env_name) alg_name = sanitize(config.get("alg_name", "")) if args.duration == "local": config.exp_name = "alg={}".format(alg_name) with config: return training_loop() run_kwargs = Config( kind="slurm", pmem=5000, ignore_gpu=False, ) duration_args = durations[args.duration] if 'config' in duration_args: config.update(duration_args['config']) del duration_args['config'] run_kwargs.update(durations[args.duration]) run_kwargs.update_from_command_line() if name_variables is not None: name_variables_str = "_".join( "{}={}".format(sanitize(str(k)), sanitize(str(getattr(config, k)))) for k in name_variables.split(",")) config.env_name = "{}_{}".format(config.env_name, name_variables_str) exp_name = "{}_alg={}_duration={}".format(config.env_name, alg_name, args.duration) build_and_submit(name=exp_name, config=config, distributions=distributions, **run_kwargs)