TinyML
TinyML esegue l’apprendimento automatico su microcontrollori con kilobyte di memoria e milliwatt di potenza. Scopri come adattare i modelli, dove vengono usati e quali strumenti utilizzare.
TinyML (apprendimento automatico su dispositivi minuscoli) è la pratica di eseguire modelli di apprendimento automatico su microcontrollori e altri chip a bassissimo consumo, in genere con poche centinaia di kilobyte di memoria, senza sistema operativo e con un budget energetico di pochi milliwatt. Eseguire l'inferenza su un chip accanto al sensore consente ai dispositivi a batteria di ascoltare, osservare o percepire l'ambiente ininterrottamente per mesi o anni, inviando solo risultati come "parola chiave rilevata" o "vibrazione anomala della macchina" anziché dati grezzi. Questo riduce la latenza, tutela la riservatezza dei dati e risparmia l'energia radio che servirebbe per lo streaming. L'organizzazione della comunità del settore, la EDGE AI FOUNDATION, si chiamava in precedenza tinyML Foundation.
Come si adattano i modelli a un microcontrollore#
Un microcontrollore memorizza i pesi di un modello nella memoria flash insieme al programma e conserva le attivazioni in fase di calcolo nella SRAM, che di solito è il limite più stringente. La quantizzazione del modello a interi a 8 bit riduce i pesi a un quarto delle dimensioni FP32 e sostituisce i calcoli in virgola mobile con operazioni intere, eseguite in modo efficiente dai core più piccoli. Architetture compatte basate su convoluzioni separabili in profondità, potatura del modello e risoluzioni di input inferiori riducono il resto; la ricerca di architetture neurali può progettare reti per la memoria di uno specifico chip. MCUNet ha combinato una ricerca di questo tipo con un runtime consapevole della memoria, raggiungendo un'accuratezza top-1 di oltre il 70% su ImageNet con un microcontrollore commerciale. Il modello finale viene compilato nel firmware ed eseguito da un interprete leggero o da codice compilato:
Il budget può essere stimato prima di usare qualsiasi hardware. Questa rete per il rilevamento di parole chiave, una CNN con convoluzioni separabili in profondità del tipo usato per riconoscere comandi vocali da caratteristiche audio, calcola un byte per ogni peso INT8 destinato alla memoria flash e la coppia più grande di attivazioni di input e output per la SRAM:
import torch
from torch import nn
# A depthwise-separable CNN for keyword spotting on 49x10 MFCC audio features
model = nn.Sequential(
nn.Conv2d(1, 64, (10, 4), stride=2, padding=(5, 1)),
nn.ReLU(),
nn.Conv2d(64, 64, 3, padding=1, groups=64),
nn.Conv2d(64, 64, 1),
nn.ReLU(),
nn.Conv2d(64, 64, 3, padding=1, groups=64),
nn.Conv2d(64, 64, 1),
nn.ReLU(),
nn.AdaptiveAvgPool2d(1),
nn.Flatten(),
nn.Linear(64, 12),
)
# At INT8, flash stores one byte per weight and SRAM holds activations in flight
weights = sum(p.numel() for p in model.parameters())
x, peak = torch.randn(1, 1, 49, 10), 0
for layer in model:
y = layer(x)
peak = max(peak, x.numel() + y.numel()) # a layer's input and output coexist
x = y
print(f"Flash: {weights / 1024:.1f} KB, peak SRAM: {peak / 1024:.1f} KB")Stampa 12,7 KB di memoria flash e 15,6 KB di SRAM di picco, una piccola frazione del megabyte di flash e dei 256 KB di RAM del microcontrollore nRF52840 di Arduino Nano 33 BLE Sense, lasciando spazio alla pipeline audio e al runtime stesso.
Runtime e hardware#
- LiteRT for Microcontrollers: l'interprete di Google, precedentemente TensorFlow Lite for Microcontrollers, non richiede un sistema operativo, una libreria standard o allocazione dinamica della memoria; il runtime principale occupa 16 KB su un Arm Cortex-M3.
- ExecuTorch: il runtime on-device di PyTorch, il cui backend Arm Ethos-U esegue modelli quantizzati sulle NPU Ethos-U di Arm, presenti accanto ai core Cortex-M in molti chip a basso consumo.
- Arm Cortex-M: famiglia di processori presente nella maggior parte dei microcontrollori che eseguono TinyML, dai componenti Cortex-M0+ con pochi kilobyte di RAM fino ai Cortex-M55 e Cortex-M85 con istruzioni vettoriali per l'apprendimento automatico.
- NPU Coral: progetto di acceleratore RISC-V open source di Google, annunciato nell'ottobre 2025 per dispositivi indossabili sempre attivi, che punta a circa 512 miliardi di operazioni al secondo con un consumo di pochi milliwatt.
TinyML vs. Edge AI#
L'IA edge comprende qualsiasi inferenza eseguita sul dispositivo in cui vengono prodotti i dati, inclusi telefoni, computer a scheda singola come Raspberry Pi e moduli GPU embedded come NVIDIA Jetson, che dispongono di gigabyte di memoria e consumano watt. TinyML è il livello più piccolo, in cui i modelli si misurano in kilobyte. Il confine continua a spostarsi man mano che i microcontrollori acquisiscono acceleratori: STM32N6 di ST abbina un Cortex-M55 a un'unità di elaborazione neurale da 600 GOPS e 4,2 MB di RAM. Il più piccolo rilevatore Ultralytics YOLO26 ha 2,4 milioni di parametri, circa 2,4 MB in INT8; perciò la sua esportazione LiteRT INT8 (format="litert", quantize=8) è destinata al livello superiore rispetto al TinyML classico: telefoni, computer a scheda singola e schede dotate di acceleratore.
Applicazioni di TinyML#
- Rilevamento di parole chiave: i rilevatori di parole di attivazione sempre attivi su telefoni, auricolari e altoparlanti intelligenti ascoltano una singola frase su un core a basso consumo e riattivano il processore principale solo quando la rilevano.
- Manutenzione predittiva: i sensori di vibrazione e audio montati su motori e pompe apprendono il funzionamento normale e segnalano anomalie che precedono i guasti, funzionando per anni a batteria.
- Monitoraggio della fauna selvatica e dell'ambiente: sensori acustici alimentati a energia solare o a batteria riconoscono i richiami degli animali o le motoseghe in foreste remote e inviano brevi avvisi tramite radio a lungo raggio.
- Parole di attivazione visive: telecamere a bassa risoluzione collegate a microcontrollori stabiliscono se una persona è nel campo visivo e attivano un sistema più potente solo quando lo è.
MLPerf Tiny, il benchmark di MLCommons per questa classe di hardware, misura accuratezza, latenza e consumo energetico su attività tratte da queste applicazioni, come il rilevamento di parole chiave, le parole di attivazione visive, la classificazione di immagini CIFAR-10 e il rilevamento di anomalie nei suoni delle macchine.










