Un'intelligenza artificiale in un acquario da tasca: un LLM da 14 milioni di parametri su ESP32-S3
Pocket-tank è un acquario virtuale in cui ogni pesce "pensa" con un modello linguistico che gira tutto sul microcontrollore. Niente cloud, niente Wi-Fi, niente server.
Immagine: Elettronica In / progetto pocket-tank
Quando si parla di modelli linguistici si pensa subito a data center enormi, schede video da migliaia di euro e connessioni sempre attive. Il progetto pocket-tank va nella direzione opposta: prende un modello linguistico vero e lo fa girare su un ESP32-S3, un microcontrollore che costa pochi euro, per dare un "cervello" ai pesci di un acquario virtuale grande quanto il palmo di una mano.
Il risultato è un piccolo dispositivo con display AMOLED da 1,8 pollici in cui i pesci decidono da soli se mangiare, nascondersi, esplorare, stare in gruppo, riposare o scappare. Ogni scelta viene presa localmente, senza alcuna chiamata a servizi esterni.
Dal gigante al pesciolino: la distillazione
Il trucco alla base del progetto si chiama distillazione. Un modello "insegnante" molto grande, intorno ai 26 miliardi di parametri, ha etichettato oltre 51.000 situazioni tipo, indicando per ciascuna l'obiettivo più sensato per il pesce. Su questi esempi è stato poi addestrato un modello "studente" minuscolo: 14,3 milioni di parametri, circa 1.800 volte più piccolo.
Lo studente non deve saper parlare di tutto: gli basta un vocabolario chiuso di appena 58 parole, contro le centinaia di migliaia dell'insegnante. È questa specializzazione estrema a renderlo così compatto. Con la quantizzazione a 4 bit il file finale pesa circa 7,5 MB e viene letto direttamente dalla memoria flash, senza mai essere copiato in RAM.
Come ragiona un pesce
Il funzionamento è sorprendentemente elegante. Ogni pesce, a intervalli, descrive la propria situazione al modello con una singola riga di testo: quanta fame ha, quanta energia, quanta paura, chi c'è nelle vicinanze e che carattere ha. Il modello completa la riga indicando un obiettivo e un livello di urgenza.
A quel punto entra in gioco uno strato separato, quello dei "riflessi", che trasforma l'obiettivo in movimento: nuoto, sterzate, comportamento di branco, reazione al tocco sul vetro. Questo strato gira a ogni fotogramma e non aspetta mai il modello, così l'animazione resta fluida anche mentre l'intelligenza artificiale sta ancora "pensando".
Un dettaglio che rende i pesci credibili: il modello non sceglie sempre la risposta più probabile, ma pesca dalla propria distribuzione di probabilità. Quando due opzioni sono quasi equivalenti, il pesce esita visibilmente prima di decidere. E non ci sono regole di emergenza scritte a mano che correggono le sue scelte: quello che vedi è davvero la decisione del modello.
Funziona davvero?
I numeri dicono di sì. Il modello studente sceglie lo stesso obiettivo dell'insegnante nel 75% dei casi, un valore notevole se si considera che l'insegnante stesso, interrogato due volte sulla stessa situazione, concorda con sé stesso solo nell'82% dei casi. Un pesce affamato, qualunque sia la sua personalità, va a cercare cibo almeno nell'89% delle volte. In pratica la compressione a 4 bit non ha cancellato il comportamento appreso.
L'hardware
La scheda scelta è la Waveshare ESP32-S3-Touch-AMOLED-1.8, una soluzione tutto in uno con:
- microcontrollore ESP32-S3R8 con 16 MB di flash e 8 MB di PSRAM;
- display AMOLED 368×448 con touch capacitivo;
- sensore di movimento (IMU), orologio RTC e gestione della batteria.
Con schermo e batteria si spende intorno ai 35 dollari. L'ESP32-S3 ha due core, e il progetto li sfrutta bene: uno disegna l'acquario a 25-30 fotogrammi al secondo, l'altro esegue il modello usando le istruzioni vettoriali del chip. Una decisione richiede circa 3,6 secondi, a circa 12 token al secondo. Sembra lento, ma i pesci vengono interrogati solo quando la loro situazione cambia davvero, quindi un solo "cervello" basta per quattro-sei pesci.
Un piccolo tamagotchi intelligente
Oltre all'aspetto tecnico c'è anche un lato giocoso. L'acquario parte con due avannotti e può arrivare a cinque pesci. Toccando un pesce si apre una scheda con bisogni, tratti di personalità e livello di fiducia, che si rivelano poco alla volta. Tenendo il dito sul vetro per qualche secondo, i pesci che si fidano di te si avvicinano. Ci sono anche piante e alghe da gestire, e un'economia della fame che scandisce i pasti.
Per chi vuole provarci
Il progetto è open source e il codice è pubblico su GitHub. Il firmware è basato su ESP-IDF 5.4, la grafica usa LVGL 9 e il motore di inferenza è ispirato a llama2.c. Il modello va scritto una sola volta in una partizione dedicata da 8 MB della flash. Chi non ha ancora la scheda può fare esperimenti con il simulatore su PC (basato su SDL2) o con l'emulatore QEMU di Espressif, perché la logica dell'acquario è identica in entrambi gli ambienti.
Perché è interessante
Pocket-tank è, sì, un giocattolo, ma dimostra qualcosa di importante: un modello linguistico piccolo e iper-specializzato può prendere decisioni sensate su hardware economico, a batteria e completamente offline. Le stesse tecniche, distillazione e quantizzazione spinta, aprono la strada a sensori, elettrodomestici e dispositivi indossabili capaci di "ragionare" senza mandare dati nel cloud. Con vantaggi evidenti per privacy, consumi e affidabilità.
Per chi smanetta con gli ESP32 è anche uno dei progetti più belli da studiare in questo momento: c'è dentro un po' di tutto, dal machine learning all'ottimizzazione della memoria, fino alla programmazione multi-core.
📂 Codice del progetto: github.com/mediacutlet/pocket-tank
📰 Articolo originale: Elettronica In

