Surrogates.jl icon indicating copy to clipboard operation
Surrogates.jl copied to clipboard

Plans for parallel optimization

Open 00sapo opened this issue 4 years ago • 4 comments

Is there any plan for introducing parallel optimization?

For instance, scikit-optimize has an ask-tell interface that allows asking for the best N candidate points (according to the acquisition function) and then fitting the surrogate model with the new N points added.

Example here

What about creating similar ask and tell functions (or functors) one for each acquisition function with a single surrogate_optimize signature?

Actually, the tell is basically add_point! but should support Vector[T] as inputs, so we would just need to separate the ask method...

00sapo avatar May 22 '21 20:05 00sapo

Actually, the tell is basically add_point! but should support Vector[T] as inputs, so we would just need to separate the ask method...

Yes, it just needs a vector input, and then ask is just compatible with only a few samplers (like Sobol), and would need to get implemented.

ChrisRackauckas avatar May 23 '21 13:05 ChrisRackauckas

Don't get why some acquisition functions wouldn't be compatible...

00sapo avatar May 23 '21 14:05 00sapo

Some samplers, like LatinHypercube, have to be batched all at once to guarantee some of their properties.

ChrisRackauckas avatar May 23 '21 19:05 ChrisRackauckas

Ah ok! So we can create another abstract structure for parallelizable samplers and another function for parallel optimization.

If this is ok, I'll try to create a PR in a few weeks

00sapo avatar May 24 '21 07:05 00sapo