抽象外观
smac.facade.abstract_facade #
AbstractFacade #
AbstractFacade(
scenario: Scenario,
target_function: Callable | str | AbstractRunner,
*,
model: AbstractModel | None = None,
acquisition_function: AbstractAcquisitionFunction
| None = None,
acquisition_maximizer: AbstractAcquisitionMaximizer
| None = None,
initial_design: AbstractInitialDesign | None = None,
random_design: AbstractRandomDesign | None = None,
intensifier: AbstractIntensifier | None = None,
multi_objective_algorithm: AbstractMultiObjectiveAlgorithm
| None = None,
runhistory_encoder: AbstractRunHistoryEncoder
| None = None,
config_selector: ConfigSelector | None = None,
logging_level: int
| Path
| Literal[False]
| None = None,
callbacks: list[Callback] = None,
overwrite: bool = False,
dask_client: Client | None = None
)
外观(Facade)是 SMBO 后端之上的一个抽象层,用于以可配置和可分离的方式组织贝叶斯优化循环的组件,以适应不同(超参数)优化管道的各种需求。
除了用户必须提供的 `scenario` 和 target_function
外,参数 model
、acquisition_function
、acquisition_maximizer
、initial_design
、random_design
、intensifier
、multi_objective_algorithm
、runhistory_encoder
可以通过子类的 get_*
方法明确指定(定义特定的 BO 管道),或者由用户实例化以显式覆盖管道组件。
参数#
scenario : Scenario 场景对象,包含所有环境信息。 target_function : Callable | str | AbstractRunner 此函数在内部调用以评估试验性能。如果传入字符串,则假定为脚本。在这种情况下,使用 TargetFunctionScriptRunner
运行脚本。 model : AbstractModel | None, defaults to None 代理模型。 acquisition_function : AbstractAcquisitionFunction | None, defaults to None 采集函数。 acquisition_maximizer : AbstractAcquisitionMaximizer | None, defaults to None 采集最大化器,根据代理模型和采集函数决定哪个配置最有前景。 initial_design : InitialDesign | None, defaults to None 在贝叶斯优化循环开始前,从初始设计中采样配置进行评估。 random_design : RandomDesign | None, defaults to None 随机设计用于采集最大化器,决定下一个配置是应从采集函数中抽取还是随机抽取。 intensifier : AbstractIntensifier | None, defaults to None Intensifier 决定接下来应运行哪个试验(配置、种子、预算和实例的组合)。 multi_objective_algorithm : AbstractMultiObjectiveAlgorithm | None, defaults to None 在多目标情况下,需要对目标进行解释以便进行优化。多目标算法负责此任务。 runhistory_encoder : RunHistoryEncoder | None, defaults to None 代理模型基于运行历史进行训练。然而,数据首先需要编码,这由运行历史编码器完成。例如,非活跃超参数需要编码,或者成本值可以进行对数转换。 logging_level: int | Path | Literal[False] | None 日志级别(最低级别 0 表示调试级别)。如果传入路径,则期望是包含日志配置的 yaml 文件。如果未传入任何内容,则使用 SMAC 默认的 logging.yml。如果传入 False,SMAC 不会自定义日志设置,而是由用户负责。 callbacks: list[Callback], defaults to [] 回调函数,集成到优化循环中。 overwrite: bool, defaults to False 当为 True 时,如果找到与当前设置元数据一致的先前运行结果,则覆盖。当为 False 且找到与元数据一致的先前运行结果时,则继续运行。当为 False 且找到与元数据不一致的先前运行结果时,则会询问用户具体行为(完全覆盖还是先重命名旧运行)。 dask_client: Client | None, defaults to None 用户创建的 dask 客户端,可用于启动 dask 集群并将 SMAC 附加到其上。如果显式提供,则不会自动关闭,必须手动关闭。如果未提供(默认),则会为您创建一个本地客户端并在完成后关闭。
源代码位于 smac/facade/abstract_facade.py
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 |
|
get_acquisition_function abstractmethod
staticmethod
#
get_acquisition_function(
scenario: Scenario,
) -> AbstractAcquisitionFunction
返回 BO 循环中使用的采集函数实例,定义探索/利用权衡。
源代码位于 smac/facade/abstract_facade.py
get_acquisition_maximizer abstractmethod
staticmethod
#
get_acquisition_maximizer(
scenario: Scenario,
) -> AbstractAcquisitionMaximizer
返回 BO 循环中使用的采集优化器实例,指定如何优化采集函数实例。
源代码位于 smac/facade/abstract_facade.py
get_config_selector staticmethod
#
get_config_selector(
scenario: Scenario,
*,
retrain_after: int = 8,
retries: int = 16
) -> ConfigSelector
返回默认配置选择器。
源代码位于 smac/facade/abstract_facade.py
get_initial_design abstractmethod
staticmethod
#
get_initial_design(
scenario: Scenario,
) -> AbstractInitialDesign
返回 BO 循环中使用的初始设计类实例,指定如何选择用于“热启动”BO 循环的配置。
源代码位于 smac/facade/abstract_facade.py
get_intensifier abstractmethod
staticmethod
#
get_intensifier(scenario: Scenario) -> AbstractIntensifier
返回 BO 循环中使用的 Intensifier 实例,指定如何在其他问题实例上挑战当前最佳配置。
源代码位于 smac/facade/abstract_facade.py
get_model abstractmethod
staticmethod
#
get_model(scenario: Scenario) -> AbstractModel
get_multi_objective_algorithm abstractmethod
staticmethod
#
get_multi_objective_algorithm(
scenario: Scenario,
) -> AbstractMultiObjectiveAlgorithm
返回 BO 循环中使用的多目标算法实例,指定多目标成本的标量化策略。
源代码位于 smac/facade/abstract_facade.py
get_random_design abstractmethod
staticmethod
#
get_random_design(
scenario: Scenario,
) -> AbstractRandomDesign
返回 BO 循环中使用的随机设计类实例,指定如何在 BO 迭代中穿插随机选择的配置。
源代码位于 smac/facade/abstract_facade.py
get_runhistory_encoder abstractmethod
staticmethod
#
get_runhistory_encoder(
scenario: Scenario,
) -> AbstractRunHistoryEncoder
返回 BO 循环中使用的运行历史编码器类实例,指定如何为下一个代理模型准备运行历史。
源代码位于 smac/facade/abstract_facade.py
optimize #
优化算法的配置。
参数#
data_to_scatter: dict[str, Any] | None 我们首先注意,此参数仅对 dask_runner 有效!当用户将数据从本地进程分散到分布式网络时,数据会以循环方式按核心数分组分发。粗略地说,我们可以将这些数据保留在内存中,这样每次要执行带有大数据集的目标函数时就不必(反)序列化数据了。例如,当您的目标函数有一个在所有目标函数之间共享的大数据集时,此参数非常有用。
返回值#
incumbent : Configuration 找到的最佳配置。
源代码位于 smac/facade/abstract_facade.py
tell #
tell(
info: TrialInfo, value: TrialValue, save: bool = True
) -> None
将试验结果添加到运行历史并更新 Intensifier。
参数#
info: TrialInfo 描述要处理结果的试验。 value: TrialValue 包含有关试验执行的相关信息。 save : bool, optional to True 是否应保存运行历史。
源代码位于 smac/facade/abstract_facade.py
validate #
在与优化过程中使用的种子不同的种子以及最高预算(如果预算类型为实数值)上验证配置。
参数#
config : Configuration 要验证的配置。 instances : list[str] | None, defaults to None 要验证的实例。如果为 None,则使用场景中指定的所有实例。如果预算类型为实数值,则忽略此参数。 seed : int | None, defaults to None 如果为 None,则使用场景中的种子。
返回值#
cost : float | list[float] 配置的平均成本。在多保真度情况下,每个目标的成本都会被平均。