def main(): try: cmd_args, _ = get_common_cmd_args() output_basedir = cmd_args.output_basedir model_name = cmd_args.model_name if model_name == "resnet20": cfg2funcparams = cfg2funcparams_nas_resnet20 get_cs = get_cs_nas_resnet20 else: raise ValueError(f"model name {model_name} is wrong") logger = logging.getLogger(f"RANDOM-NAS-{model_name}") logger.setLevel(logging.DEBUG) expid = get_experiment_id(6) output_dir = os.path.join(output_basedir, "RANDOM", model_name, expid) os.makedirs(output_dir, exist_ok=True) log_path = os.path.join(output_dir, f"RANDOM-NAS-{model_name}.log") setup_logger(logger, log_path) logger.info(f"Experiment {expid} starts...") logger.info("Experiment Configuration:") logger.info(vars(cmd_args)) def obj_func(cfg): logger.info("Starting BO iteration") params = cfg2funcparams(cfg) obj_info = nas_train_test(cmd_args, params, logger, model_name=model_name) logger.info("Finishing BO iteration") logger.info(params) logger.info(obj_info) all_info = { "params": params, "obj_info": obj_info, } fn_path = os.path.join(output_dir, "random_iter_hists.txt") with open(fn_path, "a") as f: json.dump(all_info, f) f.write("\n") return obj_info["value"] cs = get_cs() for i in range(100): cfg = cs.sample_configuration() obj_func(cfg) except KeyboardInterrupt: print("Interrupted. You pressed Ctrl-C!!!") try: sys.exit(0) except SystemExit: os._exit(0)
def main(): try: cmd_args, _ = get_common_cmd_args() model_name = cmd_args.model_name logger = logging.getLogger(f"ADDTREE-NAS-{model_name}") logger.setLevel(logging.DEBUG) ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s" ) ch.setFormatter(formatter) logger.addHandler(ch) logger.info("Training Optimized starts...") logger.info("Experiment Configuration:") logger.info(vars(cmd_args)) params = { "b1": {"method": "elu", "amount": [0.01, 0.748403908117127]}, "b2": {"method": "leaky", "amount": [0.01, 0.99]}, "b3": {"method": "elu", "amount": [0.01, 0.01]}, } obj_info = nas_train_test( cmd_args, params, logger, model_name=model_name, max_epoch=200, lr_ms=[100, 150], ) logger.info(obj_info) except KeyboardInterrupt: print("Interrupted. You pressed Ctrl-C!!!") try: sys.exit(0) except SystemExit: os._exit(0)
def main(): try: cmd_args, _ = get_common_cmd_args() output_basedir = cmd_args.output_basedir model_name = cmd_args.model_name if model_name == "resnet20": path2funcparam = path2funcparam_resnet20_nas build_tree = build_tree_resnet20_nas obs_sigma = 0.06 else: raise ValueError(f"model name {model_name} is wrong") logger = logging.getLogger(f"ADDTREE-NAS-{model_name}") logger.setLevel(logging.DEBUG) expid = get_experiment_id(6) output_dir = os.path.join(output_basedir, "ADDTREE", model_name, expid) os.makedirs(output_dir, exist_ok=False) log_path = os.path.join(output_dir, f"ADDTREE-NAS-{model_name}.log") setup_logger(logger, log_path) logger.info(f"Experiment {expid} starts...") logger.info("Experiment Configuration:") logger.info(vars(cmd_args)) logger.info("Observation sigma is: %f", obs_sigma) root = build_tree() obs_dim = root.obs_dim ss = Storage() ker = build_addtree(root) n_init = cmd_args.n_init for i in range(n_init): logger.info("=" * 50) logger.info(f"Starting BO {i+1} iteration (Random Design)") path = root.random_path(rand_data=True) params = path2funcparam(path[1:]) obj_info = nas_train_test(cmd_args, params, logger, model_name=model_name) ss.add( path.path2vec(obs_dim), obj_info["value"], obs_sigma, path, ) logger.info(f"Finishing BO {i+1} iteration") logger.info(params) logger.info(obj_info) all_info = { "iteration": i + 1, "params": params, "obj_info": obj_info } fn_path = os.path.join(output_dir, f"addtree_iter_{i+1}.json") with open(fn_path, "w") as f: json.dump(all_info, f) def get_kappa(t, max_iter): ks = np.linspace(1, 3, max_iter) return ks[t] for i in range(n_init, 100): logger.info("=" * 50) logger.info(f"Starting BO {i+1} iteration (Optimization)") gp = ss.optimize(ker, n_restart=5, verbose=False) _, _, x_best, path = optimize_acq( LCB, root, gp, ss.Y, obs_dim, grid_size=2000, nb_seed=8, kappa=get_kappa(i, 300), ) path.set_data(x_best) params = path2funcparam(path[1:]) obj_info = nas_train_test(cmd_args, params, logger, model_name=model_name) ss.add( path.path2vec(root.obs_dim), obj_info["value"], obs_sigma, path=path, ) logger.info(f"Finishing BO {i+1} iteration") logger.info(params) logger.info(obj_info) all_info = { "iteration": i + 1, "params": params, "obj_info": obj_info } fn_path = os.path.join(output_dir, f"addtree_iter_{i+1}.json") with open(fn_path, "w") as f: json.dump(all_info, f) except KeyboardInterrupt: print("Interrupted. You pressed Ctrl-C!!!") try: sys.exit(0) except SystemExit: os._exit(0)
def main(): try: cmd_args, _ = get_common_cmd_args() output_basedir = cmd_args.output_basedir model_name = cmd_args.model_name if model_name == "resnet20": cfg2funcparams = cfg2funcparams_nas_resnet20 get_cs = get_cs_nas_resnet20 else: raise ValueError(f"model name {model_name} is wrong") logger = logging.getLogger(f"SMAC-NAS-{model_name}") logger.setLevel(logging.DEBUG) expid = get_experiment_id(6) output_dir = os.path.join(output_basedir, "SMAC", model_name, expid) os.makedirs(output_dir, exist_ok=True) log_path = os.path.join(output_dir, f"SMAC-NAS-{model_name}.log") setup_logger(logger, log_path) logger.info(f"Experiment {expid} starts...") logger.info("Experiment Configuration:") logger.info(vars(cmd_args)) def obj_func(cfg): logger.info("Starting BO iteration") params = cfg2funcparams(cfg) obj_info = nas_train_test(cmd_args, params, logger, model_name=model_name) logger.info("Finishing BO iteration") logger.info(params) logger.info(obj_info) all_info = { "params": params, "obj_info": obj_info, } fn_path = os.path.join(output_dir, "smac_iter_hists.txt") with open(fn_path, "a") as f: json.dump(all_info, f) f.write("\n") return obj_info["value"] # smac default do minimize cs = get_cs() scenario = Scenario( { "run_obj": "quality", # we optimize quality (alternatively runtime) "runcount_limit": 100, # maximum function evaluations "cs": cs, # configuration space "deterministic": "true", "initial_incumbent": "LHD", } ) smac = SMAC4HPO(scenario=scenario, tae_runner=obj_func,) incumbent = smac.optimize() print(incumbent) except KeyboardInterrupt: print("Interrupted. You pressed Ctrl-C!!!") try: sys.exit(0) except SystemExit: os._exit(0)
def main(): try: cmd_args, _ = get_common_cmd_args() output_basedir = cmd_args.output_basedir model_name = cmd_args.model_name if model_name == "resnet20": cfg2funcparams = cfg2funcparams_nas_resnet20 get_space = get_space_nas_resnet20 else: raise ValueError(f"model name {model_name} is wrong") logger = logging.getLogger(f"TPE-NAS-{model_name}") logger.setLevel(logging.DEBUG) expid = get_experiment_id(6) output_dir = os.path.join(output_basedir, "TPE-NAS", model_name, expid) os.makedirs(output_dir, exist_ok=True) log_path = os.path.join(output_dir, f"TPE-NAS-{model_name}.log") setup_logger(logger, log_path) logger.info(f"Experiment {expid} starts...") logger.info("Experiment Configuration:") logger.info(vars(cmd_args)) def obj_func(cfg): logger.info("Starting BO iteration") params = cfg2funcparams(cfg) obj_info = nas_train_test(cmd_args, params, logger, model_name=model_name) logger.info("Finishing BO iteration") logger.info(params) logger.info(obj_info) all_info = { "params": params, "obj_info": obj_info, } fn_path = os.path.join(output_dir, "tpe_iter_hists.txt") with open(fn_path, "a") as f: json.dump(all_info, f) f.write("\n") return {"loss": obj_info["value"], "status": STATUS_OK} space = get_space() trials = Trials() best = fmin( obj_func, space=space, algo=tpe.suggest, max_evals=100, trials=trials, show_progressbar=False, ) print(best) logger.info("Finish TPE optimization") logger.info("Best is: ") logger.info(best) except KeyboardInterrupt: print("Interrupted. You pressed Ctrl-C!!!") try: sys.exit(0) except SystemExit: os._exit(0)