EvoVis

EvoVis: Dashboard for Visualizing Evolutionary Neural Architecture Search Algorithms - Published in JOSS (2025)

https://github.com/ankilab/evovis

Science Score: 67.0%

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

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: joss.theoj.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.6%) to scientific vocabulary

Scientific Fields

Engineering Computer Science - 40% confidence
Last synced: 6 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: ankilab
  • License: apache-2.0
  • Language: Python
  • Default Branch: main
  • Size: 13.7 MB
Statistics
  • Stars: 3
  • Watchers: 1
  • Forks: 1
  • Open Issues: 0
  • Releases: 1
Created over 1 year ago · Last pushed 7 months ago
Metadata Files
Readme Contributing License Citation

README.md

DOI

EvoVis

EvoVis is a dashboard for visualizing Evolutionary Neural Architecture Search (ENAS) algorithms. ENAS is an optimization process that mimics biological evolution to automatically discover optimal neural network architectures for specific tasks. It starts with a population of randomly generated architectures and iteratively improving them through selection, crossover, and mutation.

EvoVis Overview

EvoVis offers a holistic view of the ENAS process. It provides insights into architectural evolution and performance optimization.The key features of EvoVis are the following:

  1. Hyperparameter Overview: Efficiently tune hyperparameters with an overview of settings.
  2. Gene Pool Graph: Visualize potential neural architecture topologies and connectivity patterns across generations.
  3. Family Tree Graph: Navigate the family tree of architectures, analyze performance metrics, and explore structures.
  4. Performance Plots: Monitor performance trends in real-time with evolutionary metrics.
  5. Data Structure Interface: Support for visualizing ENAS results from various frameworks and sources.

Contents

Getting Started

  1. EvoVis Cloning: Clone the EvoVis repository from GitHub and navigate to the project directory. (Note: This is a maintained fork of the original repository leadang42/EvoVis, which was transferred to ankilab for continued development.)

git clone https://github.com/leadang42/EvoVis.git cd EvoVis

  1. EvoVis Dependencies: Install the project's dependencies. This project was developed and tested using Python 3.11.3. While it may work with other versions of Python, compatibility with versions other than 3.11.3 is not guaranteed. pip3 install -r requirements.txt

  2. EvoVis Execution: Run EvoVis by specifying your run results directory path or use the sample enas run in the enasexamplerunresults directory. ````
    python3 EvoVis.py <run
    resultspath> python3 EvoVis.py ./enasexamplerunresults ````

  3. EvoVis Usage: Access EvoVis dashboard via the provided localhost and explore the hyperparameters, gene pool graph, family tree graph, and performance plots.

Compatible ENAS Algorithms

Run Results File Structure

  1. Gene Pool: DAG-structured and one searchable level (e.g. no hierarchical search spaces)
  2. Fitness: Multi-objective and single-objective fitness functions
  3. Selection: All strategies
  4. Crossover: One-point crossover strategy
  5. Mutation: All strategies

Data Structure Interface

In order to visualize ENAS runs with EvoVis, the ENAS algorithm must output a run results directory that follows a specific data structure. See the enas_example_run_results directory as an example. Here's an overview of the run results directory structure, followed by a detailed description of the contained files:

Run Results File Structure

config.json

The JSON file provides the hyperparameters of the ENAS algorithm and the results of measurements conducted on the neural architectures. Additionally, the hyperparameters and results are accompanied by additional settings to modify the EvoVis UI. The only mandatory hyperparameter is generations, which defines the number of iterations for an ENAS run. EvoVis relies on this parameter to monitor the ENAS run’s progress.

Settings for the hyperparameters in config.json | Key | Description | | --- | --- | | value | The value of the parameter. (Required) | | unit | The unit of measurement for the parameter. | | icon | The icon representing the parameter from Iconify. | | displayname | The human-readable name of the parameter. | | group | The category to which the parameter belongs that determines the grouping of the parameters. | | description | A brief description explaining the significance of the parameter. |

Settings for the results in config.json | Key | Description | | --- | --- | | displayname | The human-readable name of the result metric. | | unit | The unit of measurement for the result. | | run-result-plot | Indicates whether to include result in run results page. | | individual-info-plot | Indicates whether to include result in family tree page. | | pareto-optimlity-plot | Indicates whether to include result in the multi-objective mapping plot (fitness function objectives).| | individual-info-img | The image representing the result found in src/assets/icons directory. | | min-boundary | The minimum boundary for valid result values. | | max-boundary | The maximum boundary for valid result values. |

