fangwei123456/spikingjelly
SpikingJelly is an open-source deep learning framework for Spiking Neural Network (SNN) based on PyTorch.
SpikingJelly – PyTorch 기반 스파이킹 신경망(SNN) 프레임워크
개요
- PyTorch를 기반으로 구축된 오픈 소스 Python 라이브러리로, 기존 인공 신경망의 뇌 모방 대안인 스파이킹 신경망(SNN)을 정의, 학습 및 배포할 수 있습니다.
- 이벤트 기반(뉴로모픽) 데이터 작업, 기존 ANN 모델의 SNN 변환 또는 대규모 SNN 실험을 수행하려는 연구자와 엔지니어를 대상으로 합니다.
주요 기능
| 영역 | SpikingJelly 제공 기능 |
|---|---|
| SNN 모델링 | 즉시 사용 가능한 스파이킹 뉴런 모듈(LIF, IF 등), 대리 경사(surrogate-gradient) 함수, 상태 유지/비유지 레이어 및 참조 SNN 아키텍처 모음. |
| 학습 워크플로우 | PyTorch 스타일의 학습 루프, 온라인 학습 유틸리티 및 학습된 ANN을 SNN으로 변환하는 도구(ANN2SNN). |
| 성능 | 가장 빠른 실행 백엔드(일반 PyTorch, Triton 커널 또는 선택적 네이티브 CUDA 확장) 자동 선택. 혼합 정밀도(예: fp8) 및 사용자 정의 뉴런 커널을 위한 “FlexSN” 커널 생성기 지원. |
| 확장성 | 메모리 효율적인 스파이크 압축, 실험적인 다중 GPU 분산 학습 및 대규모 모델을 위한 정밀도 정책 도우미. |
| 데이터셋 | 원시 이벤트 및 프레임 기반 액세스를 지원하는 다양한 뉴로모픽 이벤트 기반 데이터셋(예: N-MNIST, CIFAR10-DVS, DVS-Gesture, Speech Commands 등)용 내장 로더. |
| 분석 | FLOPs, SynOps, 메모리 트래픽을 위한 프로파일러 및 추론 에너지 추정 도구. |
| 상호 운용성 및 배포 | 뉴로모픽 하드웨어 및 기타 프레임워크(NIR, Lava, Lynxi)를 위한 내보내기 도우미. |
빠른 시작 예제
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())
)
모델은 일반적인 PyTorch nn.Module과 동일하게 정의됩니다. 이후 이벤트 기반 데이터셋으로 학습하거나 제공된 튜토리얼을 사용하여 기존 ANN을 SNN으로 변환할 수 있습니다.
설치
- Python ≥ 3.11 및 PyTorch ≥ 2.6이 필요합니다.
- PyPI에서
uv패키지 관리자(또는 pip)를 통해 설치:uv pip install spikingjelly # 안정 버전 uv pip install "spikingjelly[triton]" # 선택적 Triton 커널 포함 - 최대 성능을 위해 선택적 네이티브 CUDA 확장을 빌드할 수 있습니다:
SJ_BUILD_NATIVE_CUDA=1 uv pip install \ --no-build-isolation --no-binary spikingjelly \ --reinstall-package spikingjelly --no-cache "spikingjelly>=2.0.0" - 자세한 설치 가이드 및 문제 해결 방법은 문서에 있습니다.
일반적인 사용 사례
- 뉴로모픽 비전 또는 오디오 연구(예: DVS 카메라, 이벤트 기반 음성).
- 엣지 디바이스를 위해 고정밀 ANN을 저전력 SNN으로 변환.
- 스파이킹 트랜스포머 구성 요소 벤치마킹 또는 다중 GPU 클러스터에서의 대규모 SNN 학습.
- NIR/Lava를 통해 뉴로모픽 칩 또는 시뮬레이션 프레임워크로 모델 내보내기.
프로젝트 상태
- 활발하게 유지 관리됨(유지 관리자 목록, 정기적인 릴리스, SemVer 버전 관리).
- Read the Docs에 문서 호스팅, 설치, 뉴런 기초, 데이터셋 처리 및 배포에 대한 튜토리얼 제공.
- Apache-2.0 라이선스 – 학술 및 상업적 용도 모두에 허용적.
추가 정보
- 전체 문서: https://spikingjelly.readthedocs.io/
- 빠른 시작 튜토리얼, 데이터셋 가이드 및 변환 노트북은 README에서 확인할 수 있습니다.
- GitHub 이슈 트래커 및 풀 리퀘스트 워크플로우를 통한 커뮤니티 기여를 환영합니다.
SpikingJelly는 본질적으로 “스파이킹 신경망을 위한 PyTorch”이며, 이벤트 기반 연산의 고유한 문제를 처리하면서 익숙한 API를 제공합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트