Есть ли что-нибудь кроме HyperOpt
, которое может поддерживать многопроцессорность для поиска по гиперпараметрам? Я знаю, что HyperOpt
можно настроить на использование MongoDB
, но кажется, что легко ошибиться и провести неделю в сорняках, есть ли что-нибудь более популярное и эффективное?
Python: альтернатива гиперопту, поддерживающая многопроцессорность?
comment
Вы видели это обсуждение?
- person Maxim   schedule 23.03.2018
Ответы (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]) } } })
Отказ от ответственности: я работаю над этим проектом — дайте мне знать, если у вас есть какие-либо отзывы!
person
richliaw
schedule
01.04.2018
Я считаю, что луч не для окон, вы согласны?
- person user1367204; 01.04.2018
Я попытался запустить его на 1000 прогонов, я вижу, что накладные расходы больше для приведенного примера. Может быть полезно, если вы используете только распределенное обучение.
- person Dileep; 08.09.2020
Некоторые модели (например, RandomForest) имеют параметр njobs для использования количества ядер. Вы можете попробовать njobs=-1; таким образом, даже если hyperopt использует 1 ядро, каждое испытание будет использовать все ядра, что ускоряет процесс.
person
Tanveer
schedule
17.09.2020