Skip to main content

Collaborative, Fair, and Representative Benchmarks for Neuromorphic Computing

Project description

https://github.com/NeuroBench/neurobench/blob/main/docs/_static/neurobench_banner_light.jpeg?raw=true

Introduction

coverage pypi docs downloads

A harness for running evaluations on NeuroBench algorithm benchmarks.

NeuroBench is a community-driven project, and we welcome further development from the community. If you are interested in developing extensions to features, programming frameworks, or metrics and tasks, please see the Contributing Guidelines.

NeuroBench Structure

NeuroBench contains the following sections:

Section

Description

neurobench.benchmarks

Neurobench benchmarks, including workload metrics and static metrics

neurobench.datasets

Neurobench benchmark datasets

neurobench.models

Neurobench framework for Torch and SNNTorch models

neurobench.preprocessing

Pre-processing of data, conversion to spikes

neurobench.postprocessing

Post-processors take the spiking output from the models and provide several methods of combining them

Installation

Install from PyPI:

pip install neurobench

Benchmarks

The following benchmarks are currently available:

v1.0 benchmarks

  • Keyword Few-shot Class-incremental Learning (FSCIL)

  • Event Camera Object Detection

  • Non-human Primate (NHP) Motor Prediction

  • Chaotic Function Prediction

Leaderboards

Proposed solutions for the benchmark tasks are evaluated on a set of metrics and compared to the performance of other solutions.

The leaderboards for these benchmarks can be found here.

Additional benchmarks

  • DVS Gesture Recognition

  • Google Speech Commands (GSC) Classification

  • Neuromorphic Human Activity Recognition (HAR)

Getting started

