A compact spiking neural network library built on JAX and Haiku, offering high-performance training via surrogate gradient descent and neuroevolution.
Spyx is a spiking neural network library built on JAX and Haiku, designed for high-performance training of SNNs. It supports surrogate gradient descent and neuroevolution methods, enabling efficient optimization of spiking models for neuromorphic computing and neuroscience research.
Researchers and developers working in neuromorphic computing, computational neuroscience, or machine learning who need efficient tools for training and experimenting with spiking neural networks.
Spyx offers a unique combination of PyTorch-like flexibility and custom CUDA kernel-level performance, making it ideal for prototyping custom neuron models while achieving state-of-the-art training speeds on GPU hardware.
Spyx: Spiking Neural Networks in JAX
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Leverages JAX's just-in-time compilation and GPU acceleration to achieve high training speeds, with benchmarks showing efficient use similar to custom CUDA kernels.
Designed for easy definition and integration of user-defined dynamics, allowing researchers to prototype custom spiking behaviors without deep framework changes, as highlighted in the README.
Supports both surrogate gradient descent and neuroevolution for SNN optimization, providing multiple pathways as evidenced by the included research and master's thesis references.
Uses uv for package management and includes automated release scripts, facilitating smooth development and deployment with tools like MkDocs for documentation.
Requires significant GPU vRAM to store entire datasets during training, which can be prohibitive for systems with limited memory or shared resources, as noted in the hardware requirements.
Key capabilities like ANN2SNN conversion and SpikingRWKV are listed as planned for the future, meaning current users may face gaps or need to implement these themselves.
Installation involves separate setup for GPU-accelerated JAX, adding extra steps compared to more integrated libraries, and compatibility issues arise with older TPU versions like on Google Colab.