ray.tune.search.hebo.HEBOSearch#

class ray.tune.search.hebo.HEBOSearch(space: Dict | hebo.design_space.design_space.DesignSpace | None = None, metric: str | None = None, mode: str | None = None, points_to_evaluate: List[Dict] | None = None, evaluated_rewards: List | None = None, random_state_seed: int | None = None, max_concurrent: int = 8, **kwargs)[源代码]#

基类:Searcher

使用 HEBO(异方差进化贝叶斯优化)来优化超参数。

HEBO 是由华为诺亚方舟实验室创建的尖端黑箱优化框架。更多信息可以在这里找到:huawei-noah/HEBO

space 可以是 HEBO 的 DesignSpace 对象,也可以是 Tune 搜索空间的字典。

请注意,前几次试验将是随机的,用于启动搜索过程。为了获得良好的结果,我们建议将试验次数设置为至少16次。

最大并发试验次数由 max_concurrent 参数决定。试验将以 max_concurrent 试验为一批次进行。如果此搜索器在 ConcurrencyLimiter 中使用,传递给它的 max_concurrent 值将覆盖此处传递的值。

参数:
  • space – 一个将参数名称映射到 Tune 搜索空间或 HEBO DesignSpace 对象的字典。

  • metric – 训练结果目标值属性。如果为 None 但传递了模式,则默认使用匿名度量 _metric

  • mode – 其中之一 {min, max}。确定目标是最小化还是最大化指标属性。

  • points_to_evaluate – 初始参数建议首先运行。当你已经有一些好的参数想要首先运行以帮助算法为未来的参数做出更好的建议时,可以使用此功能。需要是一个包含配置的dict列表。

  • evaluated_rewards – 如果你之前已经评估了作为 points_to_evaluate 传递的参数,你可以通过传递奖励属性作为列表来避免重新运行这些试验,这样优化器就可以被告知结果而不需要重新计算试验。必须与 points_to_evaluate 的长度相同。

  • random_state_seed – 可重复结果的种子。默认为 None。请注意,将其设置为某个值将更改初始化和从检查点加载时 numpytorch 的全局随机状态。

  • max_concurrent – 最大并发试验次数。如果此搜索器用于 ConcurrencyLimiter,传递给它的 max_concurrent 值将覆盖此处传递的值。

  • **kwargs – 关键字参数将被传递给 HEBO()`

Tune 自动将搜索空间转换为 HEBO 的格式:

from ray import tune
from ray.tune.search.hebo import HEBOSearch

config = {
    "width": tune.uniform(0, 20),
    "height": tune.uniform(-100, 100)
}

hebo = HEBOSearch(metric="mean_loss", mode="min")
tuner = tune.Tuner(
    trainable_function,
    tune_config=tune.TuneConfig(
        search_alg=hebo
    ),
    param_space=config
)
tuner.fit()

或者,您可以手动将 HEBO DesignSpace 对象传递给 Searcher:

from ray import tune
from ray.tune.search.hebo import HEBOSearch
from hebo.design_space.design_space import DesignSpace

space_config = [
    {'name' : 'width', 'type' : 'num', 'lb' : 0, 'ub' : 20},
    {'name' : 'height', 'type' : 'num', 'lb' : -100, 'ub' : 100},
]
space = DesignSpace().parse(space_config)

hebo = HEBOSearch(space, metric="mean_loss", mode="min")
tuner = tune.Tuner(
    trainable_function,
    tune_config=tune.TuneConfig(
        search_alg=hebo
    )
)
tuner.fit()

方法

add_evaluated_trials

传递已单独评估的试验结果。

on_trial_complete

试用完成的通知。

on_trial_result

训练期间结果的通知(可选)。

restore

恢复当前优化器状态。

restore_from_dir

从给定的 checkpoint_dir 恢复搜索器的状态。

save

存储当前优化器状态。

save_to_dir

自动将给定的搜索器保存到 checkpoint_dir。

属性

CKPT_FILE_TMPL

FINISHED

metric

训练结果目标值属性。

mode

指定是否最小化或最大化指标。