Klein, krachtig en zelflerend

Klein, krachtig en zelflerend

Inleiding

De opkomst van micro‑controllers met geïntegreerde AI‑accelerators maakt het mogelijk om machine‑learning direct op het apparaat uit te voeren. Een recent project toont een Small Language Model (SLM) dat volledig getraind is op een ESP32‑S3, een chip met slechts 8 MB flash en een dual‑core Xtensa‑CPU. Deze prestatie daagt de conventionele opvatting uit dat grote datasets en dure hardware noodzakelijk zijn voor taalmodellen.

Het artikel onderzoekt de architectuur, het trainingsproces en de praktische implicaties van zo’n minimalistisch model. Daarbij worden de beperkingen van de hardware belicht en hoe ingenieuze optimalisaties deze beperkingen omzeilen.

De lezer krijgt een helder beeld van de technische keuzes, van quantisatie tot geheugenbeheer, en van concrete toepassingen zoals spraakgestuurde IoT‑apparaten.

Hardware‑ en software‑basis

De ESP32‑S3 beschikt over een 240 MHz dual‑core processor, 520 KB SRAM en een geïntegreerde vector‑accelerator voor AI‑taken. Ondanks de beperkte RAM is de chip in staat om inferentie van een 2‑miljoen‑parameter model uit te voeren dankzij 8‑bit quantisatie.

Softwarematig wordt gebruik gemaakt van de open‑source toolchain van Espressif, gecombineerd met TensorFlow‑Lite Micro. Het model wordt eerst in Python getraind, daarna geconverteerd naar een flatbuffer‑formaat dat op de micro‑controller geladen kan worden.

Een cruciale stap is het toepassen van post‑training quantisatie, waardoor het model van 32‑bit floating‑point naar 8‑bit integer wordt gereduceerd. Dit verkleint de footprint van 12 MB naar minder dan 2 MB, waardoor het binnen de flash‑limiet past.

Trainingspipeline op de ESP32‑S3

In tegenstelling tot traditionele workflows wordt hier een on‑device trainingsprocedure gehanteerd. De dataset bestaat uit 8 GB aan tekst, gecomprimeerd en opgesplitst in batches van 256 tokens. Elke batch wordt in de SRAM geladen, verwerkt en daarna worden de gewichten geüpdatet via een Adam‑optimizer met een learning‑rate van 1e‑4.

Om de beperkte geheugencapaciteit te omzeilen, wordt een gradient checkpointing strategie gebruikt: intermediaire activaties worden niet volledig bewaard, maar opnieuw berekend wanneer nodig. Dit verhoogt de rekentijd, maar houdt het RAM‑gebruik onder 400 KB.

Na 150 000 iteraties convergeert het model tot een perplexiteit van 32, wat verrassend goed is voor een model van deze schaal. De volledige training duurt ongeveer 48 uur, verdeeld over meerdere stroomonderbrekingen met behulp van een checkpoint‑mechanisme op de flash.

Praktische toepassingen en voorbeelden

Een direct bruikbare toepassing is een spraak‑naar‑tekst module voor slimme sensoren. Het model kan eenvoudige commando’s herkennen (“turn on light”, “set temperature”) met een latency van 120 ms, geheel offline.

Een ander voorbeeld is een context‑bewuste logger die tekstuele samenvattingen genereert van sensorgegevens. Hierdoor kan een apparaat zelf een korte statusrapportage sturen zonder externe verwerking.

Ten slotte wordt een prototype van een chat‑bot gepresenteerd die via een kleine OLED‑display korte antwoorden kan geven. Ondanks de beperkte vocabulaire biedt het model een natuurlijke interactie, wat de gebruikerservaring aanzienlijk verbetert.

Toekomstperspectief en uitdagingen

Hoewel het project bewijst dat geavanceerde AI op een ESP32‑S3 mogelijk is, blijven er uitdagingen. Het geheugen blijft een bottleneck voor grotere modellen, en de energie‑efficiëntie moet nog worden geoptimaliseerd voor langdurige batterij‑toepassingen.

Toekomstige chips met grotere SRAM en dedicated NPU’s zullen de deur openen naar complexere taalmodellen, maar de huidige benadering legt een solide basis voor edge‑AI in embedded systemen.

Daarnaast is er een groeiende behoefte aan gestandaardiseerde toolchains die training en deployment op micro‑controllers vereenvoudigen. Open‑source initiatieven zoals Qapla (de repository van dit project) spelen hierbij een cruciale rol.

Met de voortschrijdende miniaturisatie van AI‑hardware zal de scheidslijn tussen cloud‑ en edge‑intelligentie steeds vager worden, waardoor ontwikkelaars meer creatieve vrijheid krijgen om intelligente systemen direct in de fysieke wereld te embedden.