ray.tune.search.ax.AxSearch#

class ray.tune.search.ax.AxSearch(space: Dict | List[Dict] | None = None, metric: str | None = None, mode: str | None = None, points_to_evaluate: List[Dict] | None = None, parameter_constraints: List | None = None, outcome_constraints: List | None = None, ax_client: None = None, **ax_kwargs)[源代码]#

基类:Searcher

使用 Ax 优化超参数。

Ax 是一个用于理解、管理、部署和自动化自适应实验的平台。Ax 提供了一个易于使用的界面,与 BoTorch 集成,BoTorch 是一个灵活、现代的 PyTorch 库,用于贝叶斯优化。更多信息可以在 https://ax.dev/ 找到。

要使用此搜索算法,您必须安装 Ax:

$ pip install ax-platform
参数:
  • space – 实验搜索空间中的参数。字典中的必需元素包括:”name”(此参数的名称,字符串),”type”(参数类型:”range”、”fixed” 或 “choice”,字符串),范围参数的 “bounds”(两个值的列表,先下限),选择参数的 “values”(值列表),以及固定参数的 “value”(单个值)。

  • metric – 在此实验中用作目标的指标名称。该指标必须存在于传递给 log_dataraw_data 参数中。该指标还必须存在于 Trainable 报告/返回的字典中。如果为 None 但传递了模式,则默认使用 ray.tune.result.DEFAULT_METRIC

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

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

  • parameter_constraints – 参数约束,例如 “x3 >= x4” 或 “x3 + x4 >= 2”。

  • outcome_constraints – 形式为“metric_name >= bound”的结果约束,例如“m1 <= 3.”

  • ax_client – 可选的 AxClient 实例。如果设置了此项,请不要传递以下参数的任何值:spacemetricparameter_constraintsoutcome_constraints

  • **ax_kwargs – 传递给 AxClient 实例。如果 AxClient 不是 None,则忽略。

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

from ray import train, tune
from ray.tune.search.ax import AxSearch

config = {
    "x1": tune.uniform(0.0, 1.0),
    "x2": tune.uniform(0.0, 1.0)
}

def easy_objective(config):
    for i in range(100):
        intermediate_result = config["x1"] + config["x2"] * i
        train.report({"score": intermediate_result})

ax_search = AxSearch()
tuner = tune.Tuner(
    easy_objective,
    tune_config=tune.TuneConfig(
        search_alg=ax_search,
        metric="score",
        mode="max",
    ),
    param_space=config,
)
tuner.fit()

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

from ray import train, tune
from ray.tune.search.ax import AxSearch

parameters = [
    {"name": "x1", "type": "range", "bounds": [0.0, 1.0]},
    {"name": "x2", "type": "range", "bounds": [0.0, 1.0]},
]

def easy_objective(config):
    for i in range(100):
        intermediate_result = config["x1"] + config["x2"] * i
        train.report({"score": intermediate_result})

ax_search = AxSearch(space=parameters, metric="score", mode="max")
tuner = tune.Tuner(
    easy_objective,
    tune_config=tune.TuneConfig(
        search_alg=ax_search,
    ),
)
tuner.fit()

方法

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

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