Example benchmark scripts can be found under the examples folder. (https://github.com/NeuroBench/neurobench/tree/main/examples/)

In general, the design flow for using the framework is as follows:

  1. Train a network using the train split from a particular dataset.

  2. Wrap the network in a NeuroBenchModel.

  3. Pass the model, evaluation split dataloader, pre-/post-processors, and a list of metrics to the Benchmark and run().

Documentation for the framework interfaces can found in the API Overview.

Development

If you clone the repo directly for development, poetry can be used to maintain a virtualenv consistent with a deployment environment. In the root directory run:

pip install poetry
poetry install

Poetry requires python >=3.9. Installation should not take more than a few minutes.

End-to-end examples can be run from the poetry environment. As a demo, try the Google Speech Commands keyword classification benchmark:

# ANN Benchmark Example
poetry run python examples/gsc/benchmark_ann.py

# Expected results:
# {'Footprint': 109228, 'ConnectionSparsity': 0.0,
# 'ClassificationAccuracy': 0.8653339412687909, 'ActivationSparsity': 0.3854464619019532,
# 'SynapticOperations': {'Effective_MACs': 1728071.1701953658, 'Effective_ACs': 0.0, 'Dense': 1880256.0}}


# SNN Benchmark Example
poetry run python examples/gsc/benchmark_snn.py

# Expected results:
# {'Footprint': 583900, 'ConnectionSparsity': 0.0,
# 'ClassificationAccuracy': 0.85633802969095, 'ActivationSparsity': 0.9668664144456199,
# 'SynapticOperations': {'Effective_MACs': 0.0, 'Effective_ACs': 3289834.3206724217, 'Dense': 29030400.0}}

These demos should download the dataset, then run in a couple minutes. Other baseline result scripts and notebook tutorials are available in the examples folder.

Developers

NeuroBench is a collaboration between industry and academic engineers and researchers. This framework is currently maintained by Jason Yik, Noah Pacik-Nelson, Korneel Van den Berghe and Benedetto Leto and there have been technical contributions from many others. A non-exhaustive list includes Gregor Lenz, Denis Kleyko, Younes Bouhadjar, Paul Hueber, Vincent Sun, Biyan Zhou, George Vathakkattil Joseph, Douwe den Blanken, Maxime Fabre, Shenqi Wang, Guangzhi Tang, Anurag Kumar Mishra, Soikat Hasan Ahmed, Aurora Micheli, Tao Sun.

Contributing

If you are interested in helping to build this framework, please see the Contribution Guidelines.

Citation

If you use this framework in your research, please cite the following preprint article:

@misc{yik2024neurobench,
   title={NeuroBench: A Framework for Benchmarking Neuromorphic Computing Algorithms and Systems},
   author={Jason Yik and Korneel Van den Berghe and Douwe den Blanken and Younes Bouhadjar and Maxime Fabre and Paul Hueber and Denis Kleyko and Noah Pacik-Nelson and Pao-Sheng Vincent Sun and Guangzhi Tang and Shenqi Wang and Biyan Zhou and Soikat Hasan Ahmed and George Vathakkattil Joseph and Benedetto Leto and Aurora Micheli and Anurag Kumar Mishra and Gregor Lenz and Tao Sun and Zergham Ahmed and Mahmoud Akl and Brian Anderson and Andreas G. Andreou and Chiara Bartolozzi and Arindam Basu and Petrut Bogdan and Sander Bohte and Sonia Buckley and Gert Cauwenberghs and Elisabetta Chicca and Federico Corradi and Guido de Croon and Andreea Danielescu and Anurag Daram and Mike Davies and Yigit Demirag and Jason Eshraghian and Tobias Fischer and Jeremy Forest and Vittorio Fra and Steve Furber and P. Michael Furlong and William Gilpin and Aditya Gilra and Hector A. Gonzalez and Giacomo Indiveri and Siddharth Joshi and Vedant Karia and Lyes Khacef and James C. Knight and Laura Kriener and Rajkumar Kubendran and Dhireesha Kudithipudi and Yao-Hong Liu and Shih-Chii Liu and Haoyuan Ma and Rajit Manohar and Josep Maria Margarit-Taulé and Christian Mayr and Konstantinos Michmizos and Dylan Muir and Emre Neftci and Thomas Nowotny and Fabrizio Ottati and Ayca Ozcelikkale and Priyadarshini Panda and Jongkil Park and Melika Payvand and Christian Pehle and Mihai A. Petrovici and Alessandro Pierro and Christoph Posch and Alpha Renner and Yulia Sandamirskaya and Clemens JS Schaefer and André van Schaik and Johannes Schemmel and Samuel Schmidgall and Catherine Schuman and Jae-sun Seo and Sadique Sheik and Sumit Bam Shrestha and Manolis Sifalakis and Amos Sironi and Matthew Stewart and Kenneth Stewart and Terrence C. Stewart and Philipp Stratmann and Jonathan Timcheck and Nergis Tömen and Gianvito Urgese and Marian Verhelst and Craig M. Vineyard and Bernhard Vogginger and Amirreza Yousefzadeh and Fatima Tuz Zohora and Charlotte Frenkel and Vijay Janapa Reddi},
   year={2024},
   eprint={2304.04640},
   archivePrefix={arXiv},
   primaryClass={cs.AI}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

neurobench-2.2.0.tar.gz (53.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

neurobench-2.2.0-py3-none-any.whl (74.8 kB view details)

Uploaded Python 3

File details

Details for the file neurobench-2.2.0.tar.gz.

File metadata

  • Download URL: neurobench-2.2.0.tar.gz
  • Upload date:
  • Size: 53.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.11.14 Linux/6.11.0-1018-azure

File hashes

Hashes for neurobench-2.2.0.tar.gz
Algorithm Hash digest
SHA256 106dd98987ab155f7afea7662e5c36f2a9e4b9a2a48084dc1c3ca9d86e599c71
MD5 c402770eebaf6d272ad68dfa502616f0
BLAKE2b-256 b21182d6427a79347ceec83b53012c73394dde8c0e0ecde263d03ed79fd85f64

See more details on using hashes here.

File details

Details for the file neurobench-2.2.0-py3-none-any.whl.

File metadata

  • Download URL: neurobench-2.2.0-py3-none-any.whl
  • Upload date:
  • Size: 74.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.11.14 Linux/6.11.0-1018-azure

File hashes

Hashes for neurobench-2.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4bdd75cbf439c7ff30e215e81e5e6999c50958c88f4218db509fa3015603765a
MD5 aff437c287983324569aba324709c83a
BLAKE2b-256 9ac1ec2a028f5903d25e72eb5314de0976a7595bbddbfd1ff8354be47f1802ba

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page