*****
Oríon
*****

|pypi| |py_versions| |license| |doi|
|rtfd| |codecov| |github-actions|

.. |pypi| image:: https://img.shields.io/pypi/v/orion.svg
    :target: https://pypi.python.org/pypi/orion
    :alt: Current PyPi Version

.. |py_versions| image:: https://img.shields.io/pypi/pyversions/orion.svg
    :target: https://pypi.python.org/pypi/orion
    :alt: Supported Python Versions

.. |license| image:: https://img.shields.io/badge/License-BSD%203--Clause-blue.svg
    :target: https://opensource.org/licenses/BSD-3-Clause
    :alt: BSD 3-clause license

.. |doi| image:: https://zenodo.org/badge/102697867.svg
   :target: https://zenodo.org/badge/latestdoi/102697867
   :alt: DOI

.. |rtfd| image:: https://readthedocs.org/projects/orion/badge/?version=stable
    :target: https://orion.readthedocs.io/en/stable/?badge=stable
    :alt: Documentation Status

.. |codecov| image:: https://codecov.io/gh/Epistimio/orion/branch/master/graph/badge.svg
    :target: https://codecov.io/gh/Epistimio/orion
    :alt: Codecov Report

.. |github-actions| image:: https://github.com/Epistimio/orion/workflows/build/badge.svg?branch=master&event=pull_request
    :target: https://github.com/Epistimio/orion/actions?query=workflow:build+branch:master+event:schedule
    :alt: Github actions tests

Oríon is an asynchronous framework for black-box function optimization.

Its purpose is to serve as a meta-optimizer for machine learning models
and training, as well as a flexible experimentation
platform for large scale asynchronous optimization procedures.

Core design value is the minimum disruption of a researcher's workflow.
It allows fast and efficient tuning, providing minimum simple non-intrusive
(not even necessary!) helper *client* interface for a user's script.

So if ``./run.py --mini-batch=50`` looks like what you execute normally,
now what you have to do looks like this:

``orion -n experiment_name ./run.py --mini-batch~'randint(32, 256)'``

Check out our `getting started guide`_ or `this presentation
<https://bluejeans.com/playback/s/4WUezzFCmb9StHzYgB0RjVbTUCKnRcptBvzBMP7t2UpLyKuAq7Emieo911BqEMnI>`_
for an overview, or our `scikit-learn example`_ for a more hands-on experience. Finally we encourage you
to browse our `documentation`_.

.. _getting started guide: https://orion.readthedocs.io/en/stable/install/gettingstarted.html
.. _documentation: https://orion.readthedocs.io/
.. _scikit-learn example: https://orion.readthedocs.io/en/stable/tutorials/scikit-learn.html

Why Oríon?
==========

*Effortless to adopt, deeply customizable*

- `Adopt it <https://orion.readthedocs.io/en/stable/user/script.html>`_ with a single line of code
- `Natively asynchronous <https://orion.readthedocs.io/en/stable/code/core.html>`_, thus resilient and easy to parallelize
- Offers the latest established hyperparameter `algorithms <https://orion.readthedocs.io/en/stable/user/algorithms.html>`_
- Elegant and rich `search-space definitions <https://orion.readthedocs.io/en/stable/user/searchspace.html>`_
- Comprehensive `configuration <https://orion.readthedocs.io/en/stable/user/config.html>`_ system with smart defaults
- Transparent persistence in local or remote `database <https://orion.readthedocs.io/en/stable/install/database.html>`_
- `Integrate seamlessly <https://orion.readthedocs.io/en/stable/plugins/base.html>`_ your own
  hyper-optimization algorithms
- `Language <https://orion.readthedocs.io/en/stable/user/script.html#language-compatibility>`_
  and `configuration file <https://orion.readthedocs.io/en/stable/user/searchspace.html#configuration-file>`_ agnostic

Installation
============

Install Oríon by running ``$ pip install orion``. For more information consult the `installation
guide`_.

.. _installation guide: https://orion.readthedocs.io/en/stable/install/core.html

Contribute or Ask
=================

Do you have a question or issues?
Do you want to report a bug or suggest a feature? Name it!
Please contact us by opening an issue in our repository below and checkout our `contribution guidelines <https://github.com/Epistimio/orion/blob/develop/CONTRIBUTING.md>`_:

- Issue Tracker: `<https://github.com/epistimio/orion/issues>`_
- Source Code: `<https://github.com/epistimio/orion>`_

Start by starring and forking our Github repo!

Thanks for the support!

Citation
========

If you use Oríon for published work, please cite our work using the following bibtex entry.

.. code-block:: bibtex

   @software{xavier_bouthillier_2019_3478593,
     author       = {Xavier Bouthillier and
                     Christos Tsirigotis and
                     François Corneau-Tremblay and
                     Pierre Delaunay and
                     Reyhane Askari and
                     Dendi Suhubdy and
                     Michael Noukhovitch and
                     Dmitriy Serdyuk and
                     Arnaud Bergeron and
                     Peter Henderson and
                     Pascal Lamblin and
                     Mirko Bronzi and
                     Christopher Beckham},
     title        = {Oríon - Asynchronous Distributed Hyperparameter Optimization},
     month        = oct,
     year         = 2019,
     publisher    = {Zenodo},
     version      = {v0.1.8},
     doi          = {10.5281/zenodo.3478592},
     url          = {https://doi.org/10.5281/zenodo.3478592}
   }

Roadmap
=======

See `ROADMAP.md <https://github.com/Epistimio/orion/blob/master/ROADMAP.md>`_.

License
=======

The project is licensed under the `BSD license <https://github.com/Epistimio/orion/blob/master/LICENSE>`_.