crossover_parents.csv

The CSV file logs crossover events between parent individuals, each represented as a tuple with their names and crossover points. It specifies the resulting new individuals of a newly evolving generation. From the logs the family tree graph is generated.

search_space.json

The JSON file serves as the blueprint for generating the gene pool DAG from which the initial population for ENAS is derived.

| Key | Description | | --- | --- | | gene_pool | Contains neural network layers categorized into groups based on functionality. Each layer is represented by a unique identifier layer and associated parameters. | | rule_set | Specifies which subsequent genes can follow a given gene. The rule set must contain a Start which determines the starting point within the gene sequence, influencing the accessibility of subsequent genes. | | rule_set_group | Specifies which subsequent group can follow a given group and therefore facilitates indirect connections between genes based on group associations. |

chromosome.json

The individual’s chromosome JSON file contains a sequence of genes from the gene_pool of the search_space.json that encodes the neural architecture.

results.json

The individual’s result JSON file contains the measurements and fitness of an individual.

| Key | Description | | --- | --- | | fitness | Stores the fitness from the training process. (Required) | | metric | Stores metrics from the training process. These metrics correspond to the measurements specified in the config.json file. | | error | Indicates whether the individual was successfully trained. If set to true, the individual’s metrics will not be included in the evaluation analysis of the ENAS run. |

Project Code Organization

Project Organization

License

EvoVis is licensed under the Apache License. See LICENSE file for details.

Contact

For any inquiries or support, please contact lea.van.anh.dang@gmail.com.


EvoVis aims to visualize ENAS processes to provide researchers and practitioners with a comprehensive tool for understanding and optimizing neural architectures.

Owner

  • Name: anki lab
  • Login: ankilab
  • Kind: organization
  • Location: Germany

Citation (CITATION.cff)

cff-version: 1.1.0
message: "If you use this software, please cite it as below."
title: "EvoVis: Dashboard for Visualizing Evolutionary Neural Architecture Search Algorithms"
version: "v1.0.0"
date-released: 2024-07-17
keywords:
  - Python
  - Evolutionary neural architecture search algorithm
  - Neural architecture search algorithm
  - Optimization algorithm
  - Deep learning
authors:
  - family-names: Dang
    given-names: Lea
    orcid: https://orcid.org/0009-0005-6056-0725
    affiliation: Friedrich-Alexander-Universität Erlangen-Nürnberg, Germany
  - family-names: Groh
    given-names: René
    orcid: https://orcid.org/0000-0002-3405-1311
    affiliation: Friedrich-Alexander-Universität Erlangen-Nürnberg, Germany
  - family-names: Kist
    given-names: Andreas M.
    orcid: https://orcid.org/0000-0003-3643-7776
    affiliation: Friedrich-Alexander-Universität Erlangen-Nürnberg, Germany
repository-code: https://github.com/ankilab/EvoVis

GitHub Events

Total
  • Issues event: 7
  • Watch event: 2
  • Issue comment event: 4
  • Member event: 2
  • Push event: 24
  • Pull request event: 1
  • Fork event: 1
  • Create event: 2
Last Year
  • Issues event: 7
  • Watch event: 2
  • Issue comment event: 4
  • Member event: 2
  • Push event: 24
  • Pull request event: 1
  • Fork event: 1
  • Create event: 2

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 4
  • Total pull requests: 2
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 2 days
  • Total issue authors: 1
  • Total pull request authors: 1
  • Average comments per issue: 1.25
  • Average comments per pull request: 0.0
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 4
  • Pull requests: 2
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 2 days
  • Issue authors: 1
  • Pull request authors: 1
  • Average comments per issue: 1.25
  • Average comments per pull request: 0.0
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • B3J4y (4)
Pull Request Authors
  • jbytecode (2)
Top Labels
Issue Labels
Pull Request Labels

Dependencies

requirements.txt pypi
  • dash ==2.10.2
  • dash-bootstrap-components ==1.5.0
  • dash-cytoscape ==0.3.0
  • dash-iconify ==0.1.2
  • dash-mantine-components ==0.12.0
  • matplotlib ==3.7.1
  • numpy ==1.24.2
  • pandas ==2.0.1
  • plotly ==5.17.0
  • plotly-express ==0.4.1
  • python-dotenv ==1.0.0
.github/workflows/draft-pdf.yaml actions
  • actions/checkout v4 composite
  • actions/upload-artifact v4 composite
  • openjournals/openjournals-draft-action master composite