DRAGON#

DRAGON, for DiRected Acyclic Graphs OptimizatioN, is an open source Python package for the optimization of Deep Neural Networks Hyperparameters and Architecture [1]. DRAGON is not a no code package, but you can get familiar with it quickly thanks to the Quickstart tutorial.

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 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 [1], Mutant UCB [5], and HyperBand [6].

  • Applications to various tasks
  • Easy parallelization over multiple GPUs
    • The distributed version requires a MPI library, such as MPICH or Open MPI and is based on mpi4py.

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 dragon-autodl==1.0

Distributed version#

If you plan on using the distributed version, you have to install the mpi4py package:

pip install mpi4py

Dependencies#

Contributors#

References#