def runing(config, _log, game_name): # config 파일로 부터 args 정보를 로드 합니다. _config = args_sanity_check(config, _log) args = SN(**config) args.device = "cuda" if args.use_cuda else "cpu" env_name = get_env_name(game_name) # log 기능을 활성화 합니다. logger = Logger(_log) unique_token = "{}__{}".format( args.name, datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")) args.unique_token = unique_token # 텐서보드 기능을 준비 합니다. args.unique_token = unique_token if args.use_tensorboard: tb_logs_direc = os.path.join(dirname(dirname(abspath(__file__))), "results", "tb_logs/{}".format(game_name)) tb_exp_direc = os.path.join(tb_logs_direc, "{}").format(unique_token) logger.setup_tb(tb_exp_direc) # 실험을 시작 합니다. run_sequential(args, logger, env_name)
def my_main(_run, _config, _log): global mongo_client import datetime unique_token = "{}__{}".format(_config["name"], datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")) # run the framework # run(_run, _config, _log, mongo_client, unique_token) arglist = parse_args() logger = Logger(_log) # configure tensorboard logger unique_token = "{}__{}".format(arglist.exp_name, datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")) use_tensorboard = False if use_tensorboard: tb_logs_direc = os.path.join(dirname(dirname(abspath(__file__))), "results", "tb_logs") tb_exp_direc = os.path.join(tb_logs_direc, "{}").format(unique_token) logger.setup_tb(tb_exp_direc) logger.setup_sacred(_run) train(arglist, logger, _config) # arglist = convert(_config) #train(arglist) # force exit os._exit(0)
def run(_run, _config, _log): """ 运行,被main函数调用过来 :param _run: :type _run: :param _config: :type _config: :param _log: :type _log: :return: :rtype: """ # 更改一些config中的默认配置,例如cuda,batch等 _config = args_sanity_check(_config, _log) # 改成Namespace范围的参数 args = SN(**_config) args.device = "cuda" if args.use_cuda else "cpu" #配置日志 logger = Logger(_log) _log.info("打印实验参数: ") experiment_params = pprint.pformat(_config, indent=4, width=1) _log.info("\n\n" + experiment_params + "\n") # 配置Tensorboard Logger , eg: 'qmix_env=8_adam_td_lambda__2021-04-28_09-40-29' unique_token = "{}__{}".format(args.name, datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")) args.unique_token = unique_token # 是否使用tensorboard,使用的话,就配置下存储信息 if args.use_tensorboard: tb_logs_direc = os.path.join(dirname(dirname(abspath(__file__))), "results", "tb_logs") tb_exp_direc = os.path.join(tb_logs_direc, "{}").format(unique_token) logger.setup_tb(tb_exp_direc) # 默认情况下日志sacred来管理 logger.setup_sacred(_run) # 运行和训练 run_sequential(args=args, logger=logger) # Clean up after finishing print("退出主程序") print("停止所有线程") for t in threading.enumerate(): if t.name != "MainThread": print("Thread {} is alive! Is daemon: {}".format(t.name, t.daemon)) t.join(timeout=1) print("Thread joined") print("退出 script") # 确实退出状态 os._exit(os.EX_OK)
def run(_run, _config, _log): # check args sanity _config = args_sanity_check(_config, _log) args = SN(**_config) args.device = "cuda" if args.use_cuda else "cpu" set_device = os.getenv('SET_DEVICE') if args.use_cuda and set_device != '-1': if set_device is None: args.device = "cuda" else: args.device = f"cuda:{set_device}" else: args.device = "cpu" # setup loggers logger = Logger(_log) _log.info("Experiment Parameters:") experiment_params = pprint.pformat(_config, indent=4, width=1) _log.info("\n\n" + experiment_params + "\n") # configure tensorboard logger unique_token = "{}__{}".format( args.name, datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")) args.unique_token = unique_token if args.use_tensorboard: tb_logs_direc = os.path.join(dirname(dirname(abspath(__file__))), "results", "tb_logs") tb_exp_direc = os.path.join(tb_logs_direc, "{}").format(unique_token) logger.setup_tb(tb_exp_direc) # sacred is on by default logger.setup_sacred(_run) # Run and train run_sequential(args=args, logger=logger) # Clean up after finishing print("Exiting Main") print("Stopping all threads") for t in threading.enumerate(): if t.name != "MainThread": print("Thread {} is alive! Is daemon: {}".format(t.name, t.daemon)) t.join(timeout=1) print("Thread joined") print("Exiting script") # Making sure framework really exits os._exit(os.EX_OK)
def run(_run, _config, _log): # check args sanity _config = args_sanity_check(_config, _log) args = SN(**_config) args.device = "cuda" if args.use_cuda else "cpu" if args.use_cuda: th.cuda.set_device(args.device_num) # setup loggers logger = Logger(_log) _log.info("Experiment Parameters:") experiment_params = pprint.pformat(_config, indent=4, width=1) _log.info("\n\n" + experiment_params + "\n") # configure tensorboard logger unique_token = "{}__{}".format( args.name, datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")) args.unique_token = unique_token if args.use_tensorboard: tb_logs_direc = os.path.join(dirname(dirname(abspath(__file__))), "results", "tb_logs") tb_exp_direc = os.path.join(tb_logs_direc, "{}").format(unique_token) args.tb_logs = tb_exp_direc # args.latent_role_direc = os.path.join(tb_exp_direc, "{}").format('latent_role') logger.setup_tb(tb_exp_direc) #dump config to the tb directory with open(os.path.join(tb_exp_direc, "config.yaml"), "w") as f: yaml.dump(_config, f, default_flow_style=False) # sacred is on by default logger.setup_sacred(_run) # Run and train run_sequential(args=args, logger=logger) # Clean up after finishing print("Exiting Main") print("Stopping all threads") for t in threading.enumerate(): if t.name != "MainThread": print("Thread {} is alive! Is daemon: {}".format(t.name, t.daemon)) t.join(timeout=1) print("Thread joined") print("Exiting script") # Making sure framework really exits os._exit(os.EX_OK)
def run(_run, _config, _log): # check args sanity _config = args_sanity_check(_config, _log) args = SN(**_config) args.device = "cuda" if args.use_cuda else "cpu" # setup loggers logger = Logger(_log) _log.info("Experiment Parameters:") experiment_params = pprint.pformat(_config, indent=4, width=1) _log.info("\n\n" + experiment_params + "\n") # configure tensorboard logger # unique_token = "{}__{}".format(args.name, datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")) try: map_name = _config["env_args"]["map_name"] except: map_name = _config["env_args"]["key"] unique_token = f"{_config['name']}_seed{_config['seed']}_{map_name}_{datetime.datetime.now()}" args.unique_token = unique_token if args.use_tensorboard: tb_logs_direc = os.path.join(dirname(dirname(abspath(__file__))), "results", "tb_logs") tb_exp_direc = os.path.join(tb_logs_direc, "{}").format(unique_token) logger.setup_tb(tb_exp_direc) # sacred is on by default logger.setup_sacred(_run) # Run and train run_sequential(args=args, logger=logger) # Clean up after finishing print("Exiting Main") print("Stopping all threads") for t in threading.enumerate(): if t.name != "MainThread": print("Thread {} is alive! Is daemon: {}".format(t.name, t.daemon)) t.join(timeout=1) print("Thread joined") print("Exiting script")
def standard_run(_config, _log, game_name): # check args sanity _config = args_sanity_check(_config, _log) args = SN(**_config) # use_cuda=True by default in default.yaml args.device = "cuda" if args.use_cuda else "cpu" #args.device = f"cuda:{args.device_num}" if args.use_cuda else "cpu" # setup loggers logger = Logger(_log) _log.info("Experiment Parameters:") experiment_params = pprint.pformat(_config, indent=4, width=1) _log.info("\n\n" + experiment_params + "\n") # configure tensorboard logger unique_token = f"{args.name}__{datetime.datetime.now():%Y-%m-%d_%H-%M-%S}" # e.g. QMIX_2021-08-04_11-09-04 args.unique_token = unique_token if args.use_tensorboard: tb_logs_direc = os.path.join(dirname(dirname(abspath(__file__))), "results", f"tb_logs/{game_name}") tb_exp_direc = os.path.join(tb_logs_direc, f"{unique_token}") logger.setup_tb(tb_exp_direc) # Run and train run_sequential(args=args, logger=logger) # Clean up after finishing print("Exiting Main") print("Stopping all threads") for t in threading.enumerate(): if t.name != "MainThread": print(f"Thread {t.name} is alive! Is daemon: {t.daemon}") t.join(timeout=1) print("Thread joined") print("Exiting script") # Making sure framework really exits #os._exit(os.EX_OK) #The os.EX_* values are UNIX only. os._exit(0) #For Windows
def my_main(_run, _config, _log): global mongo_client import datetime # arglist = parse_args() # unique_token = "{}__{}".format(arglist.name, datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")) # run the framework # run(_run, _config, _log, mongo_client, unique_token) logger = Logger(_log) # configure tensorboard logger unique_token = "{}__{}".format( _config["label"], datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")) use_tensorboard = False if use_tensorboard: tb_logs_direc = os.path.join(dirname(dirname(abspath(__file__))), "results", "tb_logs") tb_exp_direc = os.path.join(tb_logs_direc, "{}").format(unique_token) logger.setup_tb(tb_exp_direc) logger.setup_sacred(_run) _log.info("Experiment Parameters:") import pprint experiment_params = pprint.pformat(_config, indent=4, width=1) _log.info("\n\n" + experiment_params + "\n") # START THE TRAINING PROCESS runner = Runner(logger) runner.load(_config) runner.reset() # args = vars(arglist) runner.run(_config) # runner.run(args) # train(arglist, logger, _config) # arglist = convert(_config) # train(arglist) # force exit os._exit(0)
def run(_run, _config, _log, pymongo_client): # check args sanity _config = args_sanity_check(_config, _log) args = SN(**_config) args.device = "cuda" if args.use_cuda else "cpu" # setup loggers logger = Logger(_log) _log.info("Experiment Parameters:") experiment_params = pprint.pformat(_config, indent=4, width=1) _log.info("\n\n" + experiment_params + "\n") # configure tensorboard logger unique_token = "{}__{}".format( args.name, datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")) args.unique_token = unique_token if args.use_tensorboard: tb_logs_direc = os.path.join(dirname(dirname(abspath(__file__))), "results", "tb_logs") tb_exp_direc = os.path.join(tb_logs_direc, "{}").format(unique_token) logger.setup_tb(tb_exp_direc) # sacred is on by default logger.setup_sacred(_run) # Run and train if args.cross_play and args.evaluate: run_sequential_cross(args=args, logger=logger) else: run_sequential(args=args, logger=logger) # Clean up after finishing print("Exiting Main") if pymongo_client is not None: print("Attempting to close mongodb client") pymongo_client.close() print("Mongodb client closed")
def run(_run, _config, _log): # check args sanity _config = args_sanity_check(_config, _log) args = SN(**_config) args.device = "cuda" if args.use_cuda else "cpu" # setup loggers logger = Logger(_log) _log.info("Experiment Parameters:") experiment_params = pprint.pformat(_config, indent=4, width=1) _log.info("\n\n" + experiment_params + "\n") print("\n=================") auto_describe = 'env_' + args.env_args['map_name'] + '_' + args.name.split( '_')[0] + '_' # env map algo if args.name.split('_')[0] == 'smix': auto_describe = auto_describe + args.mixer + '_' # average and sub-average if args.SubAVG_Agent_flag == 0 and args.SubAVG_Mixer_flag == 0: pass else: if args.SubAVG_Agent_flag == 1: auto_describe = auto_describe + 'average' + str( args.SubAVG_Agent_K) if args.SubAVG_Agent_flag_select < 0: auto_describe = auto_describe + 'neg' + ( "Mean" if args.SubAVG_Agent_name_select_replacement == 'mean' else "Zero_start2") + '_' elif args.SubAVG_Agent_flag_select > 0: auto_describe = auto_describe + 'pos' + ( "Mean" if args.SubAVG_Agent_name_select_replacement == 'mean' else "Zero_start2") + '_' if args.SubAVG_Mixer_flag == 1: auto_describe = auto_describe + 'mix' + str(args.SubAVG_Mixer_K) if args.SubAVG_Mixer_flag_select < 0: auto_describe = auto_describe + 'neg' + ( "Mean" if args.SubAVG_Mixer_name_select_replacement == 'mean' else "Zero_start2") + '_' elif args.SubAVG_Mixer_flag_select > 0: auto_describe = auto_describe + 'pos' + ( "Mean" if args.SubAVG_Mixer_name_select_replacement == 'mean' else "Zero_start2") + '_' # double if args.double_q: auto_describe = auto_describe + 'Double' else: auto_describe = auto_describe + 'vanilla' args.z_auto_describe = auto_describe print(auto_describe) print(args.z_describe) print("using Sub-AVG Agent:", end=' ') print("Yes K: %d" % args.SubAVG_Agent_K if args.SubAVG_Agent_flag else "No", end=' | ') print("select > or < average:", end=' ') print("Yes signal: %d" % args.SubAVG_Agent_flag_select if args.SubAVG_Agent_flag_select else "No", end=' | ') print("replace average_select by :", end=' ') print("mean" if args.SubAVG_Agent_name_select_replacement == 'mean' else "zero") print("using Sub-AVG Mixer:", end=' ') print("Yes K: %d" % args.SubAVG_Mixer_K if args.SubAVG_Mixer_flag else "No", end=' | ') print("mixer: select > or <:", end=' ') print("Yes signal: %d" % args.SubAVG_Mixer_flag_select if args.SubAVG_Mixer_flag_select else "No", end=' | ') print("replace mixer_select by :", end=' ') print("mean" if args.SubAVG_Mixer_name_select_replacement == 'mean' else "zero") print("using double_q: ", end=' ') print('Yes' if args.double_q else "No", end=' | ') # ----------------------------- print("\n==================\n") # configure tensorboard logger unique_token = "{}__{}".format( args.name, datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")) args.unique_token = unique_token if args.use_tensorboard: tb_logs_direc = os.path.join(dirname(dirname(abspath(__file__))), "results", "tb_logs") tb_exp_direc = os.path.join(tb_logs_direc, "{}").format(unique_token) logger.setup_tb(tb_exp_direc) # sacred is on by default logger.setup_sacred(_run) # Run and train run_sequential(args=args, logger=logger) # Clean up after finishing print("Exiting Main") print("Stopping all threads") for t in threading.enumerate(): if t.name != "MainThread": print("Thread {} is alive! Is daemon: {}".format(t.name, t.daemon)) t.join(timeout=1) print("Thread joined") print("Exiting script") # Making sure framework really exits os._exit(os.EX_OK)