Skip to main content

jaxsnn is an event-based approach to machine-learning-inspired training and simulation of SNNs, including support for neuromorphic backends (BrainScaleS-2).

Project description

jaxsnn

jaxsnn is an event-based approach to machine-learning-inspired training and simulation of SNNs, including support for neuromorphic backends (BrainScaleS-2). We build upon jax, a Python library providing autograd and XLA functionality for high-performance machine learning research.

Building the Software

The software builds upon existing libraries, such as jax, optax, and tree-math. When using the neuromorphic BrainScaleS-2 backend, the software stack of the platform is required.

We provide a container image (based on the Singularity format) including all build-time and runtime dependencies. Feel free to download the most recent version from here.

For all following steps, we assume that the most recent Singularity container is located at /containers/stable/latest.

Github-based Build

To build this project from public resources, adhere to the following guide:

# 1) Most of the following steps will be executed within a singularity container
#    To keep the steps clutter-free, we start by defining an alias
shopt -s expand_aliases
alias c="singularity exec --app dls /containers/stable/latest"

# 2) Prepare a fresh workspace and change directory into it
mkdir workspace && cd workspace

# 3) Fetch a current copy of the symwaf2ic build tool
git clone https://github.com/electronicvisions/waf -b symwaf2ic symwaf2ic

# 4) Build symwaf2ic
c make -C symwaf2ic
ln -s symwaf2ic/waf

# 5) Setup your workspace and clone all dependencies (--clone-depth=1 to skip history)
c ./waf setup --repo-db-url=https://github.com/electronicvisions/projects --project=jaxsnn

# 6) Load PPU cross-compiler toolchain (or build https://github.com/electronicvisions/oppulance)
module load ppu-toolchain

# 7) Build the project
#    Adjust -j1 to your own needs, beware that high parallelism will increase memory consumption!
c ./waf configure
c ./waf build -j1

# 8) Install the project to ./bin and ./lib
c ./waf install

# 9) If you run programs outside waf, you'll need to add ./lib and ./bin to your path specifications
export SINGULARITYENV_PREPEND_PATH=`pwd`/bin:$SINGULARITYENV_PREPEND_PATH
export SINGULARITYENV_LD_LIBRARY_PATH=`pwd`/lib:$SINGULARITYENV_LD_LIBRARY_PATH
export PYTHONPATH=`pwd`/lib:$PYTHONPATH

First Steps

Check out our examples:

python -m jaxsnn.event.tasks.yinyang
python -m jaxsnn.event.tasks.yinyang_event_prop

Acknowledgements

The software in this repository has been developed by staff and students of Heidelberg University as part of the research carried out by the Electronic Vision(s) group at the Kirchhoff-Institute for Physics.

This work has received funding from the EC Horizon 2020 Framework Programme under grant agreements 785907 (HBP SGA2) and 945539 (HBP SGA3), the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) under Germany's Excellence Strategy EXC 2181/1-390900948 (the Heidelberg STRUCTURES Excellence Cluster), the German Federal Ministry of Education and Research under grant number 16ES1127 as part of the Pilotinnovationswettbewerb Energieeffizientes KI-System, the Helmholtz Association Initiative and Networking Fund [Advanced Computing Architectures (ACA)] under Project SO-092, as well as from the Manfred Stärk Foundation, and the Lautenschläger-Forschungspreis 2018 for Karlheinz Meier.

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

jaxsnn-0.0.0.tar.gz (3.4 kB view details)

Uploaded Source

Built Distribution

jaxsnn-0.0.0-py3-none-any.whl (3.4 kB view details)

Uploaded Python 3

File details

Details for the file jaxsnn-0.0.0.tar.gz.

File metadata

  • Download URL: jaxsnn-0.0.0.tar.gz
  • Upload date:
  • Size: 3.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.2

File hashes

Hashes for jaxsnn-0.0.0.tar.gz
Algorithm Hash digest
SHA256 fce9da803daa08188c0466125a68b950abb09646b2cd88f3801e789ffb57180d
MD5 a1d33f58964ee09ebce81356cd299f1b
BLAKE2b-256 344fc041542bce1995b725089b392eaa844e861ca3610369f0971477bd9c3cef

See more details on using hashes here.

File details

Details for the file jaxsnn-0.0.0-py3-none-any.whl.

File metadata

  • Download URL: jaxsnn-0.0.0-py3-none-any.whl
  • Upload date:
  • Size: 3.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.2

File hashes

Hashes for jaxsnn-0.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 76fb9bbe43e3aca73c377e836d7716395df7acb35c7ee43823719b1839403db3
MD5 5e79f7b36dd71d1b8d2604afaa51a92c
BLAKE2b-256 86c31d5f68c7372a01734ffc65561f7d9a7b6b84a70b5651779494cf07a00c40

See more details on using hashes here.

Supported by

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