TinyML: potenziare l’Edge Computing per portare il Deep Learning fuori dal Cloud

Il tema dell’Edge Computing è da diverso tempo uno degli argomenti più caldi per chi, come noi, progetta e realizza soluzioni Internet of Things e mantiene sotto costante osservazione l’offerta delle relative piattaforme di sviluppo.

Negli ultimi mesi, dopo essere rimasto nascosto per molto tempo e confinato al solo settore del mobile, è comparso sulla scena un nuovo attore che sembra destinato a spingere l’Edge Computing a compiere un ulteriore importante passo in avanti. Parliamo del Tiny Machine Learning o TinyML, come viene oramai universalmente indicato.

Ma, andiamo per ordine e cerchiamo di capire di cosa si tratta e quali sono le implicazioni, ma anche le opportunità, che TinyML e Edge Computing possono riservare.

A partire dall’invenzione del microprocessore, avvenuta alla fine degli anni ’70 del secolo scorso, ad opera del fisico italiano Federico Faggin, esaltati dalla famosa legge di Moore (da Gordon Earle Moore, fondatore della Intel e per un certo periodo capo e datore di lavoro di Faggin), per molti anni siamo stati tutti affascinati dai grandi progressi fatti da questo prodotto, che ha guidato la rivoluzione informatica ed è stato un protagonista fondamentale della digitalizzazione che caratterizza il nostro presente.

Siamo stati tanto affascinati, da finire per trascurare ingiustamente il suo fratello minore: il microcontrollore.

Per quanto i microprocessori siano diffusi, essendo presenti su tutti i PC, SmartPhone e Tablet, il loro numero è poca cosa in confronto ai circa 250 miliardi di microcontrollori che si stima siano presenti e funzionanti in questo momento sul nostro pianeta.

Il microcontrollore o MCU è un componente incredibilmente pervasivo nel nostro mondo tecnologico, praticamente presente in ogni dispositivo elettronico digitale che abbia un barlume di interattività, dal televisore al telecomando della serranda del nostro garage.

Solo nel 2019 ne sono stati venduti poco più di 28 miliardi, qualche decimo percentuale meno del 2018, a causa della flessione del mercato dell’elettronica di consumo per effetto della guerra dei dazi tra USA e Cina e altre contingenze, ma decisamente in trend di crescita, come mostra una stima di IC Insights che prevede vendite annue per oltre 38 miliardi di esemplari già nel 2023.

Uno dei principali driver della crescita del fabbisogno di MCU è l’espansione del settore IoT, considerando che ogni smart object connesso alla rete è di fatto un sistema basato su microcontrollore.

Il deployment di soluzioni IoT, se da un lato permette alle grandi organizzazioni di estendere fisicamente sul territorio il proprio sistema informativo, dall’altro pone un serio problema di throughput nella raccolta delle enormi messi di dati che le moderne infrastrutture producono dai loro nodi terminali.

Il Cloud non è oggi in grado di gestire in modo efficiente il volume di dati prodotto dalle applicazioni IoT più grandi, dove milioni di sensori analizzano ad alta risoluzione una miriade di parametri, dal monitoraggio ambientale alla telemetria degli apparati nell’Industria 4.0.

Già da tempo, nella progettazione delle piattaforme IoT per i nostri clienti, cerchiamo di realizzare architetture e soluzioni che portino in periferia (Edge), cioè sui singoli nodi terminali della rete, una parte qualificata del carico elaborativo, in modo da filtrare gli eventi significativi e, se possibile, aggregare i dati, minimizzando la dimensione dei flussi di dati trasmessi sulla rete verso il centro o i nodi di processamento.

l’Edge Computing è proprio questo. Il concetto è semplice e l’utilità di questo tipo di architetture è evidente, tuttavia la programmazione del firmware sui nodi periferici richiede attenzione, esperienza e specializzazione.

Le software house che sono cresciute sull’onda dello sviluppo dell’ITC avvenuto negli anni ’90 e che oggi impiegano programmatori formati e abituati a computer che hanno RAM che si misurano in decine di GigaByte e memorie di massa che si misurano in Terabyte sono spesso in difficoltà quando si tratta di affrontare lo sviluppo di firmware destinato a girare su sistemi alimentati da una pila a bottone e con RAM di pochi KByte.

La programmazione dei sistemi a MCU è da sempre un settore molto specialistico. Le figure professionali con competenze adeguate al progetto di sistemi complessi sono al momento inferiori alla domanda di mercato, che continua a crescere.

