Esempio n. 1
0
def _load_generation_strategy_by_id(
    gs_id: int,
    decoder: Decoder,
    experiment: Optional[Experiment] = None,
    reduced_state: bool = False,
) -> GenerationStrategy:
    """Finds a generation strategy stored by a given ID and restores it."""
    if reduced_state:
        return decoder.generation_strategy_from_sqa(
            gs_sqa=_get_generation_strategy_sqa_reduced_state(gs_id=gs_id,
                                                              decoder=decoder),
            experiment=experiment,
            reduced_state=reduced_state,
        )

    exp_sqa_class = decoder.config.class_to_sqa_class[Experiment]
    immutable_opt_config_and_search_space = ((
        _get_experiment_immutable_opt_config_and_search_space(
            experiment_name=experiment.name,
            # pyre-ignore Incompatible parameter type [6]: Expected
            # `Type[SQAExperiment]` for 2nd parameter `exp_sqa_class`
            # to call `_get_experiment_immutable_opt_config_and_search_space`
            # but got `Type[ax.storage.sqa_store.db.SQABase]`.
            exp_sqa_class=exp_sqa_class,
        )) if experiment is not None else False)
    if immutable_opt_config_and_search_space:
        gs_sqa = _get_generation_strategy_sqa_immutable_opt_config_and_search_space(
            gs_id=gs_id, decoder=decoder)
    else:
        gs_sqa = _get_generation_strategy_sqa(gs_id=gs_id, decoder=decoder)

    return decoder.generation_strategy_from_sqa(gs_sqa=gs_sqa,
                                                experiment=experiment,
                                                reduced_state=reduced_state)
Esempio n. 2
0
def _load_generation_strategy_by_id(gs_id: int, decoder: Decoder) -> GenerationStrategy:
    """Finds a generation strategy stored by a given ID and restores it."""
    with session_scope() as session:
        gs_sqa = session.query(SQAGenerationStrategy).filter_by(id=gs_id).one_or_none()
        if gs_sqa is None:
            raise ValueError(f"Generation strategy with ID #{gs_id} not found.")
    return decoder.generation_strategy_from_sqa(gs_sqa=gs_sqa)
Esempio n. 3
0
def _load_generation_strategy_by_experiment_name(
    experiment_name: str, decoder: Decoder
) -> GenerationStrategy:
    """Load a generation strategy attached to an experiment specified by a name,
    using given Decoder instance.

    1) Get SQLAlchemy object from DB.
    2) Convert to corresponding Ax object.
    """
    exp_sqa_class = decoder.config.class_to_sqa_class[Experiment]
    gs_sqa_class = decoder.config.class_to_sqa_class[GenerationStrategy]
    with session_scope() as session:
        gs_sqa = (
            session.query(gs_sqa_class)
            .join(exp_sqa_class.generation_strategy)  # pyre-ignore[16]
            # pyre-fixme[16]: `SQABase` has no attribute `name`.
            .filter(exp_sqa_class.name == experiment_name)
            .one_or_none()
        )
    if gs_sqa is None:
        raise ValueError(
            f"Experiment {experiment_name} does not have a generation strategy "
            "attached to it."
        )
    return decoder.generation_strategy_from_sqa(gs_sqa=gs_sqa)
Esempio n. 4
0
File: load.py Progetto: viotemp1/Ax
def _load_generation_strategy_by_id(
    gs_id: int,
    decoder: Decoder,
    experiment: Optional[Experiment] = None,
    reduced_state: bool = False,
) -> GenerationStrategy:
    """Finds a generation strategy stored by a given ID and restores it."""
    gs_sqa = _get_generation_strategy_sqa(
        gs_id=gs_id, decoder=decoder, reduced_state=reduced_state
    )
    return decoder.generation_strategy_from_sqa(
        gs_sqa=gs_sqa, experiment=experiment, reduced_state=reduced_state
    )
def _load_generation_strategy_by_experiment_name(
        experiment_name: str, decoder: Decoder) -> GenerationStrategy:
    """Load a generation strategy attached to an experiment specified by a name,
    using given Decoder instance.

    1) Get SQLAlchemy object from DB.
    2) Convert to corresponding Ax object.
    """
    experiment_sqa = _get_experiment_sqa(experiment_name=experiment_name)
    if experiment_sqa.generation_strategy is None:
        raise ValueError(
            f"Experiment {experiment_name} does not have a generation strategy "
            "attached to it.")
    gs_sqa = experiment_sqa.generation_strategy
    return decoder.generation_strategy_from_sqa(gs_sqa=gs_sqa)
Esempio n. 6
0
def _load_generation_strategy_by_experiment_name(
    experiment_name: str, decoder: Decoder
) -> GenerationStrategy:
    """Load a generation strategy attached to an experiment specified by a name,
    using given Decoder instance.

    1) Get SQLAlchemy object from DB.
    2) Convert to corresponding Ax object.
    """
    with session_scope() as session:
        gs_sqa = (
            session.query(SQAGenerationStrategy)
            .join(SQAExperiment.generation_strategy)
            .filter(SQAExperiment.name == experiment_name)
            .one_or_none()
        )
    if gs_sqa is None:
        raise ValueError(
            f"Experiment {experiment_name} does not have a generation strategy "
            "attached to it."
        )
    return decoder.generation_strategy_from_sqa(gs_sqa=gs_sqa)