-
Notifications
You must be signed in to change notification settings - Fork 0
benchmarks
Until now this project could not answer, with a link, the first question an academic or a professional asks: what does it achieve, on what, in how long, and can I reproduce it? This page is that link.
Read the caveat first. Every row below is a reference configuration: stock hyperparameters, a modest epoch count, one seed, CPU only. They exist so a number is checkable, and so the model hub has honestly-labelled trained weights to carry. They are not tuned attempts at state of the art, and they should not be cited as spikeforge's ceiling — a longer schedule, a tuned learning rate, and a GPU all move these numbers. What they are is true, reproducible, and produced by the shipped code path rather than a bespoke script.
| Configuration | Dataset | Topology | Test accuracy | Epochs | Steps | Train time |
|---|---|---|---|---|---|---|
mnist-fc-legacy |
mnist | fc_legacy |
94.29% | 3 | 25 | 49.8 s |
mnist-fc-small |
mnist | fc_small |
92.16% | 3 | 25 | 40.4 s |
mnist-conv-net |
mnist | conv_net |
97.13% | 2 | 25 | 249.3 s |
mnist-recurrent-net |
mnist | recurrent_net |
92.46% | 3 | 25 | 54.8 s |
fashion-fc-legacy |
fashion | fc_legacy |
75.55% | 3 | 25 | 62.2 s |
kmnist-fc-legacy |
kmnist | fc_legacy |
70.79% | 3 | 25 | 49.3 s |
Hardware: x86_64, 12 torch threads, CPU only. Python 3.13.5, torch 2.14.0+cpu.
Accuracy is measured on the complete held-out test split, not a sample of
it. TrainingEngine.evaluate() deliberately scores four cached batches of
1000 every fifth step so the live dashboard stays responsive; that is the
right trade for a dashboard and the wrong one for a full-dataset run, where it
costs several times more than the training it reports on. The harness
therefore shrinks the in-training progress probe to a single small batch and
walks the entire test split once, at the end, for the published number. The
per-step test_accuracy recorded in a checkpoint's manifest is that small
probe, not the figure in this table.
Every row is produced by one command:
pip install "spikeforge[nir]"
git clone https://github.com/Capsize-Games/spikeforge.git
cd spikeforge
python scripts/train_reference_models.py --only mnist-fc-legacy--list prints the configuration names; omitting --only runs all of them.
The script writes three things under build/reference/:
-
results.json— one record per configuration, with the full hyperparameter set, the hardware it ran on, the seed, and a SHA-256 of the checkpoint; -
results.md— the table above; -
<name>.pt— the trained checkpoint, carrying the reproducibility manifest.
Seeds are fixed, so a rerun on the same torch version and hardware reproduces the number. Across torch versions or hardware, expect small movement — that is a property of floating-point reduction order, not of the configuration.
Being explicit about the gaps matters more than the table does:
- No event-dataset rows. N-MNIST, DVS128 Gesture, CIFAR10-DVS and Spiking Speech Commands are shipped and wired (see Event datasets), but they are not in this table yet. Nothing blocks adding them beyond download size and runtime.
- No comparison against published SNN numbers. The literature's MNIST and Fashion-MNIST SNN results are generally obtained with longer schedules, tuned hyperparameters, and different encoders, so putting them in the same table would invite an apples-to-oranges reading. Treat these as a floor that the shipped defaults reach, not as a competitive claim.
-
These are task-accuracy numbers, not latency or throughput. For those,
spikeforge-benchmarkhas a separate harness with fixtures, warmup, repeats, a result store, and--fail-on-regressionfor CI — see Production workflows. -
Energy figures are estimates. The SOP/MAC/AC accounting in
Event runtime and energy is labelled
estimatethroughout and is not hardware-measured. It is not in this table for that reason.
The checkpoints these runs produce are the trained entries in the model hub:
source: "reference" in
spikeforge_hub/models.json, shipped inside
the spikeforge-hub wheel and checksum-verified on load. List them with:
pip install spikeforge-hub
spikeforge-hub list --trainedSee Model hub for how a reference entry differs from a
bundled one (trained weights versus preset structure), and
spikeforge_hub/CURATION.md for the policy that keeps the two apart.
- Home
- Architecture
- Backend Execution
- Benchmarks
- Dashboard
- Development
- Event Datasets
- Event Runtime And Energy
- Features
- Implications And Boundaries
- Interop Foldins
- Interpreter Spine
- Introspection
- Model Deployment
- Model Hub
- Notes
- Operational Maturity
- Production Workflows
- Project Layout
- Quickstart
- Requirements
- Sequence Primitives
- Streaming Timeseries
- Targets And Interop
- Usage
- Arch 0001 Adr Repo Topology
- Arch 0001 Core Boundary
- Arch 0001 Decision Metrics
- Arch 0001 Migration Plan
- Arch 0001 Packaging Versioning
- Arch 0001 Protocol Contract
- Arch 0001 Risk Register
- Arch 0001 Target Topology
- Backend Execution Plan
- Ecosystem Listings
- Ecosystem Roadmap
- Event Runtime Plan
- Hub Expansion Plan
- Plans
- Interop Foldins Plan
- Interpreter Spine Plan
- Memory System Research
- Model Hub Plan
- Operations Plan
- Production Toolkit Plan
- Production Use Cases
- Professional Roadmap
- Repo Topology Plan
- Sequence Primitives Plan
- Use Case Audio Keyword Spotting
- Use Case Biosignal Medical Monitoring
- Use Case Computational Neuroscience
- Use Case Edge Power Budgets
- Use Case Event Camera Vision
- Use Case Intrusion Anomaly Detection
- Use Case Low Latency Sensor Stream
- Use Case Rl Control Robotics
- Use Case Spiking Transformers
- Use Case Streaming Timeseries