def main(args): """List all experiments inside database.""" config = experiment_builder.get_cmd_config(args) experiment_builder.setup_storage(config.get('storage')) query = {} if args['name']: query['name'] = args['name'] experiments = get_storage().fetch_experiments(query) if args['name']: root_experiments = experiments else: root_experiments = [ exp for exp in experiments if exp['refers'].get('root_id', exp['_id']) == exp['_id'] ] if not root_experiments: print("No experiment found") return for root_experiment in root_experiments: root = experiment_builder.build_view( name=root_experiment['name'], version=root_experiment.get('version')).node print_tree(root, nameattr='tree_name')
def main(args): """Build experiment and execute hunt command""" args["root"] = None args["leafs"] = [] # TODO: simplify when parameter parsing is refactored experiment = experiment_builder.build_from_args(args) if args["init_only"]: return config = experiment_builder.get_cmd_config(args) worker_config = orion.core.config.worker.to_dict() if config.get("worker"): worker_config.update(config.get("worker")) # If EVC is not enabled, we force Consumer to ignore code changes. if not config["branching"].get("enable", orion.core.config.evc.enable): ignore_code_changes = True else: ignore_code_changes = config["branching"].get("ignore_code_changes") with sigterm_as_interrupt(): workon(experiment, ignore_code_changes=ignore_code_changes, **worker_config)
def main(args): """Upgrade the databases for current version""" print( "Upgrading your database may damage your data. Make sure to make a backup before the " "upgrade and stop any other process that may read/write the database during the upgrade." ) if not args.get('force'): action = '' while action not in ['y', 'yes', 'no', 'n']: action = ask_question("Do you wish to proceed? (y/N)", "N").lower() if action in ['no', 'n']: sys.exit(0) config = experiment_builder.get_cmd_config(args) storage_config = config.get('storage') if storage_config is None: storage_config = {'type': 'legacy'} storage_config['setup'] = False experiment_builder.setup_storage(storage_config) storage = get_storage() upgrade_db_specifics(storage) print('Updating documents...') upgrade_documents(storage) print('Database upgrade completed successfully')
def main(args): """Upgrade the databases for current version""" print( "Upgrading your database may damage your data. Make sure to make a backup before the " "upgrade and stop any other process that may read/write the database during the upgrade." ) if not args.get("force"): action = "" while action not in ["y", "yes", "no", "n"]: action = ask_question("Do you wish to proceed? (y/N)", "N").lower() if action in ["no", "n"]: sys.exit(0) config = experiment_builder.get_cmd_config(args) storage_config = config.get("storage") if storage_config is None: storage_config = {"type": "legacy"} storage_config["setup"] = False experiment_builder.setup_storage(storage_config) storage = get_storage() upgrade_db_specifics(storage) print("Updating documents...") upgrade_documents(storage) print("Database upgrade completed successfully")
def main(args): """List all experiments inside database.""" config = experiment_builder.get_cmd_config(args) experiment_builder.setup_storage(config.get("storage")) query = {} if args["name"]: query["name"] = args["name"] experiments = get_storage().fetch_experiments(query) if args["name"]: root_experiments = experiments else: root_experiments = [ exp for exp in experiments if exp["refers"].get("root_id", exp["_id"]) == exp["_id"] ] if not root_experiments: print("No experiment found") return for root_experiment in root_experiments: root = experiment_builder.load( name=root_experiment["name"], version=root_experiment.get("version")).node print_tree(root, nameattr="tree_name")
def main(args): """Remove the experiment(s) or trial(s).""" config = experiment_builder.get_cmd_config(args) experiment_builder.setup_storage(config.get("storage")) # Find root experiment root = experiment_builder.load( name=args["name"], version=args.get("version", None) ).node try: query = build_query(args["query"]) update = build_update(args["update"]) except ValueError as e: print(f"Error: {e}", file=sys.stderr) return 1 # List all experiments with children print_tree(root, nameattr="tree_name") confirmed = confirm_name( CONFIRM_MESSAGE.format(query=args["query"], update=args["update"]), args["name"], args["force"], ) if not confirmed: print("Confirmation failed, aborting operation.") return 1 storage = get_storage() process_updates(storage, root, query, update) return 0
def main(args): """Starts an application server to serve http requests""" config = experiment_builder.get_cmd_config(args) web_api = WebApi(config) gunicorn_app = GunicornApp(web_api) gunicorn_app.run()
def main(args): """Build experiment and execute hunt command""" args['root'] = None args['leafs'] = [] # TODO: simplify when parameter parsing is refactored experiment = experiment_builder.build_from_args(args) config = experiment_builder.get_cmd_config(args) worker_config = orion.core.config.worker.to_dict() if config.get('worker'): worker_config.update(config.get('worker')) workon(experiment, **worker_config)
def main(args): """Remove the experiment(s) or trial(s).""" config = experiment_builder.get_cmd_config(args) experiment_builder.setup_storage(config.get("storage")) # Find root experiment root = experiment_builder.load(name=args["name"], version=args.get("version", None)).node # List all experiments with children print_tree(root, nameattr="tree_name") storage = get_storage() release_locks(storage, root, args["name"], args["force"])
def test_get_cmd_config(config_file): """Test local config (cmdconfig, cmdargs)""" cmdargs = {"config": config_file} local_config = experiment_builder.get_cmd_config(cmdargs) assert local_config["algorithms"] == "random" assert local_config["max_trials"] == 100 assert local_config["max_broken"] == 5 assert local_config["name"] == "voila_voici" assert local_config["storage"] == { "database": { "host": "mongodb://*****:*****@localhost", "name": "orion_test", "type": "mongodb", } } assert local_config["metadata"] == {"orion_version": "XYZ", "user": "******"}
def main(args): """Build experiment and execute hunt command""" args["root"] = None args["leafs"] = [] # TODO: simplify when parameter parsing is refactored experiment = experiment_builder.build_from_args(args) if args["init_only"]: return config = experiment_builder.get_cmd_config(args) worker_config = orion.core.config.worker.to_dict() if config.get("worker"): worker_config.update(config.get("worker")) workon(experiment, ignore_code_changes=config["branching"].get("ignore_code_changes"), **worker_config)
def test_get_cmd_config_from_incomplete_config(incomplete_config_file): """Test local config with incomplete user configuration file (default, env_vars, cmdconfig, cmdargs) This is to ensure merge_configs update properly the subconfigs """ cmdargs = {"config": incomplete_config_file} local_config = experiment_builder.get_cmd_config(cmdargs) assert "algorithms" not in local_config assert "max_trials" not in local_config assert "max_broken" not in local_config assert "name" not in local_config["storage"]["database"] assert ( local_config["storage"]["database"]["host"] == "mongodb://*****:*****@localhost" ) assert local_config["storage"]["database"]["type"] == "incomplete" assert local_config["name"] == "incomplete" assert local_config["metadata"] == {"orion_version": "XYZ", "user": "******"}
def check_configuration_file(self): """Check if configuration file has valid database configuration.""" config = experiment_builder.get_cmd_config(self.cmdargs) if not len(config): return "Skipping", "Missing configuration file." if 'database' not in config.get('storage', {}): return "Skipping", "No database found in configuration file." config = config['storage']['database'] names = ['type', 'name', 'host', 'port'] if not any(name in config for name in names): return "Skipping", "No configuration value found inside `database`." self.db_config.update(config) print('\n ', config) return "Success", ""
def test_get_cmd_config_from_incomplete_config(incomplete_config_file): """Test local config with incomplete user configuration file (default, env_vars, cmdconfig, cmdargs) This is to ensure merge_configs update properly the subconfigs """ cmdargs = {"config": incomplete_config_file} local_config = experiment_builder.get_cmd_config(cmdargs) assert 'algorithms' not in local_config assert 'max_trials' not in local_config assert 'pool_size' not in local_config assert 'name' not in local_config['storage']['database'] assert local_config['storage']['database'][ 'host'] == 'mongodb://*****:*****@localhost' assert local_config['storage']['database']['type'] == 'incomplete' assert local_config['name'] == 'incomplete' assert local_config['metadata'] == { 'orion_version': 'XYZ', 'user': '******' }
def check_configuration_file(self): """Check if configuration file has valid database configuration.""" config = experiment_builder.get_cmd_config(self.cmdargs) if not len(config): return "Skipping", "Missing configuration file." if "database" not in config.get("storage", {}): return "Skipping", "No database found in configuration file." config = config["storage"]["database"] names = ["type", "name", "host", "port"] if not any(name in config for name in names): return "Skipping", "No configuration value found inside `database`." self.db_config.update(config) print("\n ", config) return "Success", ""
def test_get_cmd_config(config_file): """Test local config (cmdconfig, cmdargs)""" cmdargs = {"config": config_file} local_config = experiment_builder.get_cmd_config(cmdargs) assert local_config['algorithms'] == 'random' assert local_config['strategy'] == 'NoParallelStrategy' assert local_config['max_trials'] == 100 assert local_config['name'] == 'voila_voici' assert local_config['pool_size'] == 1 assert local_config['storage'] == { 'database': { 'host': 'mongodb://*****:*****@localhost', 'name': 'orion_test', 'type': 'mongodb' } } assert local_config['metadata'] == { 'orion_version': 'XYZ', 'user': '******' }
def main(args): """Fetch config and status experiments""" config = experiment_builder.get_cmd_config(args) experiment_builder.setup_storage(config.get("storage")) args["all_trials"] = args.pop("all", False) experiments = get_experiments(args) if not experiments: print("No experiment found") return if args.get("name"): print_evc([experiments[0]], **args) return if args.get("version"): if args.get("collapse") or args.get("expand_versions"): raise RuntimeError( "Cannot fetch specific version of experiments with --collapse " "or --expand-versions.") print_evc(experiments, **args)