Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ATRLIF neuron model #846

Merged
merged 7 commits into from
Apr 25, 2024
Merged

ATRLIF neuron model #846

merged 7 commits into from
Apr 25, 2024

Conversation

jlubo
Copy link
Contributor

@jlubo jlubo commented Mar 27, 2024

This adds to the Lava process library a Leaky Integrate-and-Fire neuron with adaptive threshold and adaptive refractoriness (ATRLIF neuron). Both a floating- and a fixed-point CPU process model implementation are contained.

I also have a working NC process model, based on microcode from Lava-DL, which I kindly received from @bamsumit. For that, I'd like to know how to proceed to integrate the model into Lava-Loihi.

As a side note, the neuron model has already been integrated into Brian2Lava.

Pull request checklist

Your PR fulfills the following requirements:

  • Issue created that explains the change and why it's needed
  • Tests are part of the PR (for bug fixes / features)
  • Docs reviewed and added / updated if needed (for bug fixes / features)
  • PR conforms to Coding Conventions
  • PR applys BSD 3-clause or LGPL2.1+ Licenses to all code files
  • Lint (flakeheaven lint src/lava tests/) and (bandit -r src/lava/.) pass locally
  • Build tests (pytest) passes locally (except for tutorial02_processes.ipynb, for unknown reasons)

Pull request type

  • Bugfix
  • Feature
  • Code style update (formatting, renaming)
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • Documentation changes
  • Other (please describe):

What is the current behavior?

--

What is the new behavior?

  • ATRLIF neurons can be used within Lava. Users can decide between floating- and fixed-point CPU implementation.

Does this introduce a breaking change?

  • Yes
  • No

Supplemental information

--

jlubo and others added 2 commits March 27, 2024 19:41
@jlubo jlubo marked this pull request as ready for review March 28, 2024 16:11
Copy link
Contributor

@PhilippPlank PhilippPlank left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good. Thanks for the contribution.

Just some minor changes to be open. I will push for a second reviewer to look over the PR in the next days.

tests/lava/proc/atrlif/test_models.py Outdated Show resolved Hide resolved
tests/lava/proc/atrlif/test_models.py Outdated Show resolved Hide resolved
tests/lava/proc/atrlif/test_models.py Outdated Show resolved Hide resolved
src/lava/proc/atrlif/models.py Outdated Show resolved Hide resolved
Copy link
Contributor

@weidel-p weidel-p left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have nothing to add, everything looks nice. There are tests and even a tutorial. Thanks.

@jlubo
Copy link
Contributor Author

jlubo commented Apr 24, 2024

@PhilippPlank @weidel-p thanks for reviewing. I've pushed the adjustments you asked for, so I guess it can be merged now.

Regarding the NC process model, do you want to integrate this into Lava-Loihi? How can we proceed for that?

@PhilippPlank
Copy link
Contributor

@jlubo Could you please update the branch with main? I had to fix a CI problem and this is now blocking this PR. Thanks!

@PhilippPlank PhilippPlank added the 1-feature New feature request label Apr 24, 2024
@PhilippPlank PhilippPlank linked an issue Apr 24, 2024 that may be closed by this pull request
@PhilippPlank PhilippPlank merged commit fae3ea1 into lava-nc:main Apr 25, 2024
6 checks passed
srrisbud added a commit that referenced this pull request May 16, 2024
* Explicitly keep track of all Processes in the Executable to make sure all Processes are assigned the Runtime

Signed-off-by: Risbud, Sumedh <[email protected]>

* A utility to measure the size of a python object recursively. Useful for example, to measure the size of NxBoard object after compilation

Signed-off-by: Risbud, Sumedh <[email protected]>

* Removed the utility to estimate Python object size

Signed-off-by: Risbud, Sumedh <[email protected]>

* Fixed Runtime unittest to accommodate passing an explicit ProcessList to the Executable

Signed-off-by: Risbud, Sumedh <[email protected]>

* Removed unused import

Signed-off-by: Risbud, Sumedh <[email protected]>

