I’ve created a quick and dirty implementation for optimisation with Optuna based on your TPE example.
It works fine, but I’m forced to set the objectives and their directions with custom flags when optimising for multiple objectives since —minimise and —maximise don’t support multiple values and can’t be set together.
Is there any better solution than this workaround without making changes to the guild ai implementation?
That’s terrific that you’re tackling this problem!
A few options that occur to me:
- Modify Guild so that
--maximize could both be specified and both accept multiple values.
- Add a new
--objective option, which pass the value along to the optimizer without constraints.
- Add an optimizer flag, which can be set using
-Fo <key>=<value> - this should work today
Option 3 is worth exploring first. The interface overlaps with
--minimize/--maximize, which is admittedly not ideal. But that’s where I’d expect any optimizer-specific config to land (as opposed to modifying the core options in Guild).
Option 1 and 2 are similar in my mind - I don’t have a sense which is better and would defer to your judgement.