Aller au contenu
ModelPrésentéExterne
Télécharger

Esp32 Markov Mixer 973k

We wanted to see whether a language model made mostly from low-rank Markov lookups, two tiny recurrent heads, and a little nonlinear context mixing could fit on an ESP32 and still say recognizably different things....

TypeCheckpointVersionRevision e07318dCClasse

Source du modèle

Type
Checkpoint, Text model
Taille du fichier
11,2 MB
Version
vRevision e07318d
Mis à jour
3 oct. 2026
Téléchargements
0
Tâches
Génération de texte
Source
Hugging Face

Description de la source

ESP32 Markov Mixer, 973k parameters

We wanted to see whether a language model made mostly from low-rank Markov lookups, two tiny recurrent heads, and a little nonlinear context mixing could fit on an ESP32 and still say recognizably different things. It can.

This repository is the exact model artifact from that experiment. It is a demonstration, not a useful general-purpose assistant or a supported model release.

The bare-metal Rust inference engine and serial TUI are published at arm64be/esp32-serial-tui.

What is here

FileDescription
release-binding-allparam-r8-30ep.ptPyTorch checkpoint with 973,471 total and trainable parameters
release-binding-allparam-r8-30ep.q8mmDeployed fixed-point model, tokenizer included, 1,075,652 bytes
release-binding-allparam-r8-30ep.jsonInteger format, tensor layout, quantization, and architecture manifest
tokenizer.jsonLowercasing 4,096-token byte-level BPE tokenizer
release-binding-run-notes.mdTraining, validation, export, and release-gate notes

The architecture uses a 192-token context, eight direct Markov lags at rank 21, four hashed context features, separate 32-hidden-unit intent and grammar GRUs, a 64-unit context MLP, and a 48-unit gate. It has no positional embeddings, prompt-copy path, shared recurrent trunk, feature mixer, or rank normalization.

The integer export uses square-companded signed int8 lookup tables, per-row signed int8 matrices, Q10 int16 activations, and integer accumulators. In a 1,024-context oracle comparison against the float checkpoint, it reached 98.24% top-1 agreement; fixed and float greedy decoding matched on all release prompts.

What it says

Greedy decoding on the ESP32 produced:

tell me a story about a fish named bob
-> Bob was a little fish who was very happy. He was so happy to see the little bird.

what is the capital of france?
-> Hello, the little boy's mom and dad are glad.

hi
-> Hello. I am a little boy.

The capital answer is plainly wrong. The release gate was narrower: three different prompts had to yield distinct English instead of collapsing into the same tree-and-ball story. The final checkpoint was corrected for those three prompt families using 120 hand-authored examples and strong replay against the pre-correction checkpoint.

Training snapshot

The correction ran for 30 full epochs over 114 training records, with AdamW, peak learning rates of 2e-4 for context computation and 1e-4 for lookup and output parameters, 1e-4 weight decay, a 5% warmup, and replay KL weight 8.0. Its six-record correction validation result was CE 2.7134 / PPL 15.08; a broader 60-batch mixed validation was CE 2.7845 / PPL 16.19.

Prompt format

Text is normalized to lowercase and wrapped as:

<|user|>
{prompt}
<|assistant|>

Greedy decoding is intentional. Sampling experiments reduced some repetition but damaged prompt binding on this model.

Checksums

491047766597fdb8375fa7bde4fe3d069858a6305c9fcac9464d022bcc20e518  release-binding-allparam-r8-30ep.pt
c9b2d7102c72b3ba61d14d47fff85906d28e69446114f71ff1eba6c922df0b30  release-binding-allparam-r8-30ep.q8mm
ea17b665872be0d59d485b54d056f39b84b2cd7bfc18a86c408a8c219ed9bad1  release-binding-allparam-r8-30ep.json
4d06b372a8e7ba5f5b015c3901cbc8a2cdac8d248e3e7275e08b27899e76946b  tokenizer.json

Limitations

This model is tiny, narrow, repetitive, factually unreliable, and strongly shaped by TinyStories-like data. It should not be used for decisions, factual questions, or safety-critical tasks. The point is the constrained architecture and embedded execution, not model quality.

Sources

1 source
Hugging FacePrincipalVersion e07318ded88d322c20a0185b02f654efa1eb14a7
huggingface.co/arm64be/esp32-markov-mixer-973k/tree/e07318ded88d322c20a0185b02f654efa1eb14a7

Vérifié 3 oct.

Artefacts du modèle

1 artefact

release-binding-allparam-r8-30ep.pt

pt · 11,2 MB · SHA-256 491047766597…e518 · Hugging Face

Download file

Extraits de sources

2 extraits

--- library_name: pytorch pipeline_tag: text-generation tags: - esp32 - markov-chain - recurrent - tiny-language-model - int8 --- # ESP32 Markov Mixer, 973k parameters We wanted to see whether a language model made mostly from low-rank Markov lookups, two tiny recurrent heads, and a little nonlinear context mixing could fit on an ESP32 and still say recognizably different things. It can. This repository is the exact model artifact from that experiment. It is a demonstration, not a useful general-purpose assistant or a supported model release. The bare-metal Rust inference engine and serial TUI are published at [arm64be/esp32-serial-tui](https://github.com/arm64be/esp32-serial-tui). ## What is here | File | Description | | --- | --- | | `release-binding-allparam-r8-30ep.pt` | PyTorch checkpoint with 973,471 total and trainable parameters | | `release-binding-allparam-r8-30ep.q8mm` | Deployed fixed-point model, tokenizer included, 1,075,652 bytes | | `release-binding-allparam-r8-30ep.json` | Integer format, tensor layout, quantization, and architecture manifest | | `tokenizer.json` | Lowercasing 4,096-token byte-level BPE tokenizer | | `release-binding-run-notes.md` | Training, validation, export, and release-gate notes | The architecture uses a 192-token context, eight direct Markov lags at rank 21, four hashed context features, separate 32-hidden-unit intent and grammar GRUs, a 64-unit context MLP, and a 48-unit gate. It has no positional embeddings, prompt-copy path, shared recurrent trunk, feature mixer, or rank normalization. The integer export uses square-companded signed int8 lookup tables, per-row signed int8 matrices, Q10 int16 activations, and integer accumulators. In a 1,024-context oracle comparison against the float checkpoint, it reached 98.24% top-1 agreement; fixed and float greedy decoding matched on all release prompts. ## What it says Greedy decoding on the ESP32 produced: ```text tell me a story about a fish named bob -> Bob was a little fish who was very happy. He was so happy to see the little bird. what is the capital of france? -> Hello, the little boy's mom and dad are glad. hi -> Hello. I am a little boy. ``` The capital answer is plainly wrong. The release gate was narrower: three different prompts had to yield distinct English instead of collapsing into the same tree-and-ball story. The final checkpoint was cor...

Source context: 0 downloads · 1 likes · Pipeline text-generation · Library pytorch · Repo arm64be/esp32-markov-mixer-973k