| --- |
| license: mit |
| library_name: pytorch |
| tags: |
| - modular-arithmetic |
| - neural-arithmetic |
| - bit-serial |
| - recurrent-neural-network |
| - gru |
| --- |
| |
| # MiniNeuralHorner v0.2 |
|
|
| This is a development snapshot of NeuralHorner with 126,603 trainable |
| parameters. It uses the same learned transition and fixed Horner schedule as |
| the larger v8 model, but the recurrent hidden width is 61 instead of 128. |
|
|
| The learned cell approximates one transition: |
|
|
| ```text |
| s_next = (2*s + d*x) mod p |
| ``` |
|
|
| The cell is reused to reduce `a`, reduce `b`, and multiply the two residues. |
| The surrounding code sequences binary digits and carries the predicted binary |
| state between calls. It does not compute the modular product as a Python |
| integer operation. |
|
|
| ## Status |
|
|
| This artifact has now been measured on the SAIR Playground. It is not exact and |
| is not presented as a replacement for `TrickyRex/bitserial-modmul-v8`. |
|
|
| ## Hosted SAIR Playground result |
|
|
| The hosted run evaluated repository revision |
| `d9d611833d340c72d90a97d995a94031b798cf7c` and completed successfully. |
|
|
| | Field | Hosted result | |
| | --- | ---: | |
| | Frontier | T9 | |
| | Displayed overall | 99% | |
| | Scored tiers 1-10 | 985/1,000 = 98.5% | |
| | All tiers, including the unscored tier-0 diagnostic | 1,025/1,100 | |
| | Runtime | 156.602 seconds | |
| | Artifact size | 520 KB | |
| | Completion time shown by the UI | 2026-08-16 20:44:20 | |
|
|
| | Tier | Correct | |
| | --- | ---: | |
| | T0, unscored pure-multiplication diagnostic | 40/100 | |
| | T1-T9 | 100/100 on every tier | |
| | T10 | 85/100 | |
|
|
| The UI's 99% is the rounded display of the scored result, 985/1,000 = 98.5%. |
| The 1,025/1,100 count includes tier 0 and is 93.18% across all generated cases; |
| tier 0 does not enter the scored overall accuracy. The frontier is T9 because |
| T10 scored 85%, below the frontier threshold. |
|
|
| These hosted numbers were transcribed by the submitter from the completed SAIR |
| Playground UI. No public run ID or receipt URL was available. Revision |
| `16acb08ea46295ac7c45be697890fd99dbe8e5b5` was a later wording correction |
| with identical `model.py` and `weights.pt`; it was not the evaluated revision. |
|
|
| The weights were trained through state width L=512. The same tensor values then |
| passed an update-zero L=1024 qualification: |
|
|
| | Check | Result | |
| | --- | ---: | |
| | L=1024 screen, tiers 6-9, fixed and dynamic width | 64/64 for every tier and mode | |
| | L=1024 confirmation, tiers 6-9, fixed and dynamic width | 256/256 for every tier and mode | |
| | Primes below 64, fixed L=1024 | 40,954/40,954 | |
| | Primes below 64, dynamic L=32 | 40,954/40,954 | |
|
|
| A separate zero-training width screen used the same tensor values: |
|
|
| | Inference width | Tier | Fixed | Dynamic | |
| | ---: | ---: | ---: | ---: | |
| | 1024 | 8 | 64/64 | 64/64 | |
| | 1024 | 9 | 64/64 | 64/64 | |
| | 2048 | 9 | 64/64 | 64/64 | |
| | 2048 | 10 | 63/64 | 63/64 | |
|
|
| The tier-10 miss matters. These counts are development evidence from fixed |
| local case sets, not a proof of exactness. |
|
|
| Before publication, the packaged float32 inference path was also run through |
| the current official interface on 110 separately generated cases. It was deterministic and |
| scored 99/100 across tiers 1-10: 10/10 on tiers 1-9 and 9/10 on tier 10. Tier 0, |
| which is an unscored pure-multiplication diagnostic, was 6/10. This was a local |
| interface check, not a SAIR Playground result. |
|
|
| ## Artifact identity |
|
|
| | Field | Value | |
| | --- | --- | |
| | Parameters | 126,603 | |
| | Packaged inference width | 2,048 bits | |
| | Qualified source checkpoint | `d296b711bb6a7faaa1dd81e05478cfa75f11071c42a8c36fbf60e758ee7eb407` | |
| | Qualification receipt | `80948748a41183a809faf282600cc0f8343691b6cdb4bebaac4f1f468df95651` | |
| | Tensor digest | `7d1768ae1260f750e0a80ec93d98f86a80d441e479ce29e0a8e21fd098c742a3` | |
|
|
| `weights.pt` contains only the state dictionary, architecture fields, and |
| provenance. Optimizer, scheduler, and random-number-generator state were |
| removed. Full machine-readable identities and counts are in |
| `provenance.json`. |
|
|
| CUDA inference uses float32. On a 22-case non-edge precision check, BF16 and |
| float32 agreed on 21 outputs but differed on one tier-10 failure. Both versions |
| were wrong on that case, so this package keeps the precision used by the local |
| qualification instead of claiming BF16 decision safety. |
|
|
| ## Interface |
|
|
| The SAIR entry class is `model.MiniNeuralHorner`, with output base 2. Inputs |
| outside the packaged width and operand limits return `[0]` rather than invoking |
| an untested fallback. |
|
|
| Code and research record: https://github.com/Robby955/neural-horner |
|
|
| License: MIT. Copyright (c) 2026 Robert Sneiderman. |
|
|