Epistimio / orion

Asynchronous Distributed Hyperparameter Optimization.
https://orion.readthedocs.io
Other
283 stars 52 forks source link

Algo Budget Information #357

Open Delaunay opened 4 years ago

Delaunay commented 4 years ago

I think all algos should have some form of budget information

Why

Example:

Hyperband

Random search

BayeOpt (Sequential)

Sample a new config every 2 epochs

bouthilx commented 4 years ago
  • Number of unique configuration that will be sampled at the end of the optimization

That's like experiment.max_trials but pushed into algo?

  • Total number of epochs

This should be optional, it opens the black box and some problems may not have epochs.

  • Number of unique configuration per stage if multiple stage

Do you see the stages as a way to represent the number of trials that will be sampled at a given time? That could be a handy way of representing this information indeed. Note that many algorithms will have dynamic stages. ASHA for instance may not follow the expected stages based on the results, how fast or how slow new best trials are found. Same for BayesOpt with parallel strategies for parallelism.

  • Parallelism: (weighted average of the possible number of parallel trials running per stages)

Can you elaborate a bit more on this one? How do you compute it and what would it be used for?

Delaunay commented 4 years ago

yeah not all algos will provide the same information but I think a lot could be similar. for ASHA it would provide the upper bound

Parallelism the the number of independent trial that could be run in parallel averaged out per stages.

So random search is just all the configs. I made an error for hyperband the parallelism would be 11.

Epoch Count Weighted formula
2 300 600 epoch * count
12 30 360
120 3 360
Parallelism 11 (600 + 360 + 360) / 120

It is just a metric to highlight the property of a given optimizer

guillaume-chevalier commented 4 years ago

Related tasks for sparking discussion:

On our side, we'd like the 4 things above to work together as a whole. 4th one is optional and depends on framework used as a hyperparameter repository.

Delaunay commented 4 years ago

@guillaume-chevalier Have you ever used Orion before ? Hyperband is already implemented by Orion.

guillaume-chevalier commented 4 years ago

@Delaunay I have not yet tried Orion definitely, although I've taken a few looks to its code.

By the way I've discussed with @bouthilx and it'd be cool to have a common hyperparameter library we could both import to have our algo's hyperparams compatible with each other.

Next steps would be to write adapters of hyperparam optimization algorithms to do the bridge in one direction and the other one too. This could be done as well for the persistence.

By the way guys I'd suggest to move your MongoDB things to another plug-in package outside of your main Orion repo to avoid having to absolutely rely on MongoDB even for users who don't use it.