The UniNAS framework: combining modules in arbitrarily complex
  configurations with argument trees
  Designing code to be simplistic yet to offer choice is a tightrope walk.
Additional modules such as optimizers and data sets make a framework useful to
a broader audience, but the added complexity quickly becomes a problem.
Framework parameters may apply only to some modules but not others, be mutually
exclusive or depend on each other, often in unclear ways. Even so, many
frameworks are limited to a few specific use cases. This paper presents the
underlying concept of UniNAS, a framework designed to incorporate a variety of
Neural Architecture Search approaches. Since they differ in the number of
optimizers and networks, hyper-parameter optimization, network designs,
candidate operations, and more, a traditional approach can not solve the task.
Instead, every module defines its own hyper-parameters and a local tree
structure of module requirements. A configuration file specifies which modules
are used, their used parameters, and which other modules they use in turn This
concept of argument trees enables combining and reusing modules in complex
configurations while avoiding many problems mentioned above. Argument trees can
also be configured from a graphical user interface so that designing and
changing experiments becomes possible without writing a single line of code.
UniNAS is publicly available at https://github.com/cogsys-tuebingen/uninas
