Un esempio di language model progettato per processori a 8 bit dimostra quanto l’intelligenza artificiale possa essere adattata a vincoli estremi di memoria e CPU. L’approccio utilizzato dall’autore del progetto Z80-μLM usa pesi quantizzati a 2-bit, inferenza interamente integer e strutture dati compatte per predisporre la generazione di testo carattere-per-carattere su uno storico chip Z80 con 64 KB di RAM.
Z80-μLM esplora un confine affascinante: quanto può essere piccolo un modello linguistico pur mantenendo una “personalità” riconoscibile? Il progetto offre interazione conversazionale su un processore Z80 a 4MHz con un binario di circa 40KB, dimostrando che l’AI può esistere anche su macchine vintage.
L’input è codificato tramite un sistema a trigrammi che mappa il testo in 128 bucket, migliorando la tolleranza ai refusi e riducendo la dipendenza dall’ordine delle parole. Il codice di inferenza sfrutta registri e coppie a 16 bit per accumulare con stabilità numerica, mentre i pesi sono impacchettati 4 per byte per minimizzare l’ingombro.
Cos’è il chip Z80
Lo Zilog Z80 è un microprocessore a 8 bit, introdotto nel 1976, che ha avuto un ruolo fondamentale nella storia dell’informatica. Progettato per essere compatibile a livello di codice con l’Intel 8080, permetteva di eseguire gli stessi programmi senza modifiche, offrendo però un set di istruzioni più ricco ed efficiente.
Grazie al basso costo, alla versatilità e alle prestazioni adeguate per l’epoca, lo Z80 è stato ampiamente utilizzato in computer storici come Sinclair ZX80, ZX81 e ZX Spectrum, oltre che in numerosi sistemi embedded. La sua longevità e popolarità sono tali che, anche dopo il ritiro ufficiale, esistono oggi cloni moderni open source che ne mantengono viva l’eredità tecnologica.
Nel contesto del progetto Z80-μLM, Z80 non è solo una piattaforma di esecuzione, ma il vincolo progettuale centrale che definisce architettura, obiettivi e valore dell’intero lavoro. È importante perché rappresenta uno dei limiti hardware più estremi su cui sia possibile far girare qualcosa che assomigli, anche lontanamente, a un modello conversazionale:
- CPU a 8 bit a 4 MHz
- 64 KB di RAM totali
- assenza di floating point, cache e acceleratori
- set di registri minimo, con aritmetica efficiente solo a 8 e 16 bit
In questo scenario, Z80-μLM dimostra che l’idea di “AI” non è legata alla potenza bruta, ma alla rappresentazione dei dati e all’efficienza degli algoritmi. Ogni scelta del progetto nasce direttamente dalle caratteristiche (e dai limiti) dello Z80.
Che cosa implementa il modello
Lo Z80 diventa una “prova concettuale vivente”: se un microprocessore del 1976 può eseguire un micro language model con una forma di “personalità”, allora molte assunzioni moderne su memoria, potenza e complessità possono essere ampiamente ridimensionate.
Dal punto di vista del retrocomputing, il progetto è altrettanto significativo in quanto rivaluta lo Z80 come piattaforma computazionale completa, non solo storica; mostra quanto fosse ben progettata la sua architettura, ancora sfruttabile oggi; collega il mondo dei microcomputer classici con quello dei modelli neurali moderni.
Z80-μLM poggia il suo funzionamento su di una rete autoregressiva che, come accennato in precedenza, genera output un carattere alla volta (mappa a un neurone per ogni carattere della charset). L’attivazione tra layer è realizzata con ReLU e tutta la matematica è su interi a 16 bit, evitando operazioni in virgola mobile.
Come funziona: un cervello minuscolo per un processore gigante
Immaginate di dover far “capire” del testo a un processore Z80 del 1976, con solo 64 KB di RAM e senza operazioni in virgola mobile.
Z80-μLM provvede innanzi tutto a convertire il testo in un “nuvola di tag” attraverso un encoding trigram: le tre lettere consecutive del messaggio sono sottoposte ad hashing in 128 “bucket” numerici. È tollerante ai refusi e ignora l’ordine delle parole: “hello there” e “there hello” producono lo stesso pattern!
Il vettore passa attraverso reti neurali ultra-compatte (256, 192, 128 neuroni), dove i pesi sono quantizzati a 2 bit ({-2,-1,0,+1}, impacchettati 4 per byte). Durante l’inferenza, Z80 li “disimballa” e somma centinaia di contributi usando i suoi registri a 16 bit (HL, DE, BC) in un ciclo super-ottimizzato.
Il meccanismo funziona molto bene con risposte brevi (1-2 parole), giochi sviluppati su più domande, per bot con personalità retrò. Tuttavia, le frasi lunghe si “confondono” nei bucket, non è possibile avviare conversazioni strutturate né usare una grammatica complessa.
Note finali e cenni storici
Ridurre un modello linguistico a un formato eseguibile su un chip Z80 richiede compromessi tecnici ma apre scenari interessanti: retro-hacking, esperimenti didattici e soluzioni embedded ultra-compatte.
Le tecniche chiave sono la quantizzazione, l’encoding a trigrammi e l’ottimizzazione degli inner loop basati su aritmetica integer: insieme permettono di far dialogare macchine “vintage” con un’interfaccia di chat minimale.
Lo Zilog Z80 fu progettato da Federico Faggin, ingegnere italiano già protagonista della nascita del primo microprocessore commerciale, l’Intel 4004, e in seguito dell’Intel 8080. Nel contesto storico della metà degli anni ’70, Faggin fondò Zilog con l’obiettivo di superare i limiti dell’8080, dando vita a una CPU più elegante, potente e orientata ai sistemi completi: l’esperienza maturata con lo Z80 influenzò profondamente i progetti successivi, contribuendo alla diffusione dei microcomputer personali e ponendo le basi concettuali per l’evoluzione dell’industria dei microprocessori e dei sistemi embedded moderni.