* LearningDense bit-accurate (#812)

* minor change in dependency computation

* updating stochastic round type hint

* small fix in clip_weights

* progress in making tests pass

* fixing Sparse init

* trying tests

* adapting init method of LearningDense Process

---------

Co-authored-by: PhilippPlank <[email protected]>

* Bump fonttools from 4.41.1 to 4.43.0 (#824)

Bumps [fonttools](https://github.com/fonttools/fonttools) from 4.41.1 to 4.43.0.
- [Release notes](https://github.com/fonttools/fonttools/releases)
- [Changelog](https://github.com/fonttools/fonttools/blob/main/NEWS.rst)
- [Commits](fonttools/fonttools@4.41.1...4.43.0)

---
updated-dependencies:
- dependency-name: fonttools
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump gitpython from 3.1.37 to 3.1.41 (#825)

Bumps [gitpython](https://github.com/gitpython-developers/GitPython) from 3.1.37 to 3.1.41.
- [Release notes](https://github.com/gitpython-developers/GitPython/releases)
- [Changelog](https://github.com/gitpython-developers/GitPython/blob/main/CHANGES)
- [Commits](gitpython-developers/GitPython@3.1.37...3.1.41)

---
updated-dependencies:
- dependency-name: gitpython
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* SigmaS4Delta Neuronmodel and Layer with Unittests (#830)

* first wokring version

* S4D model cleaned

* update license

* fix imports

* linting

* incorporate reviews

* update docstring

* Bump pillow from 10.0.1 to 10.2.0 (#832)

Bumps [pillow](https://github.com/python-pillow/Pillow) from 10.0.1 to 10.2.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](python-pillow/Pillow@10.0.1...10.2.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: PhilippPlank <[email protected]>

* [QUBO] Solution readout via spikeIO for multi-chip support (#820)

* 32bit receiver

* linting

---------

Co-authored-by: Risbud, Sumedh <[email protected]>

* Bump cryptography from 41.0.6 to 42.0.0 (#834)

Bumps [cryptography](https://github.com/pyca/cryptography) from 41.0.6 to 42.0.0.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](pyca/cryptography@41.0.6...42.0.0)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump cryptography from 42.0.0 to 42.0.2 (#836)

Bumps [cryptography](https://github.com/pyca/cryptography) from 42.0.0 to 42.0.2.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](pyca/cryptography@42.0.0...42.0.2)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump cryptography from 42.0.2 to 42.0.4 (#837)

Bumps [cryptography](https://github.com/pyca/cryptography) from 42.0.2 to 42.0.4.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](pyca/cryptography@42.0.2...42.0.4)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Spiker with 32bit

* Alternative to Injector/Extractor Processes (#835)

* prototype implementing injector/extractor function, not wrapped in a Process

* modified injector and extractor classes

* fixed linting

---------

Co-authored-by: PhilippPlank <[email protected]>
Co-authored-by: Philipp Plank <[email protected]>

* fix security issues

* Fix workflows (#844)

* prototype implementing injector/extractor function, not wrapped in a Process

* modified injector and extractor classes

* fixed linting

* fix workflows

---------

Co-authored-by: gkarray <[email protected]>

* Bump pillow from 10.2.0 to 10.3.0 (#847)

Bumps [pillow](https://github.com/python-pillow/Pillow) from 10.2.0 to 10.3.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](python-pillow/Pillow@10.2.0...10.3.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump idna from 3.6 to 3.7 (#848)

Bumps [idna](https://github.com/kjd/idna) from 3.6 to 3.7.
- [Release notes](https://github.com/kjd/idna/releases)
- [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.rst)
- [Commits](kjd/idna@v3.6...v3.7)

---
updated-dependencies:
- dependency-name: idna
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Update ci.yml (#853)

* ATRLIF neuron model (#846)

* added process and CPU process models of ATRLIF neuron; added a Jupyter notebook to demonstrate the properties of the ATRLIF neuron

* testing of the tutorial

* tests for process and model added; copyright notes added; cleanup

* codacy-related fixed

* comment formatting and copyright notices adjusted

* Add the models and process of conv_in_time in src/lava/proc/conv_in_time (#833)

* add the models and process of conv_in_time in src/lava/proc/conv_in_time

* remove unused library

* remove Trailing whitespace

* add unittest for conv in time and related pytorch ground truth

* add fixed_pt version of conv in time

* change input to spike_input

* add from lava.proc.conv import utils

* remove unwanted comments

* fixed some linting errors

* Start all comments with upper case character & change the year for all copyright headers to 2024 for new files

* remove whitespace

* continuation line under-indented

* Trailing whitespace

* shorten variables names

---------

Co-authored-by: bamsumit <[email protected]>
Co-authored-by: PhilippPlank <[email protected]>

* Fixed/updated poetry.lock to match the TOML file

Signed-off-by: Risbud, Sumedh <[email protected]>

* Delinting

Signed-off-by: Risbud, Sumedh <[email protected]>

* Fixed a unittest by adding .name attribute to a Mock object

Signed-off-by: Risbud, Sumedh <[email protected]>

---------

Signed-off-by: Risbud, Sumedh <[email protected]>
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Ghassen Karray <[email protected]>
Co-authored-by: PhilippPlank <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: smm-ncl <[email protected]>
Co-authored-by: Philipp Stratmann <[email protected]>
Co-authored-by: Philipp Plank <[email protected]>
Co-authored-by: gkarray <[email protected]>
Co-authored-by: Jannik Luboeinski <[email protected]>
Co-authored-by: Zeyu Liu <[email protected]>
Co-authored-by: bamsumit <[email protected]>
monkin77 pushed a commit to monkin77/thesis-lava that referenced this pull request Jul 12, 2024
* added process and CPU process models of ATRLIF neuron; added a Jupyter notebook to demonstrate the properties of the ATRLIF neuron

* testing of the tutorial

* tests for process and model added; copyright notes added; cleanup

* codacy-related fixed

* comment formatting and copyright notices adjusted
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1-feature New feature request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Neurons with firing adaptation
3 participants