1

除此之外还有什么HyperOpt可以支持超参数搜索的多处理吗?我知道HyperOpt可以配置使用MongoDB,但似乎很容易出错并在杂草中度过一个星期,有什么更受欢迎和有效的吗?

4

2 回答 2

2

看看雷调谐!

您可以将它用于随机搜索、网格搜索和进化方法的多处理和多机器执行。它还具有流行算法的实现,例如 HyperBand。

这是文档页面 - ray.readthedocs.io/en/latest/tune.html

以一次运行 4 个并行实验为例:

import ray
import ray.tune as tune


def my_func(config, reporter):  # add the reporter parameter
    import time, numpy as np
    i = 0
    while True:
        reporter(timesteps_total=i, 
                 mean_accuracy=i ** config["alpha"])
        i += 1
        time.sleep(.01)


tune.register_trainable("my_func", my_func)
ray.init(num_cpus=4)
tune.run_experiments({
    "my_experiment": { 
        "run": "my_func", 
        "stop": { "mean_accuracy": 100 }, 
        "config": { 
            "alpha": tune.grid_search([0.2, 0.4, 0.6]), 
            "beta": tune.grid_search([1, 2]) } } })

免责声明:我从事这个项目 - 如果您有任何反馈,请告诉我!

于 2018-04-01T08:29:58.220 回答
1

一些模型(比如 RandomForest)有“njobs”参数用于使用核心数。你可以试试 njobs=-1; 因此,即使 hyperopt 使用 1 个核心,每次试验也会使用所有核心,从而加快进程。

于 2020-09-17T06:54:19.453 回答