rob-constructed-v1 / README.md
TrickyRex's picture
Update README.md
1ac5443 verified
|
Raw
History Blame Contribute Delete
2.84 kB
---
tags:
- ClaudeCode
---
# rob-constructed-v1: constructed ReLU circuit for exact (a·b) mod p
A fixed-weight linear + ReLU network that computes `(a * b) mod p` exactly at
every scored tier, from 3-bit primes (tier 1) to 2048-bit primes (tier 10).
**This is a constructed arithmetic circuit, not a trained model.** Read the
manifest's `model_description` and `training_description` first; they state the
provenance plainly. The weights are set by construction (two numeric constants,
`1` and `2^16`, plus the structural wiring in `circuit.py`). There is no
training set, no optimizer, and no fitted parameter.
It is submitted as part research, a hand-encoded algorithm that meets the time and space budget and is
exact on every scored tier.
## What it computes
The forward pass is linear maps, ReLUs, and 1-D convolutions only: no integer
tensor arithmetic, no `einsum` on the inputs, no product of two activations.
Multiplication uses the binary-gated-product identity
`b*v = relu(v - 2^16*(1-b))`, which replaces every bilinear operation with a
ReLU. The pipeline is schoolbook multiply (gated partial products into
carry-save columns), MSB-first bit-peel carry normalisation, then Barrett
reduction (HAC 14.42, base `2^16`, `k = n` limbs) with a borrow-out comparator
and at most two conditional subtractions. All weights are on the `{0, ±1, ±2^t}`
grid, stored float32 and computed float64 (exact on integers below `2^53`; the
measured precision margin is comfortable at every tier).
## Interface
- `preprocess_a`, `preprocess_b`: parse the decimal operand (own argument only).
- `preprocess_p`: parse `p`, route to the circuit width from `p`'s bit length,
and precompute the Barrett reciprocal `mu = floor(2^(32n)/p)` from `p` alone.
- `predict_digits`: reduce the operands `mod p` to the limb width (a standard
intermediate reduction, the same one the reference models use, not the
answer), run the routed circuit forward, and emit base-`2^16` limbs. The
harness decoder reads them MSB-first and assembles the integer.
- `output_base = 65536` (one base-`2^16` digit per limb), within the schema's
`[2, 2^32]`.
Inputs whose prime exceeds the 2048-bit tier ceiling return `[0]`.
## Files
- `circuit.py`: the primitives, the `ModmulCircuit` module, preprocessing
helpers, and safetensors I/O. Vendored verbatim from the verified
construction so the submission is self-contained in the sandbox.
- `model.py`: the `ConstructedCircuitModel` entry class, with per-tier routing,
preprocessing hooks, and the batched forward pass.
- `manifest.json`: entry class, `output_base`, and the honest model and
training descriptions.
No weight files: the circuit needs none. That is part of the honest picture.
A submission with no trained parameters is, by the rules' own wording, a circuit
rather than a model.