{ "architecture": "PLE", "format": { "magic_ascii": "PLE\\0", "magic_le_hex": "0x00454c50", "version": 1, "header_bytes": 56, "flags": { "TIED_HEAD": false } }, "config": { "input_vocab": 8057, "output_vocab": 854, "d_model": 128, "n_layers": 6, "n_heads": 4, "ffn_hidden": 384, "ple_dim": 128, "seq_len": 128, "rope_theta": 10000.0 }, "vocabulary": { "note": "asymmetric: the model reads a BPE vocabulary and writes a separate, smaller output alphabet of 854 classes, which includes punctuation and specials, so the output head is its own tensor rather than a view of the embedding", "bpe_entries": 7338, "word_rows_appended": 719, "input_vocab_total": 8057, "output_classes": 854, "output_classes_reusing_a_bpe_id": 135, "input_encoding": "ASCII only; non-ASCII input is refused rather than encoded differently from the reference tokenizer" }, "parameters": { "ple_table": 6187776, "tok_emb": 1031296, "output_head": 109312, "core": 1575424, "total": 8903808 }, "quantization": { "weights": "int4", "group_size": 128 }, "runtime": { "weights_staged_int8": "per-position core and the untied output head, in PSRAM", "activations": "int8, quantized per staged matvec", "sram": "float scratch buffers and RMSNorm vectors", "psram": "staged core, staged head, KV cache", "flash": "PLE table and token embedding, memory-mapped" }, "measured": { "unit": "an output piece is one emitted class; punctuation is a class. Over the benchmark prompt set, 253 pieces render as 213 readable words.", "serial_only": { "ms_per_piece": 60.25, "pieces_per_second": 16.6, "readable_words_per_second": 13.97 }, "with_oled": { "ms_per_piece": 88.83, "pieces_per_second": 11.26, "readable_words_per_second": 9.48, "added_ms_per_piece": 28.58 }, "ms_per_forward": 49.6, "method": "scripts/benchmark_device.py, eight fixed prompts, two passes per mode, spread under 0.1%, same weights and build switches apart from the display, generated text identical in both modes", "common": { "staged_tensors": 44, "scratch_sram_bytes": 20940, "norm_vectors_in_sram": 20, "sram_fallbacks": 0, "build": "-O3", "date": "2026-08-02" } }, "device_fingerprint_fnv1a": "e602146b", "files": { "model.bin": { "sha256": "1359a1cb74de4143d630c2c192990de814cd47255bcdfa9cc135f07ef0a39fc4", "bytes": 4600186, "license": "MIT" }, "tokenizer.json": { "sha256": "0ad085811c949f35c5f5f15b555f2ff2d46ec1ec94a1650552416d06aaa19ee2", "bytes": 491735, "license": "MIT" }, "vocab.json": { "sha256": "5a16d6224abf03265d69ebcccf121c8f8d2c222bfedd8274acbc0bbbe13e4eb7", "bytes": 50494, "license": "MIT" }, "layout.json": { "sha256": "15036c5ee2b23b9b35404ef6422cb788bbede8cf2c269bae35d4dbf9a48a0b90", "bytes": 5142, "license": "MIT" } }, "weights_license": "MIT", "tokenizer_license": "MIT", "source_checkpoint": { "name": "v5-L6-s0.pt", "distributed": false, "sha256": "bad2cfb6627dbde6893b11cd7e773ec96f1d8c36bf6d3a5d36845f9edc5f0ffb" }, "training_data": { "dataset": "private question and answer corpus written for this project", "redistributed": false, "note": "the corpus, the checkpoints and the evaluation sets are not distributed. The weights and the inference assets in this repository are, which is why the vocabulary files are here: without them the output classes cannot be turned back into words or fed forward." }, "hardware": { "board": "ESP32-S3", "flash_mb": 16, "psram_mb": 8, "sram_kb": 512, "model_partition_offset": "0x110000" } }