norse/norse

Deep learning with spiking neural networks (SNNs) in PyTorch.

Norse – 스파이킹 신경망을 위한 딥러닝 라이브러리

What it is – Norse는 Python 라이브러리로, 바이오 영감을 받은 이벤트 기반 신경 컴포넌트(스파이킹 뉴런, 시냅스 다이내믹스, 인코더/디코더 등)를 PyTorch에 추가합니다. 기존 딥러닝 모델과 동일한 툴링으로 스파이킹 신경망(SNN)을 구축·학습·평가할 수 있습니다.

Why it matters – 스파이킹 네트워크는 희소하고 이산 스파이크로 동작해 뇌의 계산 방식에 더 가깝고, 뉴로모픽 하드웨어에서 에너지 효율적인 추론을 기대할 수 있습니다. Norse는 연구자에게 최적화기, 데이터 로더, 분산 학습 등 풍부한 생태계를 포기하지 않고도 SNN을 실험할 수 있는 프로덕션 레디, PyTorch 호환 스택을 제공합니다.

Installation – 일반적인 Python 패키지 설치 경로를 지원합니다:

  • pip install norse
  • conda install -c conda-forge norse
  • Docker 이미지 quay.io/norse/norse
  • 소스에서 직접 설치: pip install git+https://github.com/norse/norse.

Getting started – 프로젝트는 norse.task 모듈로 실행할 수 있는 준비된 예제를 제공합니다. 예:

python -m norse.task.mnist      # 스파이킹 MNIST 분류기 학습
python -m norse.task.cifar10    # CIFAR‑10 학습
python -m norse.task.cartpole   # 정책 그라디언트로 cart‑pole 제어

Google‑Colab 노트북에서는 99 % 이상의 MNIST 정확도를 달성하는 스파이킹 컨볼루션 분류기를 시연합니다.

Core API – 가장 많이 사용되는 프리미티브는 norse.torch 아래에 있습니다:

  • LIFCell / LICell – 누설 적분‑발화(leaky‑integrate‑and‑fire)와 누설 적분 뉴런 레이어.
  • SequentialState – 상태를 유지하는 래퍼로, 일반 nn.Sequential처럼 스파이킹 레이어를 쌓을 수 있습니다.
  • LSNNRecurrent – 재귀 작업을 위한 Long Short‑Term Spiking Network(LSNN) 구현. 이 컴포넌트들은 표준 PyTorch 모듈처럼 동작하며, 텐서를 입력받아 출력 스파이크와 업데이트된 숨겨진 상태를 반환합니다.

Compatibility – PyTorch ≥ 1.9와 호환되며, PyTorch‑Lightning과 통합해 다중 GPU 학습(norse.task.mnist_pl)이 가능합니다.

Community & support – 활발한 Discord 채널, CI 배지, 코드 커버리지 보고서, 그리고 인용 가능한 Zenodo 릴리스가 있습니다. 라이브러리는 LGPL‑v3 라이선스로 제공되며, 일반적인 GitHub 워크플로우를 통한 기여를 환영합니다.

When to use it – SNN을 프로토타이핑하거나 뉴로모픽 알고리즘을 탐색하거나, 전용 하드웨어로 옮기기 전에 GPU/CPU에서 스파이크 기반 모델을 실행하고 싶을 때, Norse는 스파이킹 신경과학과 최신 딥러닝 파이프라인을 연결하는 고수준·검증된 브리지를 제공합니다.