Optuna – A Hyperparameter Optimization Framework
optuna.org
optuna.org
Optuna lost out by a long mile back then in feature parity and dashboarding. Optuna did not have hyperband optimization which was and still is one of the best search algos for hyperopt. It looks like it is possible to implement hyperband yourself now, but in the loosely coupled architecture between Sampler and Pruner it's a bit baroque [1].
Anyway back then it was clear WandB was the far superior choice for features, ease of use, experiment tracking and dashboarding. We went with WandB for our lab.
Could be Optuna caught up, but WandB has seen significant development too. Looking at their dashboard docs, it looks meagre compared to what you can do with WandB.
1. https://tech.preferred.jp/en/blog/how-we-implement-hyperband...
Reliance on cloud services is a legitimate worry though for privacy, IP, process control, reliability, etc.
The comparison between Optuna and WandB was not apples to apples. Optuna is completely self-hosted and local. It also focuses on hyperopt narrowly with flexible design unlike WandB that now assumes to be capture a large part of cloud-based MLOPS workflow.
It would be more fair to compare Optuna to Hyperopt. And I think Optuna was the better choice there, but I did simple PoCing and have no strong opinions.
https://optuna.readthedocs.io/en/stable/reference/generated/...
Anyway, it’s doable to make a multi objective decide_to_prune function with Optuna, here’s an example https://github.com/optuna/optuna/issues/3450#issuecomment-19...
I think even a simple NN with few layers could probably pull it off if you already had categorized the types of data you were training the main model with.
If you are in C++ world, I suggest giving nlopt a try. Note that ESCH and ISRES depend on nlopt::srand.
I will pass along to our ML people.