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를 제공합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트