Using SingleTaskMultiFidelityGP with multiple fidelity dimensions for MFBO #1942
-
Hi, I'm doing research where I have a target noisy system that I am optimising with parameters such as allocated time, number of threads and a normalised Hamming distance that measures similarities between different strategies in the noisy system. All of these parameters can be considered as fidelity dimensions, e.g. if I want to optimise the system with 10 seconds and 8 threads allocated while using Strategy A, then (5 seconds, 4 threads and Strategy B with a 0.6 Hamming similarity score) is a low fidelity approximation of the high fidelity system. The SingleTaskMultiFidelityGP (https://botorch.org/api/_modules/botorch/models/gp_regression_fidelity.html#SingleTaskMultiFidelityGP) allows for a single dimension of fidelity, but not for multiple dimensions. Is there a way to use this for multiple levels of fidelity, or an alternative strategy for this problem? Thanks! Alex |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 3 replies
-
Yeah, though I don't think we have the exact fit for this out of the box. A very basic solution could also be to use a standard |
Beta Was this translation helpful? Give feedback.
-
Hi Balandat, I've looked into the implementation of Thanks! Alex |
Beta Was this translation helpful? Give feedback.
-
Hi @Balandat I have successfully modified the In
With the variables having values:
I'm finding it difficult to determine whether this is an issue or a side-effect introduced by the added dimensions. In this case I tested it with 3 Thanks! Alex |
Beta Was this translation helpful? Give feedback.
Hi Balandat,
I've looked into the implementation of
SingleTaskMultiFidelityGP
and have created a class that mimics it and allows for multiple dimensions by creating anExponentialDecayKernel
/DownsamplingKernel
for each of a list of iteration/data fidelities and passing all of them into aProductKernel
and aScaleKernel
thereafter.I'm still doing some testing on it to see how well it works and will post the code here once I'm sure everything is working properly. Is this something that could warrant creating a PR in your opinion, or is the use case too niche?
Thanks!
Alex