欢迎来到惊蜇(SpikingJelly)的文档#
SpikingJelly 是一个基于 PyTorch ,使用脉冲神经网络(Spiking Neural Network, SNN)进行深度学习的框架。
版本说明#
自 0.0.0.0.14 版本开始,包括 clock_driven 和 event_driven 在内的模块被重命名了,请参考教程 从老版本迁移。
V2 版本更新记录见 变更日志 | Changelog。
不同版本文档的地址(其中 latest 是开发版):
安装#
在已激活的虚拟环境中使用 uv;V2 要求 Python >= 3.11、Torch >= 2.6。请先安装适合设备的 PyTorch。
安装方式 |
命令 |
|---|---|
PyPI 发布版 |
|
PyPI 先行版 |
|
可选 Triton(缺少时) |
|
最新源码开发版 |
|
原生 CUDA(需要工具链,对应 V2 版本发布到 PyPI 后可用):
SJ_BUILD_NATIVE_CUDA=1 uv pip install \
--no-build-isolation --no-binary spikingjelly \
--reinstall-package spikingjelly --no-cache "spikingjelly>=2.0.0"
前置条件、决策图、其他可选依赖及排查方法见 安装指南。 尚未发布的改动请安装源码开发版。
上手教程#
- 中文教程 | Chinese Tutorials
- 安装指南
- 基本概念
- 包装器
- 神经元
- 梯度替代
- 监视器
- STDP学习
- ANN转换SNN
- Transformer ANN2SNN 转换
- 使用单层全连接SNN识别MNIST
- 使用卷积SNN识别Fashion-MNIST
- 自连接和有状态突触
- 神经形态数据集处理
- 分类 DVS Gesture
- 神经元自动执行
- FlexSN
- 训练显存优化
- 算子计数与能耗估计
- 训练与推理精度
- SNN 分布式训练与推理
- 使用深度脉冲Q网络玩Atari游戏
- 使用层内连接增强的脉冲行动器网络进行连续动作空间下的强化学习
- 训练大规模SNN
- 脉冲Transformer构建、训练和改进
- 在灵汐芯片上推理
- 转换到Lava框架以进行Loihi部署
- 与 NIR 相互转换
- 从老版本迁移
- 遗产教程
引用和出版物#
如果您在自己的工作中用到了惊蜇(SpikingJelly),您可以按照下列格式进行引用:
@article{
doi:10.1126/sciadv.adi1480,
author = {Wei Fang and Yanqi Chen and Jianhao Ding and Zhaofei Yu and Timothée 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},
abstract = {Spiking neural networks (SNNs) aim to realize brain-inspired intelligence on neuromorphic chips with high energy efficiency by introducing neural dynamics and spike properties. As the emerging spiking deep learning paradigm attracts increasing interest, traditional programming frameworks cannot meet the demands of the automatic differentiation, parallel computation acceleration, and high integration of processing neuromorphic datasets and deployment. In this work, we present the SpikingJelly framework to address the aforementioned dilemma. We contribute a full-stack toolkit for preprocessing neuromorphic datasets, building deep SNNs, optimizing their parameters, and deploying SNNs on neuromorphic chips. Compared to existing methods, the training of deep SNNs can be accelerated 11×, and the superior extensibility and flexibility of SpikingJelly enable users to accelerate custom models at low costs through multilevel inheritance and semiautomatic code generation. SpikingJelly paves the way for synthesizing truly energy-efficient SNN-based machine intelligence systems, which will enrich the ecology of neuromorphic computing. Motivation and introduction of the software framework SpikingJelly for spiking deep learning.}}
使用惊蜇(SpikingJelly)的出版物可见于 出版物 | Publications 。
许可证#
SpikingJelly 的项目许可证为 Apache-2.0。 第三方归属与许可条款汇总于 LICENSES/NOTICE。 适用范围与历史许可证见 许可证指南。
项目信息#
北京大学信息科学技术学院数字媒体所媒体学习组 Multimedia Learning Group 和 鹏城实验室 是SpikingJelly的主要负责机构。
SpikingJelly主要由以下开发者开发维护:
2019.12~2024.06: 方维, 陈彦骐, 丁健豪, 陈鼎, 黄力炜
全体贡献者名单可见于 贡献者 。
友情链接#
Welcome to SpikingJelly's documentation#
SpikingJelly is a deep learning framework for Spiking Neural Network (SNN) based on PyTorch.
Notification#
From the version 0.0.0.0.14, modules including clock_driven and event_driven are renamed. Please refer to the tutorial Migrate from old versions.
See 变更日志 | Changelog for the V2 release changelog.
Docs for different versions (latest is the developing version):
Installation#
Use uv in an activated virtual environment. V2 requires Python >= 3.11 and Torch >= 2.6. First install the appropriate PyTorch for your device.
Install |
Command |
|---|---|
PyPI release |
|
PyPI pre-release |
|
Optional Triton (if missing) |
|
Latest development source |
|
Native CUDA (requires a toolchain; available after the corresponding V2 PyPI release):
SJ_BUILD_NATIVE_CUDA=1 uv pip install \
--no-build-isolation --no-binary spikingjelly \
--reinstall-package spikingjelly --no-cache "spikingjelly>=2.0.0"
See Installation Guide for prerequisites, decision diagrams, other extras and troubleshooting. Unreleased changes require the development source.
Tutorials#
- 英文教程 | English Tutorials
- Installation Guide
- Basic Conception
- Container
- Neuron
- Surrogate Gradient Method
- Monitor
- STDP Learning
- ANN2SNN
- Transformer ANN2SNN Conversion
- Single Fully Connected Layer SNN to Classify MNIST
- Convolutional SNN to Classify FMNIST
- Recurrent Connection and Stateful Synapse
- Neuromorphic Datasets Processing
- Classify DVS Gesture
- Automatic neuron execution
- FlexSN
- Training Memory Optimization
- Operation Counters and Energy Estimation
- Training and Inference Precision
- Distributed SNN Training and Inference
- Train large-scale SNNs
- Spiking Transformer Construction, Training, and Improvements
- Convert to Lava for Loihi Deployment
- Export to and Import from NIR
- Migrate from old versions
- Legacy Tutorials
Citation#
If you use SpikingJelly in your work, please cite it as follows:
@article{
doi:10.1126/sciadv.adi1480,
author = {Wei Fang and Yanqi Chen and Jianhao Ding and Zhaofei Yu and Timothée 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},
abstract = {Spiking neural networks (SNNs) aim to realize brain-inspired intelligence on neuromorphic chips with high energy efficiency by introducing neural dynamics and spike properties. As the emerging spiking deep learning paradigm attracts increasing interest, traditional programming frameworks cannot meet the demands of the automatic differentiation, parallel computation acceleration, and high integration of processing neuromorphic datasets and deployment. In this work, we present the SpikingJelly framework to address the aforementioned dilemma. We contribute a full-stack toolkit for preprocessing neuromorphic datasets, building deep SNNs, optimizing their parameters, and deploying SNNs on neuromorphic chips. Compared to existing methods, the training of deep SNNs can be accelerated 11×, and the superior extensibility and flexibility of SpikingJelly enable users to accelerate custom models at low costs through multilevel inheritance and semiautomatic code generation. SpikingJelly paves the way for synthesizing truly energy-efficient SNN-based machine intelligence systems, which will enrich the ecology of neuromorphic computing. Motivation and introduction of the software framework SpikingJelly for spiking deep learning.}}
Publications using SpikingJelly are recorded in 出版物 | Publications.
License#
SpikingJelly's project license is Apache-2.0. Third-party attributions and license terms are collected in LICENSES/NOTICE. Scope and historical licenses are described in the license guide.
About#
Multimedia Learning Group, Institute of Digital Media (NELVT), Peking University and Peng Cheng Laboratory are the main institutions behind the development of SpikingJelly.
SpikingJelly has been developed and maintained by multiple main developers over time.
2024.07~Now: Yifan Huang, Peng Xue
2019.12~2024.06: Wei Fang, Yanqi Chen, Jianhao Ding, Ding Chen, Liwei Huang
The list of contributors can be found at contributors.