snnTorch: 스파이킹 신경망을 위한 PyTorch 패키지
요약
snnTorch는 스파이킹 신경망(SNN)을 PyTorch 프레임워크에 통합한 Python 패키지입니다. 이 패키지는 GPU 가속 텐서 연산을 활용하여 SNN의 기울기 기반 학습을 가능하게 합니다. snnTorch는 재귀적 활성화 단위로 취급되어, 완전 연결/컨볼루션 레이어 등 다양한 구조에 쉽게 적용할 수 있습니다.
핵심 포인트
- PyTorch 기능을 확장하여 스파이킹 신경망 학습 지원
- 재귀 함수 기반으로 막 전위 흔적 저장 부담 감소
- GPU 가속을 활용하며 CPU에서도 훈련 가능
- 다양한 설치 옵션(pip, conda, IPU) 제공
뇌는 더 효율적인 신경망을 개발하기 위해 영감을 얻기에 완벽한 장소입니다. 현대 딥러닝과 주요 차이점 중 하나는 뇌가 연속적인 활성화(continuous activations) 대신 스파이크(spikes)로 정보를 인코딩한다는 것입니다. snnTorch는 스파이킹 신경망을 이용해 기울기 기반 학습(gradient-based learning)을 수행하는 Python 패키지입니다. 이는 PyTorch의 기능을 확장하여, GPU 가속 텐서 연산에 이점을 활용하고 이를 스파이킹 뉴런 네트워크에 적용합니다. 미리 설계된 스파이킹 뉴런 모델은 PyTorch 프레임워크 내에 원활하게 통합되며 재귀적 활성화 단위(recurrent activation units)로 취급될 수 있습니다.
만약 이 프로젝트가 마음에 드신다면, ⭐ 이 레포지토리를 별표 표시해 주시는 것을 고려해 주세요. 이것이 지원할 수 있는 가장 쉽고 좋은 방법입니다.
문제가 있거나 의견이 있으시거나, 스파이킹 신경망 훈련에 대한 조언을 찾고 계시다면, 이슈(issue)나 토론(discussion)을 열거나 저희 Discord 서버에서 채팅하실 수 있습니다.
snnTorch는 다음 구성 요소를 포함합니다:
| Component | Description |
|---|---|
| snntorch | autograd와 깊이 통합된 torch.nn과 같은 스파이킹 뉴런 라이브러리 |
| ... |
snnTorch는 마치 각 스파이킹 뉴런이 레이어 시퀀스 내의 또 다른 활성화인 것처럼 직관적으로 PyTorch와 함께 사용하도록 설계되었습니다. 따라서 완전 연결 레이어(fully-connected layers), 컨볼루션 레이어(convolutional layers), 잔차 연결(residual connections) 등에 구애받지 않습니다.
현재 뉴런 모델은 재귀 함수로 표현되어, 기울기를 계산하기 위해 시스템의 모든 뉴런에 대한 막 전위 흔적(membrane potential traces)을 저장할 필요가 없습니다. snnTorch의 가벼운 요구 사항 덕분에 필요한 경우 CPU에서도 소규모 및 대규모 네트워크를 생존 가능하게 훈련할 수 있습니다. 네트워크 모델과 텐서가 CUDA에 로드되는 한, snnTorch는 PyTorch와 동일한 방식으로 GPU 가속을 활용합니다.
만약 snnTorch가 작업에 유용하다면, 다음 출처를 인용해 주십시오:
snnTorch를 사용하여 흥미로운 작업, 연구 또는 블로그에 활용하고 계시다면 알려주세요. 더 많은 이야기를 듣고 싶습니다! [email protected]으로 연락 주시기 바랍니다.
snnTorch를 사용하려면 PyTorch가 설치되어 있어야 합니다. CUDA 호환성을 활성화하려면 시스템에 올바른 버전의 torch가 설치되었는지 확인하십시오.
pip 명령을 사용할 경우 다음 패키지들이 자동으로 설치됩니다:
- numpy
- pandas
export_nir와 import_nir를 사용하려면 다음 패키지가 필요합니다:
- nir>=1.0.6
- nirtorch>=2.0.5
spikeplot을 사용하려면 다음 패키지가 필요합니다:
- matplotlib
다음 명령어를 실행하여 설치하십시오:
$ python
$ pip install snntorch
대신 소스(source)에서 snnTorch를 설치하려면:
$ git clone https://github.com/jeshraghian/snnTorch $ cd snntorch $ python setup.py install
conda로 snnTorch를 설치하려면:
$ conda install -c conda-forge snntorch
Graphcore의 가속기를 사용하여 Intelligent Processing Units (IPU) 기반 빌드를 위해 설치하려면:
$ pip install snntorch-ipu
전체 API는 여기에서 확인할 수 있습니다. 예제, 튜토리얼 및 Colab 노트북이 제공됩니다.
snnTorch를 시작할 수 있는 몇 가지 방법은 다음과 같습니다:
snnTorch를 실행하는 간단한 예제를 보려면 다음 코드 스니펫을 참조하거나 빠른 시작(quickstart) 노트북을 테스트하십시오:
import torch, torch.nn as nn
import snntorch as snn
from snntorch import surrogate
...
스파이킹 신경망(spiking neural networks) 훈련의 모든 기초 지식, 즉 뉴런 모델부터 신경 코드(neural code), 그리고 역전파(backpropagation)에 이르기까지 배우고 싶다면, snnTorch 튜토리얼 시리즈가 시작하기 좋은 곳입니다. 이 시리즈는 완벽한 설명이 담긴 인터랙티브 노트북으로 구성되어 있어 빠르게 숙련될 수 있도록 도와줍니다.
| Tutorial | Title | Colab Link |
|---|---|---|
| Tutorial 1 | Spike Encoding with snnTorch | |
| ... |
snnTorch는 현재 UCSC Neuromorphic Computing Group에서 유지 관리하고 있습니다. 이 패키지는 원래 루 그룹(Lu Group, 미시간 대학교)의 Jason K. Eshraghian에 의해 개발되었습니다.
추가 기여자는 Vincent Sun, Peng Zhou, Ridger Zhu, Alexander Henkes, Steven Abreu, Xinxin Wang, Sreyes Venkatesh, gekkom, 그리고 Emre Neftci입니다.
snnTorch의 소스 코드는 MIT License 조건 하에 공개되었습니다. snnTorch의 문서는 Creative Commons Attribution-Share Alike 3.0 Unported License (CC BY-SA 3.0)로 라이선스가 부여되어 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Research의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기