A deep learning framework for SNNs built on PyTorch.
Project description
SpikingJelly
中文 | English
Contents
- Why SpikingJelly
- Installation
- Quick Start
- Core Capabilities
- Project Status and Version Notes
- Acknowledgement
- Contributing
- Citation
Why SpikingJelly
SpikingJelly is a PyTorch-native framework for spiking neural networks (SNNs), with support for large-scale SNN training and inference.
- Beginner-friendly API
- ANN2SNN conversion
- Event-based datasets
- Acceleration backends:
torch,cupy,triton - Memory-efficient training, distributed execution, precision control
- Hardware deployment and framework exchange
Installation
SpikingJelly is built on PyTorch. Install PyTorch, torchvision, and torchaudio first.
- Python
>=3.11 - PyTorch
>=2.6.0(tested with2.7.1)
Install the latest stable PyPI release:
pip install spikingjelly
Install V2 pre-releases from PyPI when they are published:
pip install --pre spikingjelly
Install the latest development version from source:
git clone https://github.com/fangwei123456/spikingjelly.git
cd spikingjelly
pip install .
Optional dependencies:
| Feature | Install |
|---|---|
| CuPy backend | pip install cupy-cuda12x or pip install cupy-cuda11x |
| Triton backend | pip install triton==3.3.1 |
| NIR exchange | pip install nir nirtorch |
| Lightning integration | pip install lightning jsonargparse[signatures] |
Quick Start
Define an SNN in the same way that you would define any PyTorch model:
from torch import nn
from spikingjelly.activation_based import layer, neuron, surrogate
net = nn.Sequential(
layer.Flatten(),
layer.Linear(28 * 28, 10, bias=False),
neuron.LIFNode(tau=2.0, surrogate_function=surrogate.ATan())
)
Next steps:
Core Capabilities
| Area | What SpikingJelly provides |
|---|---|
| SNN modeling | Activation-based SNN components: spiking neurons, surrogate gradients, stateful and stateless modules. Predefined SNN models. |
| Training workflows | PyTorch-native training flows, online-learning utilities, and ANN2SNN conversion |
| Performance | torch, cupy, and triton backends, FlexSN for customized neuron kernels, and mixed-precision training utilities (e.g., fp8) |
| Scaling | Memory-efficient training, and distributed training |
| Datasets | Neuromorphic datasets, and data preprocessing pipelines |
| Analysis | FLOPs / SynOps / memory-access profiling, and inference energy estimation |
| Interchange and deployment | NIR, Lava, and Lynxi-oriented exchange interfaces for neuromorphic workflows |
Backend Performance
Spiking neuron models run on torch, cupy, or triton backends. The backend is set at neuron creation and can be changed later. All backends are compatible with torch.compile.
Below: execution time comparison for multi-step LIF neurons on torch vs cupy. Triton is covered in the backend tutorials.
Large-Scale SNN Systems
For large-scale SNN systems, SpikingJelly provides:
- Memory-efficient training with spike compression (
memopt) - Experimental distributed execution for multi-GPU workloads
- Precision policy tools for large-scale training and inference
- Spiking transformer components
Datasets
SpikingJelly includes the following event-based and neuromorphic datasets:
- ASL-DVS
- Bullying10K
- CIFAR10-DVS
- DVS-Lip
- DVS128 Gesture
- ES-ImageNet
- HARDVS
- N-Caltech101
- N-MNIST
- Nav Gesture
- SHD
- SSC
- Speech Commands
Each dataset supports raw event access and frame representations. See the neuromorphic datasets tutorial for the full workflow.
Interchange and Deployment
Export SpikingJelly models to neuromorphic hardware or other frameworks:
Project Status and Version Notes
Development / release policy:
Starting from SpikingJelly V2, release versions follow PEP 440 compatible,
SemVer-style MAJOR.MINOR.PATCH semantics. MAJOR marks compatibility
generations, MINOR adds backward-compatible functionality, and PATCH fixes
bugs. Python package pre-release spelling is used for V2 development releases,
for example 2.0.0.dev0, 2.0.0a1, 2.0.0b1, and 2.0.0rc1.
Compatibility, migration, and older docs
- Before V2, SpikingJelly used a legacy
0.0.0.0.Xscheme: oddXtracked development versions on GitHub / OpenI, and evenXtracked stable releases published to PyPI. - If your project must stay on pre-V2 releases, pin dependencies with an upper bound such as
spikingjelly<2. - From
0.0.0.0.14, modules includingclock_drivenandevent_drivenwere renamed. See Migrate From Old Versions. - The default documentation points to the latest development version.
- If you rely on an older release, check bugs.md and switch to the matching documentation version.
Historical documentation:
Acknowledgement
Maintainers
Current maintainers (since July 2024):
Previous core maintainers (before July 2024):
Contributors
The full contributor list is on the contributors page.
Institutes
The main institutions behind SpikingJelly are Multimedia Learning Group, Institute of Digital Media (NELVT), Peking University and Peng Cheng Laboratory.
Community and related links
- Documentation
- Contributing Guide
- Issues and development discussion
- OpenI mirror
- Community Jupyter tutorials in Chinese
Contributing
We welcome issues, pull requests, documentation improvements, and translations.
- Read the Contributing Guide.
- Check issues for ongoing work.
- API docs are not fully bilingual yet; translation contributions are especially welcome.
Citation
Publications using SpikingJelly are listed on the documentation page. The source of truth in this repository is publications.json.
If you use SpikingJelly in your work, please cite:
@article{
doi:10.1126/sciadv.adi1480,
author = {Wei Fang and Yanqi Chen and Jianhao Ding and Zhaofei Yu and Timothee Masquelier and Ding Chen and Liwei Huang and Huihui Zhou and Guoqi Li and Yonghong Tian},
title = {SpikingJelly: An open-source machine learning infrastructure platform for spike-based intelligence},
journal = {Science Advances},
volume = {9},
number = {40},
pages = {eadi1480},
year = {2023},
doi = {10.1126/sciadv.adi1480},
url = {https://www.science.org/doi/abs/10.1126/sciadv.adi1480},
eprint = {https://www.science.org/doi/pdf/10.1126/sciadv.adi1480}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file spikingjelly-2.0.0.dev0.tar.gz.
File metadata
- Download URL: spikingjelly-2.0.0.dev0.tar.gz
- Upload date:
- Size: 748.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3dc06fc9a4f0a26d3092af79e5ca8ac951656723be51c56a93d1aee32a456ab1
|
|
| MD5 |
a121b399551908a6e9b1ab8eafe3ca2d
|
|
| BLAKE2b-256 |
ee5f1deb8cf706426826673d827fbdd9fba430299a2d61b1b2879bca7b4c6b49
|
File details
Details for the file spikingjelly-2.0.0.dev0-py3-none-any.whl.
File metadata
- Download URL: spikingjelly-2.0.0.dev0-py3-none-any.whl
- Upload date:
- Size: 941.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95171dc4b00ace950ed1ff5e2decbfad8b154865331f14a8faaf3b7efe69d6e6
|
|
| MD5 |
07adfe1ca56206524f1c8bdfaa0c7c94
|
|
| BLAKE2b-256 |
1cfc03d683802af48aa18dfa3502f8b5b6d80b074edf5e2b2f1075e890b0cf82
|