ray.tune.search.zoopt.ZOOptSearch#

class ray.tune.search.zoopt.ZOOptSearch(algo: str = 'asracos', budget: int | None = None, dim_dict: Dict | None = None, metric: str | None = None, mode: str | None = None, points_to_evaluate: List[Dict] | None = None, parallel_num: int = 1, **kwargs)[源代码]#

基类:Searcher

一个围绕 ZOOpt 的包装器,用于提供试验建议。

ZOOptSearch 是一个用于无导数优化的库。它基于 ZOOpt 包。目前,Tune 中实现了异步顺序随机化坐标收缩(ASRacos)。

要使用 ZOOptSearch,请安装 zoopt (>=0.4.1):pip install -U zoopt

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

from ray import train, tune
from ray.tune.search.zoopt import ZOOptSearch

"config": {
    "iterations": 10,  # evaluation times
    "width": tune.uniform(-10, 10),
    "height": tune.uniform(-10, 10)
}

zoopt_search_config = {
    "parallel_num": 8,  # how many workers to parallel
}

zoopt_search = ZOOptSearch(
    algo="Asracos",  # only support Asracos currently
    budget=20,  # must match `num_samples` in `tune.TuneConfig()`.
    dim_dict=dim_dict,
    metric="mean_loss",
    mode="min",
    **zoopt_search_config
)

tuner = tune.Tuner(
    my_objective,
    tune_config=tune.TuneConfig(
        search_alg=zoopt_search,
        num_samples=20
    ),
    run_config=train.RunConfig(
        name="zoopt_search",
        stop={"timesteps_total": 10}
    ),
    param_space=config
)
tuner.fit()

如果你想手动传递搜索空间,代码会是这样的:

from ray import train, tune
from ray.tune.search.zoopt import ZOOptSearch
from zoopt import ValueType

dim_dict = {
    "height": (ValueType.CONTINUOUS, [-10, 10], 1e-2),
    "width": (ValueType.DISCRETE, [-10, 10], False),
    "layers": (ValueType.GRID, [4, 8, 16])
}

"config": {
    "iterations": 10,  # evaluation times
}

zoopt_search_config = {
    "parallel_num": 8,  # how many workers to parallel
}

zoopt_search = ZOOptSearch(
    algo="Asracos",  # only support Asracos currently
    budget=20,  # must match `num_samples` in `tune.TuneConfig()`.
    dim_dict=dim_dict,
    metric="mean_loss",
    mode="min",
    **zoopt_search_config
)

tuner = tune.Tuner(
    my_objective,
    tune_config=tune.TuneConfig(
        search_alg=zoopt_search,
        num_samples=20
    ),
    run_config=train.RunConfig(
        name="zoopt_search",
        stop={"timesteps_total": 10}
    ),
)
tuner.fit()
参数:
  • algo – 要在zoopt中指定要使用的算法。目前仅支持ASRacos。

  • budget – 样本数量。

  • dim_dict – 维度字典。对于连续维度:(continuous, search_range, precision);对于离散维度:(discrete, search_range, has_order);对于网格维度:(grid, grid_list)。更多详情可以在zoopt包中找到。

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

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

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

  • parallel_num – 并行工作的数量。注意初始阶段可能启动的工作者数量少于这个数字。更多详情可以在zoopt包中找到。

方法

add_evaluated_point

传递从已单独评估的点获得的结果。

add_evaluated_trials

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

on_trial_complete

试用完成的通知。

on_trial_result

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

restore_from_dir

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

save_to_dir

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

set_max_concurrency

设置此搜索器可以运行的最大并发试验次数。

属性

CKPT_FILE_TMPL

FINISHED

metric

训练结果目标值属性。

mode

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

optimizer