Recent Releases of norse
norse - v1.1 Support for NIR and torch.compile
This release features a lot of quality-of-life improvements. Most notably, we started testing for torch.compile support, which gives us significant speedup. The improvements gained by moving to torch.compile meant that we could safely remove the C++ code such that Norse now is a Python-only module. That means the installations should be significantly faster.
We also added initialization methods for spatial and temporal receptive fields, added support for NIR, cleaned up the docs, restructured the imports, removed unnecessary (and slow) try-catch clauses, and cleaned up dependencies.
New state tuples
We also added tentative support for a new StateTuple implementation based on PyTorch's pytrees, which makes it easier to operate on parameters. This allows us to cast parameters to devices or
python
p = LIFParameters(...) # Create a parameter
p.to("cuda:0") # Cast the parameters to a device
p.float() # Cast the parameters to floats.
Note that this is currently only implemented for LIFParameters and LIFBoxParameters. Let us know how it works!
What's Changed
- Feature li box by @Jegp in https://github.com/norse/norse/pull/367
- Feature rf by @Jegp in https://github.com/norse/norse/pull/368
- Added pytree state and support for torch.compile by @Jegp in https://github.com/norse/norse/pull/349
- Adds NIR export by @Jegp in https://github.com/norse/norse/pull/371
- Constrain pytorch-lightning version in example tasks README by @4iar in https://github.com/norse/norse/pull/372
- Feature rf by @Jegp in https://github.com/norse/norse/pull/376
- Feature docs by @Jegp in https://github.com/norse/norse/pull/380
- Feature nir by @Jegp in https://github.com/norse/norse/pull/379
- Fix typos by @omahs in https://github.com/norse/norse/pull/385
- Added tests for torch.compile by @Jegp in https://github.com/norse/norse/pull/386
- Improves spatial receptive field API by @Jegp in https://github.com/norse/norse/pull/387
- Remove broken workflows by @Jegp in https://github.com/norse/norse/pull/391
New Contributors
- @4iar made their first contribution in https://github.com/norse/norse/pull/372
- @omahs made their first contribution in https://github.com/norse/norse/pull/385
Full Changelog: https://github.com/norse/norse/compare/v1.0.0...v1.1.0
- Python
Published by Jegp almost 2 years ago
norse - v1.0.0 - First Stable Release
This is the first stable release of Norse. We feel like that after close to almost 4 years of development it is time to take this step. The API has stabilised somewhat and while we anticipate some changes in the future, we will try to do them in ways that are easy to accommodate for users. Since the last release we mostly focussed on bugs and worked on performance. We also got some nice additions
- Feature spikes to times decoder (#321): A differentiable way of encoding spikes to times.
- Feature no delay (#326): We changed the integration order of most models
- Feature AdEx refractory (#291): Adaptive Exponential Fire Neuron with refractory state
We also worked on improvements to documentation, our continuous integration and build tooling.
- Python
Published by cpehle about 3 years ago
norse - v0.0.7 Neuron models and stability improvements
This release includes prototypical sparse and adjoint equations, neuron models, utilities, and various stability fixes.
Specifically, we included
* Izhikevich and IAF neuron models (thanks to @adelpierre)
* Discrete adjoint sensitivity and sparse equations for LIF dynamics
* Efficient convolutions in time (LConv2d)
* Triangular surrogate gradients (thanks to @Huizerd)
* Preliminary plotting primitives
* Usage improvements for tensor datatypes (from, for instance, Tonic) and parameter settings for JIT optimized code
* Increased code coverage
* Documentation improvements
* Stability improvements around C++ code, sequential state models, and tasks
* Numerous bug fixes, e.g. around recurrent autapses
* Nix support
- Python
Published by Jegp over 4 years ago
norse - Sparse and adjoint code
RC3 for the sparse and adjoint code. Aims to resolve builds for Windows and Linux
- Python
Published by Jegp over 4 years ago
norse - Sparse and adjoint code
RC2 for the sparse and adjoint code. Aims to resolve builds for Windows and Linux
- Python
Published by Jegp over 4 years ago
norse - Sparse and adjoint code
This release candidate drafts code for sparse activations and adjoint-based optimizations as described in https://arxiv.org/abs/2009.08378
- Python
Published by Jegp over 4 years ago
norse - Streamlined Module API
This release features our shiny and new module API, it unifies all Spiking Neuron modules under one common base class thereby eliminating redundant code.
From a user perspective it also means that the API is now consistent across all Neuron types.
- Python
Published by cpehle about 5 years ago
norse - Optimizations, deep-learning models, and plasticity
This release brings numerous improvements in terms of speed, usability, specializations, documentation and more. In general, we tried to make Norse more user-friendly and applicable for both the die-hard deep-learning expert and neuroscience enthusiasts new to Python. Specifically, this release includes:
* Compatibility with the PyTorch Lightning library, which means that Norse now scales to multiple GPUs and even supercomputing clusters with SLURM. As an example, see our MNIST task.
* The SequentialState module, which works similar to PyTorch's Sequential layers in that it allows for seamless composition of PyTorch and Norse modules. Together with the Lift module, this is an important step towards powerful and simple tools for developing spiking neural networks.
* As Norse becomes faster to work with, it is also easier to implement more complex models. Norse now features spiking convolutions, MobileNet and VGG networks which can be used out-of-the box. See the norse.torch.models package for more information.
* Improved performance. We implemented the LIF neuron equations and the SuperSpike synthetic gradient in C++. All in all, Norse is roughly twice as fast as it was before.
* Improved documentation. The main pages and the introductory pages were edited and cleaned up. This is an area we will be improving much more in the future.
* Various bugfixes. Norse is now more stable and useable than before.
As always, we welcome feedback and are looking forward to hearing how you are using Norse! Happy hacking :partying_face:
- Python
Published by Jegp about 5 years ago
norse - STDP, neuron models, and PyTorch compatibility
This release contains a number of functionality and model additions, as well as improved PyTorch compatibility through the Lift module. Most notably, we
- Added spike-time plasticity
- Added regularization for spiking cells/layers
- Added a layer for Lifting regular PyTorch layers to work with temporal data
- Improved usability by
- cleaning up neuron model parameters and
- inferring initial neuron state
- inferring device parameter
- Python
Published by cpehle over 5 years ago
norse - Models, performance testing and logo
This release includes biologically plausible neuron parameters, performance testing (including comparison to like-minded frameworks), and a new shiny logo!
- Python
Published by Jegp over 5 years ago
norse - Stability changes
This release includes a number of stability changes and documentation additions. Most significantly, some inconsistencies in neuron model flags have been fixed, and the MNIST, CIFAR, and cartpole tasks, have been tested on both CPU and GPU backends.
- Python
Published by Jegp about 6 years ago