예제 #1
0
def create_experiment(mode, space, algorithm):
    experiment = Experiment("supernaekei", mode=mode)
    experiment.space = space
    experiment.algorithms = algorithm
    experiment.max_broken = 5
    experiment.max_trials = 5
    return experiment
예제 #2
0
def create_experiment(name, version, space, **kwargs):
    """Instantiate the experiment and its attribute objects

    All unspecified arguments will be replaced by system's defaults (orion.core.config.*).

    Parameters
    ----------
    name: str
        Name of the experiment.
    version: int
        Version of the experiment.
    space: dict or Space object
        Optimization space of the algorithm. If dict, should have the form
        `dict(name='<prior>(args)')`.
    algorithms: str or dict, optional
        Algorithm used for optimization.
    strategy: str or dict, optional
        Parallel strategy to use to parallelize the algorithm.
    max_trials: int, optional
        Maximum number or trials before the experiment is considered done.
    storage: dict, optional
        Configuration of the storage backend.

    """
    experiment = Experiment(name=name, version=version)
    experiment._id = kwargs.get('_id', None)  # pylint:disable=protected-access
    experiment.pool_size = kwargs.get('pool_size')
    if experiment.pool_size is None:
        experiment.pool_size = orion.core.config.experiment.get(
            'pool_size', deprecated='ignore')
    experiment.max_trials = kwargs.get('max_trials',
                                       orion.core.config.experiment.max_trials)
    experiment.space = _instantiate_space(space)
    experiment.algorithms = _instantiate_algo(experiment.space,
                                              kwargs.get('algorithms'))
    experiment.producer = kwargs.get('producer', {})
    experiment.producer['strategy'] = _instantiate_strategy(
        experiment.producer.get('strategy'))
    experiment.working_dir = kwargs.get(
        'working_dir', orion.core.config.experiment.working_dir)
    experiment.metadata = kwargs.get(
        'metadata', {'user': kwargs.get('user', getpass.getuser())})
    experiment.refers = kwargs.get('refers', {
        'parent_id': None,
        'root_id': None,
        'adapter': []
    })
    experiment.refers['adapter'] = _instantiate_adapters(
        experiment.refers.get('adapter', []))

    return experiment
예제 #3
0
 def test_empty(self, space):
     """Test panda frame creation when there is no trials"""
     with OrionState():
         exp = Experiment("supernaekei", mode="x")
         exp.space = space
         assert exp.to_pandas().shape == (0, 8)
         assert list(exp.to_pandas().columns) == [
             "id",
             "experiment_id",
             "status",
             "suggested",
             "reserved",
             "completed",
             "objective",
             "/index",
         ]
예제 #4
0
 def test_data(self, space):
     """Verify the data in the panda frame is coherent with database"""
     with OrionState(trials=generate_trials(
         ["new", "reserved", "completed"])) as cfg:
         exp = Experiment("supernaekei", mode="x")
         exp._id = cfg.trials[0]["experiment"]
         exp.space = space
         df = exp.to_pandas()
         assert df.shape == (3, 8)
         assert list(df["id"]) == [trial["_id"] for trial in cfg.trials]
         assert all(df["experiment_id"] == exp._id)
         assert list(df["status"]) == ["completed", "reserved", "new"]
         assert list(df["suggested"]) == [
             trial["submit_time"] for trial in cfg.trials
         ]
         assert df["reserved"][0] == cfg.trials[0]["start_time"]
         assert df["reserved"][1] == cfg.trials[1]["start_time"]
         assert df["reserved"][2] is pandas.NaT
         assert df["completed"][0] == cfg.trials[0]["end_time"]
         assert df["completed"][1] is pandas.NaT
         assert df["completed"][2] is pandas.NaT
         assert list(df["objective"]) == [2, 1, 0]
         assert list(df["/index"]) == [2, 1, 0]
예제 #5
0
def create_experiment(name, version, mode, space, **kwargs):
    """Instantiate the experiment and its attribute objects

    All unspecified arguments will be replaced by system's defaults (orion.core.config.*).

    Parameters
    ----------
    name: str
        Name of the experiment.
    version: int
        Version of the experiment.
    mode: str
        The access rights of the experiment on the database.
        'r': read access only
        'w': can read and write to database
        'x': can read and write to database, algo is instantiated and can execute optimization
    space: dict or Space object
        Optimization space of the algorithm. If dict, should have the form
        `dict(name='<prior>(args)')`.
    algorithms: str or dict, optional
        Algorithm used for optimization.
    strategy: str or dict, optional
        Parallel strategy to use to parallelize the algorithm.
    max_trials: int, optional
        Maximum number or trials before the experiment is considered done.
    max_broken: int, optional
        Number of broken trials for the experiment to be considered broken.
    storage: dict, optional
        Configuration of the storage backend.

    """
    experiment = Experiment(name=name, version=version, mode=mode)
    experiment._id = kwargs.get("_id", None)  # pylint:disable=protected-access
    experiment.max_trials = kwargs.get("max_trials",
                                       orion.core.config.experiment.max_trials)
    experiment.max_broken = kwargs.get("max_broken",
                                       orion.core.config.experiment.max_broken)
    experiment.space = _instantiate_space(space)
    experiment.algorithms = _instantiate_algo(
        experiment.space,
        experiment.max_trials,
        kwargs.get("algorithms"),
        ignore_unavailable=mode != "x",
    )
    # TODO: Remove for v0.4
    _instantiate_strategy(kwargs.get("producer", {}).get("strategy"))
    experiment.working_dir = kwargs.get(
        "working_dir", orion.core.config.experiment.working_dir)
    experiment.metadata = kwargs.get(
        "metadata", {"user": kwargs.get("user", getpass.getuser())})
    experiment.refers = kwargs.get("refers", {
        "parent_id": None,
        "root_id": None,
        "adapter": []
    })
    experiment.refers["adapter"] = _instantiate_adapters(
        experiment.refers.get("adapter", []))

    log.debug("Created experiment with config:\n%s",
              pprint.pformat(experiment.configuration))

    return experiment