Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optuna Integration #33

Open
mmccarty opened this issue Mar 8, 2021 · 0 comments
Open

Optuna Integration #33

mmccarty opened this issue Mar 8, 2021 · 0 comments
Labels
development Issues that require technical work. Associated PRs are required. feature Issues & PRs that capture new feature development. Issues require associated PRs. needs triage Issues that need to be prioritized by the core maintainers and added to a project board.

Comments

@mmccarty
Copy link

mmccarty commented Mar 8, 2021

Is your feature request related to a problem? Please describe
Optuna is an automatic hyperparameter optimization software framework, particularly designed for machine learning. It features an imperative, define-by-run style user API. Thanks to our define-by-run API, the code written with Optuna enjoys high modularity, and the user of Optuna can dynamically construct the search spaces for the hyperparameters.

We should investigate ways to integrate with Optuna so that it logs studies and trials to Rubicon experiments automatically.

Describe the solution you'd like
Optuna has a storage module for providing a way to persist hp tuning information. We should review the storage API to consider how it overlaps with the Rubicon client or repositories. Optuna storages look to be fairly plug-able.

Here's an example usage:

from rubicon.optuna import RubiconStorage
import optuna

def objective(trial):
    x = trial.suggest_uniform("x", -10, 10)
    return (x - 2) ** 2

storage = RubiconStorage(persistence="filesystem", root_dir="/rubicon-root", auto_git_enabled=True)
study = optuna.create_study(storage=storage)
study.optimize(study.optimize(objective, n_trials=100)

project = storage.get_project()
print(f"{len(project.experiments)} logged.") 

Additional context
Dask Optuna implements a DaskStorage backend.

@mmccarty mmccarty added development Issues that require technical work. Associated PRs are required. feature Issues & PRs that capture new feature development. Issues require associated PRs. needs triage Issues that need to be prioritized by the core maintainers and added to a project board. labels Mar 8, 2021
@ryanSoley ryanSoley removed the needs triage Issues that need to be prioritized by the core maintainers and added to a project board. label Mar 29, 2021
@ryanSoley ryanSoley added the needs triage Issues that need to be prioritized by the core maintainers and added to a project board. label Apr 6, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
development Issues that require technical work. Associated PRs are required. feature Issues & PRs that capture new feature development. Issues require associated PRs. needs triage Issues that need to be prioritized by the core maintainers and added to a project board.
Projects
None yet
Development

No branches or pull requests

2 participants