Open Source
Maintained packages and upstream contributions across the edge-AI stack.
Packages
quantcard
Quantization report cards for PyTorch models headed to the edge.
One command benchmarks a model across torchao quantization configs (int8/int4 weight-only, dynamic-activation combos, the ExecuTorch 8da4w recipe, QAT prepare) and reports accuracy delta, weight size, and latency as a single table.
evlab
Inspect, clean, convert, and benchmark event-camera data from the command line.
Normalizes the event-vision preprocessing mess: loads AEDAT4, Prophesee .dat, ROS bags, NPZ/CSV into one canonical form; BAF/refractory denoising; voxel grids, time surfaces, frames; synthetic labeled streams with precision/recall scoring of denoising filters.
Contributions
PyTorch ExecuTorch (on-device inference runtime)
One merged PR in the exir export pipeline that shortens how long written-back values stay live in the memory plan.
- Write-back copy_ nodes for mutated buffers and inputs were always appended at the end of the graph, keeping each value being written back alive until the end of the program. Moved each write-back to the earliest point where it is provably safe (#20744), preserving the end-of-graph semantics.
- Placement is alias-aware: each copy waits for every read of the buffer's old value and every mutation of the value being written, through views, in-place ops and storage-sharing ops, with unknown ops treated conservatively. If two write-backs might alias each other, all of them fall back to end-of-graph in their original order. Approved by the exir code owner.
Binaryen (WebAssembly optimizer)
Three merged PRs in the MemoryPacking pass and interpreter, plus a six-year-old issue closed with a measurement study.
- Taught MemoryPacking to optimize overlapping (trampled) data segments instead of giving up, then extended it to imported memories with a provable no-trap bounds analysis.
- Found and fixed a pre-existing memory64 miscompile (32-bit truncation silently deleted instantiation traps) and a fuzzer-reported interpreter bug where a maximal memory64's byte size wrapped to zero.
- Resolved issue #3029 by measuring six real binaries across three toolchains and showing the proposed optimization had no remaining value; the maintainer closed it citing the data.
SpikingJelly (spiking neural network framework)
Three merged PRs fixing autograd-graph memory leaks in the STDP learning rules.
- STDP/MSTDP learners retained the network's autograd graph across batches (issue #576): ~70 MB and hundreds of tensors leaked per run in hyperparameter searches. Detaching at record time made memory flat, with regression tests proving the update numerics are unchanged.
- Closed the remaining leak path where a graph-connected reward tensor re-entered the weight update in reward-modulated STDP.
snnTorch (spiking neural network framework)
Two merged PRs fixing numerical correctness in the neuron modules and surrogate gradients.
- All surrogate gradients hard-cast spikes to float32, so float64 networks crashed on the second step of any recurrent neuron (issues #421, #422). Emitting spikes in the input dtype and fixing float32 hidden-state re-initialization in SLSTM/SConv2dLSTM made the full neuron zoo dtype-faithful, backed by 38 new tests parametrized over dtype × module and dtype × surrogate.
- The sigmoid surrogate's backward pass computed exp(-slope·x)/(exp(-slope·x)+1)², which overflows to inf/inf = NaN once the membrane potential sits ~3.5 below threshold at the default slope — silently poisoning the whole backward pass (issue #427). Rewrote it in the numerically stable sigmoid form.
In review
Open PRs awaiting maintainer review.
- Norse: fix ONNX export of neuron models with integer parameter tensors, which aborted the torch 2.13 dynamo exporter — applied uniformly across the neuron zoo with parametrized export tests (#448).