tune

An abstraction layer for parameter tuning

https://github.com/fugue-project/tune

Science Score: 23.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.2%) to scientific vocabulary

Keywords

distributed distributed-computing distributed-systems hyperparameter-optimization hyperparameter-tuning machine-learning parameter-tuning
Last synced: 6 months ago · JSON representation

Repository

An abstraction layer for parameter tuning

Basic Info
  • Host: GitHub
  • Owner: fugue-project
  • License: apache-2.0
  • Language: Python
  • Default Branch: master
  • Homepage:
  • Size: 414 KB
Statistics
  • Stars: 35
  • Watchers: 3
  • Forks: 3
  • Open Issues: 7
  • Releases: 28
Topics
distributed distributed-computing distributed-systems hyperparameter-optimization hyperparameter-tuning machine-learning parameter-tuning
Created over 5 years ago · Last pushed over 1 year ago
Metadata Files
Readme License

README.md

Doc PyPI versionPyPI pyversions PyPI license codecov

Slack Status

Tune is an abstraction layer for general parameter tuning. It is built on Fugue so it can seamlessly run on any backend supported by Fugue, such as Spark, Dask and local.

Installation

bash pip install tune

It's recommended to also install Scikit-Learn (for all compatible models tuning) and Hyperopt (to enable Bayesian Optimization)

bash pip install tune[hyperopt,sklearn]

Quick Start

To quickly start, please go through these tutorials on Kaggle:

  1. Search Space
  2. Non-iterative Problems, such as Scikit-Learn model tuning
  3. Iterative Problems, such as Keras model tuning

Design Philosophy

Tune does not follow Scikit-Learn's model selection APIs and does not provide distributed backend for it. We believe that parameter tuning is a general problem that is not only for machine learning, so our abstractions are built from ground up, the lower level APIs do not assume the objective is a machine learning model, while the higher level APIs are dedicated to solve specific problems, such as Scikit-Learn compatible model tuning and Keras model tuning.

Although we didn't base our solution on any of HyperOpt, Optuna, Ray Tune and Nevergrad etc., we are truly inspired by these wonderful solutions and their design. We also integrated with many of them for deeper level optimizations.

Tuning problems are never easy, here are our goals:

  • Provide the simplest and most intuitive APIs for major tuning cases. We always start from real tuning cases, figure out the minimal requirement for each of them and then determine the layers of abstraction. Read this tutorial, you can see how minimal the interfaces can be.
  • Be scale agnostic and platform agnostic. We want you to worry less about distributed computing, and just focus on the tuning logic itself. Built on Fugue, Tune let you develop your tuning process iteratively. You can test with small spaces on local machine, and then switch to larger spaces and run distributedly with no code change. It can effectively save time and cost and make the process fun and rewarding. And to run any tuning logic distributedly, you only need a core framework itself (Spark, Dask, etc.) and you do not need a database, a queue service or even an embeded cluster.
  • Be highly extendable and flexible on lower level. For example
    • you can extend on Fugue level, for example create an execution engine for Prefect to run the tuning jobs as a Prefect workflow
    • you can integrate third party optimizers and use Tune just as a distributed orchestrator. We have integrated HyperOpt. And Optuna and Nevergrad is on the way.
    • you can start external instances (e.g. EC2 instances) for different training subtasks and to fully utilize your cloud
    • you can combine with distributed training as long as your have enough compute resource

Focuses

Here are our current focuses:

  • A flexible space design and can describe a hybrid space of grid search, random search and second level optimization such as bayesian optimization
  • Integrate with 3rd party tuning frameworks
  • Create generalized and distributed versions of Successive Halving, Hyperband and Asynchronous Successive Halving.

Collaboration

We are looking for collaborators, if you are interested, please let us know. Please join our Slack channel.

Owner

  • Name: The Fugue Project
  • Login: fugue-project
  • Kind: organization
  • Email: fugue-project@googlegroups.com

Democratizing distributed computing and machine learning

GitHub Events

Total
Last Year

Committers

Last synced: almost 3 years ago

All Time
  • Total Commits: 40
  • Total Committers: 2
  • Avg Commits per committer: 20.0
  • Development Distribution Score (DDS): 0.025
Top Committers
Name Email Commits
Han Wang g****n@g****m 39
Han Wang h****g@l****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 27
  • Total pull requests: 40
  • Average time to close issues: 22 days
  • Average time to close pull requests: 8 days
  • Total issue authors: 2
  • Total pull request authors: 1
  • Average comments per issue: 0.07
  • Average comments per pull request: 0.28
  • Merged pull requests: 38
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: 5 days
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 1.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • goodwanghan (25)
  • kvnkho (2)
Pull Request Authors
  • goodwanghan (39)
Top Labels
Issue Labels
enhancement (20) core feature (10) bug (5) optimizer (4) model support (4) unit test (3) documentation (3) behavior change (3) refactor (2) notebook (1)
Pull Request Labels
core feature (3) behavior change (3) enhancement (2) refactor (2) documentation (1) bug (1) optimizer (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 1,446 last-month
  • Total docker downloads: 97
  • Total dependent packages: 1
  • Total dependent repositories: 12
  • Total versions: 27
  • Total maintainers: 1
pypi.org: tune

An abstraction layer for hyper parameter tuning

  • Versions: 27
  • Dependent Packages: 1
  • Dependent Repositories: 12
  • Downloads: 1,446 Last month
  • Docker Downloads: 97
Rankings
Docker downloads count: 2.7%
Dependent repos count: 4.2%
Dependent packages count: 4.7%
Downloads: 6.0%
Average: 7.6%
Stargazers count: 11.0%
Forks count: 16.9%
Maintainers (1)
Last synced: 6 months ago

Dependencies

requirements.txt pypi
  • autopep8 *
  • black *
  • dask *
  • flake8 *
  • flask *
  • furo ==2022.4.7
  • mypy *
  • nbsphinx *
  • pandoc *
  • pre-commit *
  • pylint *
  • pyspark *
  • pytest *
  • pytest-cov *
  • pytest-mock *
  • pytest-spark *
  • sphinx >=2.4.0
  • sphinx-autodoc-typehints *
  • sphinx-rtd-theme *
  • twine *
  • wheel *
setup.py pypi
  • fugue >=0.6.3
.github/workflows/lint.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v1 composite
.github/workflows/publish.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v1 composite
.github/workflows/test.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v1 composite
  • codecov/codecov-action v1 composite
.github/workflows/testwin.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v1 composite