SYMBEX-1

Inference. Reduced to one bit.

A fully binary neural network. Compiled to C. Checked against its reference on the chip.

Scroll to see the whole system
By the numbers

Small by design.
Measured on silicon.

Every figure below links to the repository result it came from.

01bit

Weights and activations, every layer.

How it works ›
24.3KB

ResNet-8 model weights · CIFAR-10.

Repository-reported ›
40.7ms

ESP32-S3 · 240 MHz · 1 core.

1.28× faster than INT8 ›
71.28%

CIFAR-10 accuracy · 87.0% INT8.

Accuracy is part of the result ›
The constraint is the opportunity

When space is scarce, every bit matters.

A microcontroller has a small memory and a finite compute budget. What if a network could work with just two values?

RAM

Pack intermediate activations into bits.

FLASH

Store binary weights in compact words.

COMPUTE

Count bits. Compare an integer threshold.

Representation · 8 elementsIllustrative
-2416103-865-721492
INT8 values · 8 bytes

Binary representation · 1 byte
01101011

A conceptual representation change, not a direct model conversion. Training, thresholds, alignment and metadata also matter.

From numbers to bits ↗
Less abstract. More interactive.

Don’t just read it. Flip a bit.

Change an input. Watch XOR find the differences, popcount count the ones, and an integer threshold decide the output.

Real calculations. Toy example.
No hardware measurements in this demo.

XOR / POPCOUNT / THRESHOLD8-BIT EXPERIMENT
INPUT
WEIGHT

XOR01100110
4
POPCOUNT
4 / 8
4 ≥ 4
OUTPUT
BIT
1
Tap any input or weight bit.

Illustrative operation · 0/1 bits · XOR counts differences.
Example rule: output = 1 when count ≥ threshold.

From an idea to an inference

Follow the bit.
All the way to silicon.

A complete path from model and data to generated C, verified execution, and measurements you can inspect.

Evidence, with the tradeoffs

Measured on hardware.
Open to inspection.

Explore every comparison ↗
ESP32-S3 · CIFAR-10

Image classification

ResNet-8 · official MLPerf Tiny INT8 baseline

40.7 msper binary inference
SYMBEX · BINARY40.7 ms
TFLITE MICRO · INT852.0 ms

Accuracy: 71.28 ± 0.81% binary · 87.0% INT8.

View result & methodology ↗
ESP32-S3 · Pascal VOC persons

Person-center detection

FOMO · same resized architecture and training recipe

126.3 msper binary inference
SYMBEX · BINARY126.3 ms
TFLITE MICRO · INT8256.9 ms

F1: 31.2 ± 0.7% binary · 30.1 ± 0.2% INT8.

View result & methodology ↗
Repository-reported results · 240 MHz · one core. Validation-split fixes and affected re-measurements are ongoing; FOMO sizing used test-set selection. See all conditions and caveats.
From exploring to building

Your next inference starts in the source.

Build the board example. Run the library tests. Train and export a model, then verify it on your hardware.

START WITH THE LIBRARY · REPOSITORY ROOT
# Bit-exact C library tests (gcc required)
python Symbex1_PIO/lib/lib_symbex/tests/run_tests.py

# Build & upload the configured S3 example
cd Symbex1_PIO
pio run -t upload
pio device monitor -b 115200
Open source. Open questions. Open possibilities.

Built to be inspected.

Explore the engine. Reproduce a benchmark. Help make it better.