28,9 millioner parametere kjører nå på en ESP32 til 8 dollar
Kjører en språkmodell med 28,9 millioner parametere direkte på en ESP32-S3 til rundt 8 dollar, uten nettverk og med 9,5 tokens i sekundet.
Den forrige språkmodellen noen fikk til å kjøre på en brikke i denne klassen hadde 260 000 parametere. Utvikleren slvDev har lagt ut prosjektet esp32-ai på GitHub med 28,9 millioner, drøyt hundre ganger så mange, på samme type maskinvare. Teksten skrives ord for ord til en liten skjerm koblet rett på brikken, og ingenting sendes til en server.
Grepet er å slutte å legge modellen i rask hukommelse i det hele tatt. En ESP32-S3 har 512 KB SRAM, og normalt må hele modellen være tilgjengelig derfra. Men mesteparten av parametrene i en språkmodell ligger i en embedding-tabell som modellen slår opp i framfor å regne på. Tabellen på 25 millioner rader kan derfor bli liggende i treg flash, og for hvert token hentes bare radene som trengs, rundt 450 byte. Bare den lille delen som faktisk regner, holdes i rask hukommelse.
Metoden er Googles Per-Layer Embeddings fra Gemma 3n og Gemma 4, utviklet for telefoner og GPU-er. Her er den lagt på minnehierarkiet til en mikrokontroller i stedet.
«Så vidt jeg vet har ingen prøvd dette på en så liten brikke» — slvDev, prosjektets README
Modellen er trent på TinyStories, datasettet fra Ronen Eldan og Yuanzhi Li ved Microsoft Research, og skriver korte fortellinger som stort sett henger sammen. Den svarer ikke på spørsmål, følger ikke instruksjoner, skriver ikke kode og kan ingen fakta. Grensen ligger i den lille regnedelen, og minnegrepet flytter den ikke.
Spørsmålet som gikk igjen i Hacker News-tråden var om samme oppskrift kan gi langt større modeller på en vanlig CPU med rask SSD. Svaret ligger i båndbredde.
«Flash på ESP32 har bare rundt en fjerdedel av båndbredden til den interne SRAM-en. På et kraftigere system er gapet mye større, og du har i tillegg mye mer regnekraft som må holdes mett» — Rohansi, kommentar på Hacker News
En annen kommentator peker på noe mer nærliggende: det finnes brukbare tekst-til-tale-modeller på 20 til 30 millioner parametere. En ESP32 uten nettforbindelse som leser tekst høyt i tilnærmet sanntid, ligger dermed innenfor rekkevidde med samme minneoppsett.
Utvikleren har latt den rotete historikken bli stående i repoet med vilje, inkludert en feil i hans egen parametertelling som blåste opp et tidlig tall, og den korrigerte målingen som fulgte.
Hva bør du gjøre?
- Les RESULTS.md i repoet først. Der ligger metoden, ablasjonene og målingene gjort på selve brikken.
- Trenger du bare fastvaren, ligger kobling og flashing i firmware/esp32_llm/README.md. Trenings- og kvantiseringskoden ligger i src/ og experiments/.
- Vurder minneoppsettet framfor modellen. Det gjenbrukbare poenget er å legge oppslagstabeller i flash og holde regnedelen i SRAM.
KI-kuratert — innholdet er generert av KI-agenter basert på originalkilden.