TinyML, la nuova frontiera dell’AI che porta il machine learning sui microcontrollori

TinyML consiste nell’applicazione degli algoritmi di machine learning a sistemi embedded come i microcontrollori. Ecco a che cosa serve e quali sono i principali campi di applicazione.

Pubblicato il 20 Feb 2023

microchips-4924170_1280

TinyML è il dominio rappresentato dall’intersezione tra il Machine Learning (ML) e l’Internet of Things (IoT) e consiste nell’applicazione degli algoritmi di machine learning a sistemi embedded come i microcontrollori.

Si tratta di un ambito che ha avuto un grande sviluppo negli ultimi anni. Per capire meglio come mai, bisogna prima fare un passo indietro e analizzare le caratteristiche che lo hanno reso possibile, partendo da un parallelismo con l’AI di cui tutti parlano: ChatGPT.

Fonte: Medium

La carbon footprint di ChatGPT 

Il 2023 sarà ricordato come l’anno della Intelligenza Artificiale: l’uscita di ChatGPT ha portato questa branca dell’informatica sotto gli occhi di tutti, facendola diventare mainstream.

Questo chatbot, sviluppato da OpenAI, ha stupito il mondo per la sue risposte dettagliate ed empatiche, superando in pochi giorni il tetto del milione di utenti (qui sotto un grafico che mostra il tempo impiegato dai maggiori fornitori di servizi online per raggiungere lo stesso numero di utenti).

Ovviamente tutto questo successo ha anche il rovescio della medaglia: si sono sprecati i commenti di chi ritiene il tempo delle macchine sempre più vicino, paventando scenari degni di Terminator.

Quello che pochi hanno evidenziato invece è il consumo di risorse necessario per addestrare e poi mantenere online ChatGPT: si parla un consumo di quasi 1 GWh per l’allenamento della rete neurale (come confronto, il cervello umano consuma circa 40 W), mentre mantenere online il chatbot a fronte del crescente numero di interazioni costa ad OpenAI circa 100.000 dollari al giorno (qui si possono trovare dati più dettagliati sull’impatto ambientale).

In tutti i casi, i 700 GB di RAM necessari solo per i parametri del modello lo rendono un sistema che ha bisogno di grossi datacenter per funzionare (non a caso è stato addestrato sull’infrastruttura cloud di Microsoft, Azure).

Cosa succederebbe invece se cercassimo di far funzionare modelli di intelligenza artificiale direttamente “on the edge”, cioè sulle macchine o sugli utenti? Ebbene questo è già realtà grazie ad una branca dell’intelligenza artificiale che prende il nome di TinyML.

IoT: opportunità e problematiche

L’IoT ormai fa parte della nostra vita quotidiana: ogni giorno vengono prodotti 5000 miliardi di miliardi di dati, ed il numero di dispositivi connessi supera i 30 miliardi; ma meno dell’1% di questi dati viene analizzato o utilizzato.

Il problema principale è che questi dati per essere processati devono essere trasmessi ad un sistema centrale oppure in cloud; una volta in cloud possono essere applicati gli algoritmi di machine learning necessari per l’analisi dei dati, dopodiché il risultato deve essere reinviato al microcontrollore locale.

La trasmissione dati ha però un consumo energetico superiore di un ordine di grandezza rispetto alla raccolta dei dati stessi, oltre a presentare limitazioni in termini di banda, disponibilità della rete e affidabilità della trasmissione.

Un’elaborazione locale (“on the edge”) dei dati comporterebbe quindi notevoli vantaggi in termini di energia, oltre al risparmio di banda utilizzata per il trasferimento dati.

Un altro problema è quello della latenza, che per alcune applicazioni deve essere ridotta il più possibile.

La killer application in questo campo è stato il monitoraggio audio per il riconoscimento del parlato: quando diciamo “OK, Google” vogliamo che il nostro telefono si accenda istantaneamente, pertanto il processo deve sempre essere in esecuzione. Questo comporta un notevole consumo di energia, che mal si adatta ai problemi di consumo batteria di uno smartphone.

Gli ingegneri di Google hanno risolto il problema sviluppando un modulo di machine learning specifico per il keyword spotting caratterizzato da basso consumo, alta efficienza e di dimensioni limitate (14 kB) che può quindi essere lasciato sempre in esecuzione su un DSP (Digital Signal Processor).

Un altro problema risolto dall’analisi dei dati on the edge è quello della privacy: i dati non vengono trasmessi in rete, risolvendo alla radice potenziali problematiche di sicurezza.

L’evoluzione dei microcontrollori

La miniaturizzazione dei dispositivi permette ormai di avere potenze di calcolo disponibili direttamente sui dispositivi fino a poco fa assolutamente inimmagininabili: Kinetis ha recentemente presentato un microcontrollore basato su architettura Cortex M0 di dimensioni 1.6×2.0 mm2, come si può vedere dall’immagine seguente.

