def setup_args_and_config(): parser = argparse.ArgumentParser() parser.add_argument("config_paths", nargs="+", help="path/to/config.yaml") args, left_argv = parser.parse_known_args() cfg = Config(*args.config_paths, default="cfgs/defaults.yaml", colorize_modified_item=True) cfg.argv_update(left_argv) if cfg.use_ddp: cfg.n_workers = 0 cfg.work_dir = Path(cfg.work_dir) (cfg.work_dir / "checkpoints").mkdir(parents=True, exist_ok=True) return args, cfg
def setup_args_and_config(): parser = argparse.ArgumentParser() parser.add_argument("name") parser.add_argument("config_paths", nargs="+", help="path/to/config.yaml") parser.add_argument("--resume", default=None, help="path/to/saved/.pth") parser.add_argument("--use_unique_name", default=False, action="store_true", help="whether to use name with timestamp") args, left_argv = parser.parse_known_args() assert not args.name.endswith(".yaml") cfg = Config(*args.config_paths, default="cfgs/defaults.yaml", colorize_modified_item=True) cfg.argv_update(left_argv) if cfg.use_ddp: cfg.n_workers = 0 cfg.work_dir = Path(cfg.work_dir) cfg.work_dir.mkdir(parents=True, exist_ok=True) if args.use_unique_name: timestamp = utils.timestamp() unique_name = "{}_{}".format(timestamp, args.name) else: unique_name = args.name cfg.unique_name = unique_name cfg.name = args.name (cfg.work_dir / "logs").mkdir(parents=True, exist_ok=True) (cfg.work_dir / "checkpoints" / unique_name).mkdir(parents=True, exist_ok=True) if cfg.save_freq % cfg.val_freq: raise ValueError("save_freq has to be multiple of val_freq.") return args, cfg