“Small model” is a slippery phrase, and most comparison articles dodge the one question that matters for embedded work: does it actually fit the chip's memory? This post puts four well-known options side by side against real microcontroller budgets. The numbers for Atome come from its public measured table; the others are taken from each project's own sizing and from the hardware they were designed for.« Petit modèle » est une expression glissante, et la plupart des comparatifs esquivent la seule question qui compte pour l'embarqué : tient-il réellement dans la mémoire de la puce ? Cet article met quatre options connues côte à côte face à de vrais budgets de microcontrôleurs. Les chiffres d'Atome proviennent de sa table mesurée publique ; les autres sont issus du dimensionnement propre à chaque projet et du matériel pour lequel ils ont été conçus.
The contendersLes concurrents
| Stack | Smallest realistic footprint | Target hardware | Fits a $2 MCU? |
|---|---|---|---|
| TinyLlama 1.1B (4-bit) | ~550 MB | GPU / phone | ✗ |
| llama2.c (Stories260K, FP32) | ~1 MB+ | Pi / desktop | ✗ on MCU SRAM |
| TinyMaix / TFLite-Micro | tens–hundreds KB | MCU (vision/keyword) | ✓ — but not LLMs |
| Atome lm | ~42 KB flash / ~14 KB RAM | MCU (byte LM) | ✓ |
| Pile | Empreinte minimale réaliste | Matériel cible | Tient sur un MCU à 2 $ ? |
|---|---|---|---|
| TinyLlama 1.1B (4-bit) | ~550 MB | GPU / phone | ✗ |
| llama2.c (Stories260K, FP32) | ~1 MB+ | Pi / desktop | ✗ on MCU SRAM |
| TinyMaix / TFLite-Micro | tens–hundreds KB | MCU (vision/keyword) | ✓ — but not LLMs |
| Atome lm | ~42 KB flash / ~14 KB RAM | MCU (byte LM) | ✓ |
Reading the table honestlyLire le tableau honnêtement
TinyMaix is excellent engineering — but it runs convolutional networks and keyword spotters, not autoregressive language models. If your task is wake-word detection or image classification, it is the right tool and Atome is not. llama2.c is a beautiful single-file transformer, but the checkpoints people actually run need a megabyte or more of working memory, which means a Raspberry Pi rather than an STM32. TinyLlama is, despite the name, a GPU-class model: wonderful on a phone, impossible on a Cortex-M.TinyMaix est de l'excellente ingénierie — mais il exécute des réseaux convolutifs et des détecteurs de mots-clés, pas des modèles de langue autorégressifs. Si votre tâche est la détection de mot de réveil ou la classification d'images, c'est le bon outil et Atome ne l'est pas. llama2.c est un magnifique transformeur en un seul fichier, mais les points de contrôle réellement exécutés réclament un mégaoctet ou plus de mémoire de travail, ce qui implique un Raspberry Pi plutôt qu'un STM32. TinyLlama est, malgré son nom, un modèle de classe GPU : superbe sur un téléphone, impossible sur un Cortex-M.
Atome lm is the narrow case that fills the gap the others leave: an actual byte-level language model whose ternary weights pack into tens of kilobytes of flash and whose heap-free engine fits the SRAM of a cents-class part. It is not better than TinyLlama at language; it is the only one of the four that runs on the chip at all.Atome lm est le cas particulier qui comble la lacune laissée par les autres : un véritable modèle de langue au niveau de l'octet dont les poids ternaires se compriment en quelques dizaines de kilooctets de flash et dont le moteur sans tas tient dans la SRAM d'un composant à quelques centimes. Il n'est pas meilleur que TinyLlama en langue ; c'est le seul des quatre à seulement tourner sur la puce.
Where Atome is not the answerLà où Atome n'est pas la réponse
Two honest disqualifiers. If you have a Raspberry Pi, an NPU or a phone, you have megabytes to gigabytes — use a larger model and get better quality; Atome's niche is specifically the place those do not reach. And at scale Atome loses: when you grow it to about 944K parameters, a vanilla FP32 transformer beats it by roughly 11% in perplexity. Atome's bet is deliberately the sub-1M, microcontroller-class regime, not open-domain quality.Deux disqualifications honnêtes. Si vous avez un Raspberry Pi, un NPU ou un téléphone, vous disposez de mégaoctets à gigaoctets — prenez un modèle plus grand et gagnez en qualité ; la niche d'Atome est précisément là où ceux-ci n'arrivent pas. Et à l'échelle, Atome perd : porté à environ 944K paramètres, un transformeur FP32 classique le bat d'environ 11 % en perplexité. Le pari d'Atome est délibérément le régime sous le million de paramètres, classe microcontrôleur, et non la qualité en domaine ouvert.
How to chooseComment choisir
- Need vision or keyword spotting on an MCU? Use TinyMaix / TFLite-Micro.
- Have a Raspberry Pi or a phone? Run llama2.c or a quantized small LLM and enjoy the extra quality.
- Need an actual byte language model on a bare-metal Cortex-M, offline, heap-free? That is Atome's lane.
- Besoin de vision ou de détection de mots-clés sur un MCU ? Utilisez TinyMaix / TFLite-Micro.
- Vous avez un Raspberry Pi ou un téléphone ? Faites tourner llama2.c ou un petit LLM quantifié et profitez du gain de qualité.
- Besoin d'un véritable modèle de langue au niveau de l'octet sur un Cortex-M nu, hors ligne, sans tas ? C'est le couloir d'Atome.
The right comparison is never “which tiny model is best” in the abstract — it is “which one fits my chip and my task.” For a $2 microcontroller running a narrow language task with no network, Atome is currently the only one of these four that loads at all.La bonne comparaison n'est jamais « quel petit modèle est le meilleur » dans l'abstrait — c'est « lequel tient sur ma puce et ma tâche ». Pour un microcontrôleur à 2 $ exécutant une tâche de langue étroite sans réseau, Atome est actuellement le seul des quatre à seulement se charger.
Why parameter count is a misleading specPourquoi le nombre de paramètres est une spec trompeuse
Comparison tables love parameter counts because they are a single number, but for embedded work they hide the thing that decides feasibility. Two models with the same parameter count can have wildly different memory footprints depending on weight precision, tokenizer size, sequence length and cache strategy. A 1M-parameter FP32 model is 4 MB of weights; a 1M-parameter ternary model is a few hundred kilobytes. The vocabulary matters too: a model with a 32,000-token BPE vocabulary ships a large embedding table, while Atome's byte tokenizer has just 256 entries and no separate vocabulary file. When you compare tiny LLMs, compare bytes in RAM and flash, not parameters.Les tableaux comparatifs adorent les nombres de paramètres parce que c'est un chiffre unique, mais pour l'embarqué ils masquent ce qui décide de la faisabilité. Deux modèles au même nombre de paramètres peuvent avoir des empreintes mémoire radicalement différentes selon la précision des poids, la taille du tokeniseur, la longueur de séquence et la stratégie de cache. Un modèle FP32 d'1M de paramètres, ce sont 4 Mo de poids ; un modèle ternaire d'1M de paramètres, quelques centaines de kilooctets. Le vocabulaire compte aussi : un modèle avec un vocabulaire BPE de 32 000 tokens embarque une grande table d'embedding, alors que le tokeniseur d'octets d'Atome n'a que 256 entrées et aucun fichier de vocabulaire séparé. Quand vous comparez des petits LLM, comparez les octets en RAM et en flash, pas les paramètres.
The role each tool playsLe rôle de chaque outil
- TinyLlama and other 1B-class models are for phones, single-board computers and GPUs — anywhere with gigabytes. They are not in the microcontroller conversation.
- llama2.c is a superb teaching implementation and runs nicely on a Raspberry Pi; on a bare MCU its usual checkpoints overflow SRAM.
- TinyMaix and TFLite-Micro own the MCU space for vision and keyword spotting, but they are not language models.
- Atome is the byte-level language model for the bare-metal MCU niche — narrow tasks, offline, heap-free.
- TinyLlama et autres modèles de classe 1B sont pour les téléphones, les ordinateurs monocartes et les GPU — partout où il y a des gigaoctets. Ils ne font pas partie de la conversation microcontrôleur.
- llama2.c est une superbe implémentation pédagogique qui tourne bien sur un Raspberry Pi ; sur un MCU nu, ses points de contrôle habituels débordent la SRAM.
- TinyMaix et TFLite-Micro dominent l'espace MCU pour la vision et la détection de mots-clés, mais ce ne sont pas des modèles de langue.
- Atome est le modèle de langue au niveau de l'octet pour la niche du MCU nu — tâches étroites, hors ligne, sans tas.
Seen this way, the four are not really competitors; they occupy different rungs of the same ladder. The mistake the comparison is meant to correct is treating a phone-class model as if it were an embedded one. Once you put each on the rung where it belongs, choosing is easy: start from your hardware's memory and your task's breadth, and the right tool is usually obvious.Vus ainsi, les quatre ne sont pas vraiment concurrents ; ils occupent des barreaux différents de la même échelle. L'erreur que ce comparatif veut corriger est de traiter un modèle de classe téléphone comme s'il était embarqué. Une fois chacun placé sur le barreau qui lui revient, le choix est facile : partez de la mémoire de votre matériel et de l'étendue de votre tâche, et le bon outil est généralement évident.
Total cost of ownership, not just model sizeCoût total de possession, pas seulement la taille du modèle
When you compare these stacks for a real product, model size is only one line in a longer budget. A cloud-backed approach adds recurring inference fees, a connectivity requirement, and a privacy and compliance burden that grows with the sensitivity of the data. A Raspberry Pi-class on-board computer adds unit cost, power draw, boot time and a full operating system to maintain and secure. A bare-metal microcontroller running Atome adds essentially none of these: the model is part of the firmware you were already shipping, there is no per-inference cost, no network dependency, and no operating system to patch. For a high-volume device, those recurring and per-unit savings often dwarf any difference in raw model quality, which is why the right comparison weighs the whole system, not just the benchmark.Quand vous comparez ces piles pour un vrai produit, la taille du modèle n'est qu'une ligne d'un budget plus long. Une approche adossée au cloud ajoute des frais d'inférence récurrents, une exigence de connectivité, et une charge de confidentialité et de conformité qui croît avec la sensibilité des données. Un ordinateur embarqué de classe Raspberry Pi ajoute un coût unitaire, une consommation, un temps de démarrage et un système d'exploitation complet à maintenir et sécuriser. Un microcontrôleur nu exécutant Atome n'ajoute pratiquement rien de tout cela : le modèle fait partie du firmware que vous livriez déjà, il n'y a aucun coût par inférence, aucune dépendance réseau, et aucun système d'exploitation à corriger. Pour un appareil à fort volume, ces économies récurrentes et par unité éclipsent souvent toute différence de qualité brute du modèle, et c'est pourquoi la bonne comparaison pèse le système entier, pas seulement le benchmark.
Bottom lineEn résumé
For a $2 microcontroller running a narrow language task with no network, Atome is currently the only one of these four stacks that loads at all — not because it is the smartest model, but because it is the one designed for that memory budget. TinyLlama belongs on phones, llama2.c on a Raspberry Pi, and TinyMaix on vision and keyword tasks. Score the candidates by bytes in RAM and flash rather than parameter count, weigh the whole system cost rather than the benchmark alone, and the choice for a bare-metal MCU usually makes itself.Pour un microcontrôleur à 2 $ exécutant une tâche de langue étroite sans réseau, Atome est actuellement le seul des quatre à seulement se charger — non parce qu'il est le modèle le plus intelligent, mais parce qu'il est conçu pour ce budget mémoire. TinyLlama a sa place sur les téléphones, llama2.c sur un Raspberry Pi, et TinyMaix sur la vision et les mots-clés. Notez les candidats en octets de RAM et de flash plutôt qu'en nombre de paramètres, pesez le coût du système entier plutôt que le seul benchmark, et le choix pour un MCU nu se fait généralement de lui-même.
Frequently asked questionsQuestions fréquentes
What is the best LLM to run on an ESP32 or STM32?Quel est le meilleur LLM à faire tourner sur un ESP32 ou un STM32 ?
For a true language model that fits MCU memory, Atome lm is purpose-built for it; for vision or keyword tasks use TinyMaix. Large models like TinyLlama do not fit microcontroller SRAM.Pour un véritable modèle de langue qui tient dans la mémoire d'un MCU, Atome lm est conçu pour cela ; pour la vision ou les mots-clés, utilisez TinyMaix. Les grands modèles comme TinyLlama ne tiennent pas dans la SRAM d'un microcontrôleur.
Is TinyLlama small enough for a microcontroller?TinyLlama est-il assez petit pour un microcontrôleur ?
No. TinyLlama is 1.1 billion parameters — about 550 MB even at 4-bit — which is thousands of times larger than the SRAM of any microcontroller. It targets phones and GPUs.Non. TinyLlama compte 1,1 milliard de paramètres — environ 550 Mo même en 4 bits — soit des milliers de fois la SRAM de n'importe quel microcontrôleur. Il vise les téléphones et les GPU.
← All posts← Tous les articles Source & data on GitHubCode & données sur GitHub