我正在使用 skopt (scikit-optimize) 包,使用 ask-tell 语法。我在 Windows 机器上使用 python 3.7 ask 函数调用需要很长时间(第一次调用 ~1 分钟,然后每次迭代增加 1 分钟,所以最终多达 20 分钟)。有没有办法并行化这个调用(不是我已经并行化的成本函数评估,而是 ask 函数)?我有一台 40 核的机器,还有一个很好的 GPU,两者都可以使用。
谢谢马克
回复杰罗姆:感谢您的浏览,抱歉不清楚。我意识到 CPU 代码不能在 GPU 上运行,但如果有一种方法可以做到这一点,那将是一个选择。我正在做一个非常简单的优化(目前使用 GP,但也想使用 RF 和 GBRF)。我正在使用 ask-tell 语法。基本代码是:
from skopt import Optimizer
opt = Optimizer(20,n_jobs = 5, base_estimator='GP')
# the ask step below is what I'd like to parallelize,
# if possible, I tried setting n_jobs above, didn't help
suggested = opt.ask(n_points = 20)
# calculate fitness - this part is parallelized, works nicely
fitnesses = calc_fitness(suggested)
# the tell step is fast, no need to parallelize
res = opt.tell( suggested, fitnesses)
任何建议,将不胜感激。谢谢