| --- |
| license: apache-2.0 |
| language: |
| - en |
| pipeline_tag: text-generation |
| tags: |
| - fixed-point |
| - integer-arithmetic |
| - deterministic |
| - reproducibility |
| --- |
| |
| # bob-int |
|
|
| The weights and every file in this repository are licensed |
| **Apache-2.0**. The bob name and marks are not part of that grant. |
|
|
| Model: bob 2-ck_13000 (bob-talk) |
| |
| A small integer language model. The same, every time. |
| |
| Try it: **https://bob-talk.org** ; the model in this repository is the |
| model answering that page, verifiable by digest (below). |
| |
| Bob exists because I asked the question: "If fixed point buys exactness, can exact multithreading/parallelism then provide speed?" |
| I'm still working on that question. This project was inspired by Norm Winningstead, and my own dumb questions. |
| Bob has demonstrated the ability to resume his own training, cross-ISA and byte-exact reproducible. I do not know if Bob's training model |
| can do this on *every* possible combination- and make no claims to his ability outside of what I have already demonstrated. |
| |
| ## What is in this repository |
| |
| ```text |
| ck_13000.weights.bin the final weights, training step 13,000 |
| sha256 53ae7609f22e580ac1d67ad1995dfc2d87c0ebcd5f60f3ab7136345f502c2890 |
| ck_13000.opt.bin the optimizer state at the same step, so the |
| trajectory can be resumed, not only replayed |
| registration/exponents.json the registered fixed-point exponents and bit |
| widths for every activation and gradient site |
| registration/width-sites.json the accumulator width registrations |
| registration/init/ the initial weights and ordering- the |
| trajectory is replayable from step 0 |
| SHA256SUMS digests for every file above |
| ``` |
| |
| ## The property these files carry |
|
|
| Every number in training and inference is fixed-point integer |
| arithmetic under a registered contract: each site has a registered |
| exponent and width, and arithmetic that would leave its registration |
| **refuses**- it stops with a named site and an exit code rather than |
| saturating or wrapping silently. |
|
|
| Because the arithmetic is integer, results do not depend on |
| floating-point summation order. The digest of the reply tokens for a |
| given (prompt, seed, effort) is the same on every conforming build. |
| Four pre-published examples with their digests are on |
| https://bob-talk.org and embedded in its page source. |
|
|
| Two portability results are in the project record, each stated no |
| wider than its measurement: |
|
|
| **bob 2's own training** (the weights in this repository) was saved |
| mid-run and resumed on different rented machines across two GPU |
| generations of one vendor, with checkpoint digests matching at the |
| joints. All of bob 2's GPU lineages are one vendor; no cross-vendor |
| claim is made for this trajectory. |
|
|
| **A separate 80-step synthetic trial (2026-08-17, not these weights)** |
| ran the same integer training on an Apple M4 via Metal (arm64, macOS) |
| and a Pascal-era NVIDIA GTX 1070 via Vulkan (x86_64, Linux)-> produced |
| byte-identical weights AND optimizer state- sha256 |
| `cddab458c1e2e8b9…` / `436114216b977be2…`- hashed independently on |
| each machine. The two devices also made byte-identical refusal |
| decisions: the enforcement machinery itself is deterministic across |
| vendors. The trial is synthetic and unregistered; it demonstrates the |
| arithmetic contract's portability, not this model's history. |
| |
| I know of no shipped system combining an end-to-end integer training |
| loop with integer optimizer state, overflow semantics that refuse with |
| a named site and typed exit, and demonstrated mid-run save-and-resume |
| with matching digests- resting on a documented 2026-08-17 survey of |
| eleven named systems: unoccupied as of the search date, not |
| impossible, not permanent. Please direct me toward prior art if available. |
| |
| ## Verify this is the model behind bob-talk.org |
| |
| ``` |
| sha256sum ck_13000.weights.bin |
| # 53ae7609f22e580ac1d67ad1995dfc2d87c0ebcd5f60f3ab7136345f502c2890 |
| ``` |
| |
| That digest is compiled into the public server, which refuses to start |
| if its embedded weights do not hash to it. Ask the live page |
| (POST /ask, `{"prompt": "Alice was", "seed": "7"}`) and compare the |
| reply digest against the published table on the page. |
| |
| ## Format |
| |
| Weights are raw little-endian integer tensors in the registered |
| layout; `registration/exponents.json` gives each site's fixed-point |
| interpretation. This is not a transformers/safetensors checkpoint and |
| will not load with `from_pretrained`. Geometry: d_model 512, 8 layers, |
| 8 heads, head_dim 64, d_mlp 2048, context 8192, vocab 8192; parameter |
| count 33,608,704 with the learned position table (proved at both ends |
| of the pipeline; receipts in the project record). |
| |
| Inference code: [TBD - LIVE GH REPO NOT RELEASED; https://bob-talk.org/ for live inference] |
| |
| ## What is NOT claimed |
| |
| bob 2 is deterministic in the sense stated above. He is not thereby |
| accurate, clever, or safe, and no such claim is made. He is small |
| (33.6M parameters), his prose is what a 33.6M-parameter model's prose |
| is, and the property I claim to be interesting is the arithmetic, |
| not the model's vocabulary. |
| |
| ## Provenance |
| |
| Trained August of 2026 by f32. Training step 13,000; two legs; the enforcement |
| regime is part of the record (one leg ended in a registered disagreement event on a |
| named site; the refusal machinery was demonstrated live, then the |
| registration corrected and the run completed). |
| |