Depuis le premier jour
Journal chronologique. Ce qui a été construit, mesuré, encore ouvert. Là où quelque chose est cassé, en cours ou hors-périmètre — c'est dit clairement.
Un moteur d'inférence C99, en quête d'un modèle
Le moteur d'abord — un petit programme qui exécute une IA ternaire sur microcontrôleur bare-metal. C99 pur, zéro heap, zéro float dans le matmul. Parité bit-exacte à epsilon FP32.
Atome lm naît — trois chemins, par contrainte
La maquette 4-chemins retirée au profit d'un alignement strict avec atome_block_t. Premier commit : 42 tests, tokenizer octet, exporteur ATOME01. ~60K paramètres, ~15,1 Ko sur disque.
Le firmware Cortex-M3 boote sous QEMU — parité tenue
Cross-compile pour Cortex-M0 / M3 / M4 / M4F / M7. Code moteur : 2,6–2,8 Ko sur les cinq. Parité bout-en-bout max |Δ| = 3,7×10⁻⁷.
Sampling, REPL, premier checkpoint entraîné
Ajout de temperature / top_p / top_k. Premier checkpoint : 800 pas sur TinyStories, bpb 3,48, perplexité 11,16.
Résultat frontier — A/B contre vanilla GPT à 60K
Médiane trois seeds à 3 000 pas : Atome 6,31 ppl vs vanilla-60K 8,12 ppl vs vanilla-6K 13,10 ppl. +22 % à params égaux · +52 % à flash égale.
Ablation par chemin — la conv porte le gain
Sans conv +20 %, sans SSM +6 %, sans attention +4 %. À 60K sur TinyStories, la conv porte l'essentiel du travail.
Bug d'état SSM corrigé — 48/48 bit-exact
Correctif en quatre lignes (memset en tête de predict_next). Parité QEMU multi-token : 23/48 → 48/48 bit-exact.
Modèle 944K paramètres entraîné — vraie prose TinyStories
944 640 params (d=256, 8 couches) sur TinyStories complet. 30 000 pas. Val loss 1,0545, ppl 2,87. ~3 h 20, ~2 $. 16/16 QEMU ↔ Python bit-exact.
A/B vanilla à 944K — l'argumentaire se resserre à l'échelle
Vanilla GPT FP32 à 950K : val loss 0,9337, ppl 2,54 — bat Atome 944K de 11,4 % loss / 11,5 % ppl. Le pari est le régime sub-1M. Multi-seed à venir.
Vérification pré-lancement · 944K QEMU revérifié
Trois classifieurs internes ré-évalués : intention-commande 100 % · lecture-suspecte 91,7 % · bucket-intention 100 %. Argmax C = Python. 4 / 4 bit-exact sur 944K. 146 tests verts.
La suite
Silicium réel. Flasher le firmware sur Nucleo-F411RE ou RP2040.
Multi-seed à 944K. Trois entraînements supplémentaires.
Chemin d'inférence Q15. Divise la BSS par deux, multiplie la vitesse M0/M3 par 5–10×.
Distillation domaine étroit.