Source code for ax.storage.sqa_store.reduced_state
#!/usr/bin/env python3
# Copyright (c) Facebook, Inc. and its affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
from typing import List
from ax.storage.sqa_store.sqa_classes import SQAGeneratorRun
from sqlalchemy.orm import defaultload, lazyload, strategy_options
from sqlalchemy.orm.attributes import InstrumentedAttribute
GR_LARGE_MODEL_ATTRS: List[InstrumentedAttribute] = [ # pyre-ignore[9]
SQAGeneratorRun.model_kwargs,
SQAGeneratorRun.bridge_kwargs,
SQAGeneratorRun.model_state_after_gen,
SQAGeneratorRun.gen_metadata,
]
GR_PARAMS_METRICS_COLS = [
"parameters",
"parameter_constraints",
"metrics",
]
[docs]def get_query_options_to_defer_immutable_duplicates() -> List[strategy_options.Load]:
"""Returns the query options that defer loading of attributes that are duplicated
on each trial (like search space attributes and metrics). These attributes do not
need to be loaded for experiments with immutable search space and optimization
configuration.
"""
options = [lazyload(f"generator_runs.{col}") for col in GR_PARAMS_METRICS_COLS]
return options
[docs]def get_query_options_to_defer_large_model_cols() -> List[strategy_options.Load]:
"""Returns the query options that defer loading of model-state-related columns
of generator runs, which can be large and are not needed on every generator run
when loading experiment and generation strategy in reduced state.
"""
return [
defaultload("generator_runs").defer(col.key) for col in GR_LARGE_MODEL_ATTRS
]