Skip to main content

Reproducibility

Reproducibility is a first-class design goal, not an afterthought. The same inputs produce the same bits — across backends, across machines, across time.

Where bit-stability comes from

Because there is exactly one definition of the polynomial coefficients and every backend imports it, a (activation, order) result is bit-identical on PyTorch, JAX, and Keras 3. There is no per-backend reimplementation to drift. See Cross-backend parity.

Your reproducibility checklist

  • Pin versions. Record the exact omnibias-* package versions.
  • Pin the backend + its version and the dtype (float64 for any parity or certificate claim).
  • Seed every RNG you use for data, init, and sampling.
  • Record hardware tier (memory class / precision) with timing numbers.
  • Store certificates for any bounded quantity you publish.
  • Capture the exact commands that regenerate each number.
Reproducibility ≠ determinism of your whole pipeline

omnibias's math is bit-stable. Your surrounding pipeline (data loading, nondeterministic reductions on some accelerators, multi-threaded ops) may not be. Pin and seed those layers too, and prefer deterministic reductions when you need exact reproduction.

Reproducing a published number

A well-governed result ships the command that regenerates it, for example:

JAX_PLATFORMS=cpu python -m bench.laplacian_scaling.dimension_sweep \
--dims 3 12 30 --hidden 32 --batch 64 --repeats 3 --seed 0

Anyone can re-run it and get the same answer to float64 round-off.

See also