Fortunatamente le tecniche e gli strumenti di sviluppo, dopo anni di immobilità, stanno rapidamente cambiando, in un precedente articolo abbiamo già parlato della rivoluzione apportata da Arduino in questo senso, e le soglie d’ingresso per la formazione di nuovi sviluppatori firmware sono più basse rispetto ad un decennio fa.

Tuttavia, l’attuale scenario di mercato richiede competenze forti e multidisciplinari. Il delivery di  soluzioni vincenti dipende fortemente dalla capacità di  progettare architetture ben bilanciate che sappiano coniugare l’Edge Computing con l’impiego di protocolli applicativi efficienti e sistemi host efficaci.

Il progettista è chiamato a stabilire il giusto compromesso tra il filtraggio e la trasmissione di dati integrati in periferia e l’inevitabile perdita di informazioni che potrebbero risultare importanti o utili in un secondo momento.

Nell’ottica di rendere i nodi periferici sempre più intelligenti e in grado di assicurare il decentramento delle funzioni diagnostiche e dei processi decisionali, un grande aiuto può derivare dallo sviluppo delle tecnologie TinyML.

Per TinyML si intende l’impiego di soluzioni software basate sul Machine Learning, quasi sempre implementate mediante Reti Neurali, in grado di girare sulle architetture leggere (Tiny) tipiche dei sistemi MCU.

Da alcuni anni, anche nei nostri laboratori di ricerca, sono in corso progetti che vedono affiancati gli specialisti della Data Science più convenzionale, abituati all’impiego di framework per il Deep Learning avidi di CPU e Memoria e all’acquisto di potenza elaborativa dai big provider come Google e Amazon, con gli sviluppatori provenienti dal settore del firmware, abituati a contare i bit e a scegliere oculatamente ogni singolo tipo da attribuire alle variabili nel codice per risparmiare quel byte che potrebbe rivelarsi decisivo al momento del caricamento dell’immagine binaria nel MCU.

Grazie ai progressi realizzati nella ricerca più teorica sui metodi matematici di compressione e ottimizzazione delle reti neurali e delle relative operazioni tensoriali, e alla comparsa sul mercato di una nuova generazione di microcontrollori con CPU ottimizzate per l’esecuzione degli algoritmi inferenziali di maggiore diffusione, da alcuni mesi è stato possibile realizzare sistemi reali e operabili in contesti produttivi in cui i nodi periferici impiegano soluzioni di machine learning.

Abbiamo appena rilasciato i primi sistemi IoT in cui in una prima fase i nodi periferici sono in grado di raccogliere dati attraverso i propri sensori e di trasmetterli ad un sistema centrale di raccolta.

Attivando opportune campagne di campionamento sul campo vengono raccolte informazioni che sono analizzate dai Data Scientist ed elaborate con algoritmi tradizionali allo scopo di costruire i data set di training, validazione e test che saranno utilizzati per addestrare reti neurali su sistemi ad alte prestazioni.

I modelli ottenuti, una volta ottimizzati e resi compatibili con l’architettura TinyML, vengono distribuiti sui nodi periferici della rete che possono quindi essere attivati nella versione finale di esercizio.

Questo tipo di soluzioni presenta notevoli vantaggi:

  • Il carico elaborativo richiesto dai classificatori che impiegano algoritmi di deep learning è fuori dal Cloud e decentrato sui nodi periferici
  • I nodi sono componenti intelligenti, ma a basso consumo di energia ed estremamente economici
  • Le informazioni significative sono identificate e filtrate alla fonte
  • I dati trasmessi sulla rete sono solo quelli significativi e ad alto valore

I primi risultati sono molto promettenti e ci aspettiamo che l’impiego del TinyML costituisca un notevole potenziamento, sia in termini di funzionalità che di efficienza, delle soluzioni basate su Edge Computing.

Contemporaneamente al rilascio delle nostre prime applicazioni IoT basate sui nuovi paradigmi di Machine Learning, Google e Arduino hanno presentato sul mercato una nuova distribuzionepronta all’uso della libreria TensorFlow Lite  per le nuove schede a 32 bit in architettura ARM Cortex M4, come la recentissima Arduino Nano 33 BLE Sense che risulta perfetta come sistema di prototipazione per il TinyML.

La disponibilità di maggiori strumenti non potrà che accelerare il processo di ricerca e sviluppo in questo settore che ci vede coinvolti in prima linea con tutte le aziende del nostro Gruppo.

 

 

Lascia un commento