Mentre una GPU consuma qualche centinaio di Watt (la scheda Nvidia Tesla K80 consuma 300 W), il consumo di energia di questi dispositivi è di diversi ordini di grandezza inferiore: il Synthian NDP100, un microprocessore always-on per lo speech recognition, consuma solo 140 microWatt.

Questo permette di effettuare le complesse elaborazioni necessarie agli algoritmi di machine learning direttamente nella zona di raccolta dei dati tramite sensori anche nel caso non sia possibile portare in loco alimentazione elettrica e connessione ad Internet cablata, aprendo la strada alla realizzazione di dispositivi indossabili e accelerando, nel caso di linee di produzione industriali, quel processo di transizione verso la smart factory conosciuto con il nome di Industria 4.0.

Tensorflow Lite

L’esplosione del machine learning è molto recente, e buona parte del suo sviluppo è dovuto al fatto che Google nel 2015 ha reso disponibile a tutti, tramite una licenza open source, la libreria da loro sviluppata appositamente per l’apprendimento automatico, che mette a disposizione moduli già sperimentati ed ottimizzati per lo sviluppo di questi algoritmi.

Tale libreria richiede però grosse capacità di calcolo per essere eseguita, e richiede dimensioni di memoria troppo elevate per i microcontrollori.

Qualche anno dopo Google ha sviluppato una versione espressamente per dispositivi embedded, chiamata Tensorflow Lite, che attraverso operazioni di pruning, quantization e knowedge distillation permettono di convertire i modelli di machine learning in versioni ottimizzate per il deploy su microcontrollori.

Questa libreria è ottimizzata per l’apprendimento automatico sul dispositivo, affrontando 5 vincoli chiave: latenza (non c’è andata e ritorno verso un server), privacy (nessun dato personale lascia il dispositivo), connettività (non è richiesta la connettività a Internet), dimensioni (modello ridotto e dimensione binaria) e consumo energetico (inferenza efficiente e mancanza di connessioni di rete).

Esiste poi TensorFlow Lite for Microcontrollers, progettato per eseguire modelli di machine learning su microcontroller e altri dispositivi con pochi kilobyte di memoria. Il core runtime si adatta solo a 16 KB su un Arm Cortex M3 e può eseguire molti modelli di base. Non richiede il supporto del sistema operativo, librerie C o C++ standard o allocazione dinamica della memoria. Alcuni interessanti esempi di utilizzo di questa libreria si possono trovare qui.

Applicazioni di TinyML

Per tutti questi motivi il TinyML è un settore in rapida evoluzione, con applicazioni in campi molto diversi fra loro:

  • nell’industria, attraverso lo sviluppo di sistemi di manutenzione predittiva, che attraverso l’analisi dei dati rilevati dai sensori possono identificare eventuali anomalie in tempo reale, inviando messaggi di alert ai manutentori ed intervenendo sui macchinari prima di una possibile rottura. In questo modo si ridurrà il downtime per le riparazioni, aumentando l’efficienza produttiva della linea. Questa applicazione ben si sposa con la strategia di digitalizzazione e messa in rete dei macchinari portata avanti da Industria 4.0
  • nell’agricoltura, permettendo una raccolta dati mirata ed efficiente, per esempio identificando in automatico, tramite immagini acquisite in loco, lo stato di salute di una pianta e modificando di conseguenza la quantità d’acqua ed i nutrienti forniti
  • nell’ambiente, per esempio il Solar Scare Mosquito è un prodotto che si concentra sulla riduzione delle malattie diffuse dalle zanzare, come la dengue e la malaria. Si tratta di un dispositivo a energia solare che si trova sull’acqua stagnante che crea bolle d’aria a intervalli regolari per evitare l’allevamento di zanzare.

E per chi volesse imparare questa tecnologia? Visto il grande interesse per questo settore, la stessa Arduino ha recentemente immesso sul mercato un kit per il Tiny Machine Learning, che sto utilizzando per i miei corsi: il kit è composto da una scheda Arduino Nano 33 BLE Sense, dotata di un microcontrollore e di un’ampia varietà di sensori (movimento, accelerazione, rotazione, pressione barometrica, suoni, gesti, prossimità, colore e intensità della luce). Il kit include anche un modulo fotocamera (OV7675) e uno shield Arduino personalizzato per semplificare il collegamento dei componenti e creare il proprio progetto TinyML.

Valuta la qualità di questo articolo

Filippo Fantini
Filippo Fantini

Docente di sistemi e reti e di project management, appassionato di innovazione e nuove tecnologie. Come libero professionista mi occupo di efficienza energetica ed Industria 4.0 in qualità di progettista e system integrator

Articoli correlati

Articolo 1 di 5