Как запустить gp_minimize Scikit параллельно?Python

Программы на Python
Anonymous
Как запустить gp_minimize Scikit параллельно?

Сообщение Anonymous »

Я не могу запустить skopt.gp_minimize на нескольких ядрах. Согласно документации параметр n_jobs должен задавать количество ядер. Однако установка n_cores>1, похоже, не имеет никакого эффекта. Вот минимальный пример, воспроизводящий проблему:
from skopt import gp_minimize
import time
import datetime

def J(paramlist):
x = paramlist[0]
time.sleep(5)
return x**2

print "starting at "+str(datetime.datetime.now())

res = gp_minimize(J, # the function to minimize
[(-1.0, 1.0)],
acq_func="EI", # the acquisition function
n_calls=10, # the number of evaluations of f
n_random_starts=1, # the number of random initialization points
random_state=1234,
acq_optimizer="lbfgs",
n_jobs=5,
)

print "ending at "+str(datetime.datetime.now())

Я пытаюсь оптимизировать J. Чтобы проверить, происходят ли вызовы J параллельно, я помещаю задержку в J. Оптимизатор настроен на 10 вызовов функций, поэтому я ожидаю, что он будет работать в течение ~ 50 секунд последовательно и ~ 10 секунд, если он выполняется на 5 ядрах, как указано.
Вывод:
starting at 2022-11-28 12:32:30.954389
ending at 2022-11-28 12:33:23.403255

это означает, что время выполнения составляло 53 секунды и оно не выполнялось параллельно. Мне было интересно, не упускаю ли я что-то в оптимизаторе. Я использую Anaconda со следующими версиями scikit:
conda list | grep scikit
scikit-learn 0.19.2 py27_blas_openblasha84fab4_201 [blas_openblas] conda-forge
scikit-optimize 0.3 py27_0 conda-forge


Подробнее здесь: https://stackoverflow.com/questions/745 ... n-parallel

Вернуться в «Python»