![alt text](docs/source/dragon_logo.png)
[![Documentation Status](https://readthedocs.org/projects/dragon-tutorial/badge/?version=latest)](https://dragon-tutorial.readthedocs.io/en/latest/?badge=latest)
[![GitHub latest commit](https://badgen.net/github/last-commit/JulieKeisler/dragon/)](https://github.com/JulieKeisler/dragon/commit/)
![Maintainer](https://img.shields.io/badge/maintainer-J.Keisler-blue)
**DRAGON**, for **DiRected Acyclic Graphs OptimizatioN**, is an open source Python package for the optimization of *Deep Neural Networks Hyperparameters and Architecture* [[1]](#1).
**DRAGON** is not a *no code* package, but you can get familiar with it quickly thanks to the [Documentation](https://dragon-tutorial.readthedocs.io/en/latest/index.html).
Key Features
------------
- A flexible seach space
- The search space based on Directed Acyclic Graphs (DAGs) where the nodes can be any **PyTorch** layer (custom or not) and the edges are the connections between them.
- The code to implement the DAGs-based search space was inspired by the [zellij](https://zellij.readthedocs.io/en/latest/) package developed for hyperparameters optimization.
- **DRAGON** search space includes cell-based search spaces [4]_.
- Flexible optimization algorithms
- The search algorithms defined in **DRAGON** are based on search operators used to modify elements of the search space (e.g., mutations, neighborhoods, crossover), which can be used to develop new search algorithms.
- Efficient algorithms are also implemented in **DRAGON** such as the Random Search, Evolutionary Algorithm, Mutant UCB, and HyperBand.
- Applications to various tasks
- The flexibility of **DRAGON** makes it usable for various applications.
- For example: image classification, time series forecasting, electricity consumption forecasting, wind power forecasting or tabular data.
- Easy parallelization over multiple GPUs
- The distributed version requires a MPI library, such as [MPICH](https://www.mpich.org/) or [Open MPI](https://www.open-mpi.org/) and is based on [mpi4py](https://mpi4py.readthedocs.io/en/stable/intro.html#what-is-mpi).
Basic Concepts
------------
- The **Search Space** is a mix-variable search space. Numerical, categorical and graph objects may be jointly optimized. Each object is associated with a **variable**, which defines what values an object can take.
- Base on this search space, several **Search Operators** are defined, showing how the objects can be manipulate to find the neighboring values.
Install DRAGON
--------------
**Basic version**
After cloning the git repository, install **DRAGON**, using:
pip install -e dragon
**Distributed version**
If you plan on using the distributed version, you have to install the mpi4py package:
pip install mpi4py
**Documentation**
Additional dependencies are required to run the documentation notebooks:
pip install -e dragon[docs]
Dependencies
------------
* **Python** >=3.9
* [numpy](https://numpy.org/)<2.0.0
* [torch](https://pytorch.org/)
* [graphviz](https://graphviz.org/)
* [pandas](https://pandas.pydata.org/)
* [mpi]:
* [mpi4py](https://mpi4py.readthedocs.io/en/stable/)
* [docs]:
* [openml](https://www.openml.org/)
* [sklearn](https://scikit-learn.org)
* [optuna](https://optuna.org/)
* [matplotlib](https://matplotlib.org/)
* [skorch](https://skorch.readthedocs.io/en/stable/)
## Contributors ##
### Design
* Julie Keisler: julie.keisler.rfo@gmail.com
## References ##
<a id="1">[1]</a>
Keisler, J., Talbi, E. G., Claudel, S., & Cabriel, G. (2024). An algorithmic framework for the optimization of deep neural networks architectures and hyperparameters. Journal of Machine Learning Research.
Raw data
{
"_id": null,
"home_page": "https://github.com/JulieKeisler/DRAGON",
"name": "dragon-autodl",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "deep learning, neural networks, automl, neural architecture search, hyperparameters optimization, metaheuristics",
"author": "Julie Keisler",
"author_email": "julie.keisler.rfo@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/0c/d1/3e5df4a6644a7bc07c452519db3c7ccf3bc6f72a9f8e77ed0217b632ceb3/dragon_autodl-1.0.tar.gz",
"platform": null,
"description": "![alt text](docs/source/dragon_logo.png)\n\n[![Documentation Status](https://readthedocs.org/projects/dragon-tutorial/badge/?version=latest)](https://dragon-tutorial.readthedocs.io/en/latest/?badge=latest)\n[![GitHub latest commit](https://badgen.net/github/last-commit/JulieKeisler/dragon/)](https://github.com/JulieKeisler/dragon/commit/)\n![Maintainer](https://img.shields.io/badge/maintainer-J.Keisler-blue)\n\n\n**DRAGON**, for **DiRected Acyclic Graphs OptimizatioN**, is an open source Python package for the optimization of *Deep Neural Networks Hyperparameters and Architecture* [[1]](#1). \n**DRAGON** is not a *no code* package, but you can get familiar with it quickly thanks to the [Documentation](https://dragon-tutorial.readthedocs.io/en/latest/index.html). \n\nKey Features\n------------\n\n- A flexible seach space\n - The search space based on Directed Acyclic Graphs (DAGs) where the nodes can be any **PyTorch** layer (custom or not) and the edges are the connections between them. \n - The code to implement the DAGs-based search space was inspired by the [zellij](https://zellij.readthedocs.io/en/latest/) package developed for hyperparameters optimization. \n - **DRAGON** search space includes cell-based search spaces [4]_.\n \n- Flexible optimization algorithms\n - The search algorithms defined in **DRAGON** are based on search operators used to modify elements of the search space (e.g., mutations, neighborhoods, crossover), which can be used to develop new search algorithms.\n - Efficient algorithms are also implemented in **DRAGON** such as the Random Search, Evolutionary Algorithm, Mutant UCB, and HyperBand.\n\n- Applications to various tasks\n - The flexibility of **DRAGON** makes it usable for various applications.\n - For example: image classification, time series forecasting, electricity consumption forecasting, wind power forecasting or tabular data.\n\n- Easy parallelization over multiple GPUs\n - The distributed version requires a MPI library, such as [MPICH](https://www.mpich.org/) or [Open MPI](https://www.open-mpi.org/) and is based on [mpi4py](https://mpi4py.readthedocs.io/en/stable/intro.html#what-is-mpi).\n\nBasic Concepts\n------------\n\n- The **Search Space** is a mix-variable search space. Numerical, categorical and graph objects may be jointly optimized. Each object is associated with a **variable**, which defines what values an object can take.\n- Base on this search space, several **Search Operators** are defined, showing how the objects can be manipulate to find the neighboring values.\n\nInstall DRAGON\n--------------\n\n**Basic version**\n\nAfter cloning the git repository, install **DRAGON**, using:\n\n pip install -e dragon\n\n**Distributed version**\n\nIf you plan on using the distributed version, you have to install the mpi4py package:\n\n pip install mpi4py\n\n**Documentation**\n\nAdditional dependencies are required to run the documentation notebooks:\n\n pip install -e dragon[docs]\n\nDependencies\n------------\n\n* **Python** >=3.9\n* [numpy](https://numpy.org/)<2.0.0\n* [torch](https://pytorch.org/)\n* [graphviz](https://graphviz.org/)\n* [pandas](https://pandas.pydata.org/)\n* [mpi]: \n * [mpi4py](https://mpi4py.readthedocs.io/en/stable/)\n* [docs]: \n * [openml](https://www.openml.org/)\n * [sklearn](https://scikit-learn.org)\n * [optuna](https://optuna.org/)\n * [matplotlib](https://matplotlib.org/)\n * [skorch](https://skorch.readthedocs.io/en/stable/)\n\n## Contributors ##\n### Design\n* Julie Keisler: julie.keisler.rfo@gmail.com\n \n## References ##\n<a id=\"1\">[1]</a>\nKeisler, J., Talbi, E. G., Claudel, S., & Cabriel, G. (2024). An algorithmic framework for the optimization of deep neural networks architectures and hyperparameters. Journal of Machine Learning Research.\n\n\n",
"bugtrack_url": null,
"license": null,
"summary": "Implementation of the algorithmic framework from <An algorithmic framework for the optimization of deep neural networks architectures and hyperparameters>",
"version": "1.0",
"project_urls": {
"Bug Tracker": "https://github.com/JulieKeisler/DRAGON/issues",
"Homepage": "https://github.com/JulieKeisler/DRAGON"
},
"split_keywords": [
"deep learning",
" neural networks",
" automl",
" neural architecture search",
" hyperparameters optimization",
" metaheuristics"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "eb21e5552863e2117a8c3bbc02822bedd8ad6333fbc9c3e407cd54bc49f09b34",
"md5": "565987434d217ef14d6bb99dae5afb27",
"sha256": "441521a7ddbbd92995d8f1e391c20571528179b60e8ce69871ea822044c3f4a7"
},
"downloads": -1,
"filename": "dragon_autodl-1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "565987434d217ef14d6bb99dae5afb27",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 57178,
"upload_time": "2024-09-30T07:32:35",
"upload_time_iso_8601": "2024-09-30T07:32:35.653031Z",
"url": "https://files.pythonhosted.org/packages/eb/21/e5552863e2117a8c3bbc02822bedd8ad6333fbc9c3e407cd54bc49f09b34/dragon_autodl-1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0cd13e5df4a6644a7bc07c452519db3c7ccf3bc6f72a9f8e77ed0217b632ceb3",
"md5": "d538b5d24f8f377fe9104a192c022d01",
"sha256": "0254ed6a18aa1361662fdcea7d26ec9d4f6bc32cf74a56d2a254f68a1d62087d"
},
"downloads": -1,
"filename": "dragon_autodl-1.0.tar.gz",
"has_sig": false,
"md5_digest": "d538b5d24f8f377fe9104a192c022d01",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 49945,
"upload_time": "2024-09-30T07:32:37",
"upload_time_iso_8601": "2024-09-30T07:32:37.484655Z",
"url": "https://files.pythonhosted.org/packages/0c/d1/3e5df4a6644a7bc07c452519db3c7ccf3bc6f72a9f8e77ed0217b632ceb3/dragon_autodl-1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-30 07:32:37",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "JulieKeisler",
"github_project": "DRAGON",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "dragon-autodl"
}