Negli ultimi dieci anni abbiamo assistito ad una crescita esponenziale delle dimensioni degli algoritmi di apprendimento automatico a causa dei miglioramenti nella velocità dei processori e dell'avvento dei Big Data. Sebbene questi risultati siano lodevoli, ciò ha anche contribuito a stimolare l'interesse all'interno della comunità che si occupa di AI verso un computing più efficiente dal punto di vista energetico. Da tale interesse nasce quello che oggi conosciamo come tiny Machine Learning (tinyML). In questo articolo faremo una panoramica su questa disciplina emergente che si pone come punto di intersezione tra Machine Learning e dispositivi IoT (Internet of Things) integrati.
Introduzione
Tradizionalmente il Machine Learning viene visto, dagli specialisti IoT, come una tecnologia lato server. In particolare, i sensori sul dispositivo acquisiscono i dati e li inviano al cloud, dove i modelli di Machine Learning (ML) su macchine performanti li elaborano. Questo rende necessaria una connessione di rete ed una certa latenza, per non parlare dei costi di hosting. La soluzione a questi vincoli risiede nel distribuire i modelli ML sugli stessi dispositivi IoT. Avvicinando l'apprendimento macchina ai sensori, è possibile rimuovere la dipendenza da una connessione di rete ed ottenere una latenza molto più bassa con il server. Inoltre, un minore utilizzo della rete si traduce in un minore consumo energetico ed una maggiore sicurezza in termini di privacy. Per tutti questi motivi, negli ultimi anni, è aumentato l'interesse da parte di università e industria, per portare l'apprendimento automatico su dispositivi di classe microcontrollore. L'obiettivo di "TinyML" è quindi quello di portare l'inferenza ML su dispositivi a bassissima potenza, tipicamente sotto un milliWatt, e rompere così la tradizionale barriera posta dall'alimentazione, primo degli impedimenti alla realizzazione dell'Intelligenza Artificiale ampiamente distribuita. Eseguendo l'inferenza sul dispositivo vicino ai sensori, TinyML consente una maggiore reattività e privacy evitando il costo energetico associato alla comunicazione wireless, che su questa scala è di gran lunga superiore a quello del calcolo. Inoltre, l'efficienza di TinyML consente una classe di applicazioni intelligenti, alimentate a batteria e sempre attive, che può rivoluzionare la raccolta e l'elaborazione in tempo reale dei dati.
Casi d'uso
Benché la tecnologia sia ancora in fase di maturazione, esistono una serie di casi d'uso ben consolidati. Tutti noi conosciamo le parole di attivazione audio come "Hey Google" per gli smartphone Android o "Hey Siri" su iPhone. Esse rappresentano un esempio di inferenza ML sempre attiva. Eseguire queste attività attraverso l'unità di elaborazione centrale (CPU) principale di uno smartphone esaurirebbe la batteria in poche ore. Ma, distribuendo un modello tinyML su un hardware specializzato con consumi inferiori ad 1 mW permetterebbe a questi circuiti di essere sempre attivi per 1 anno alimentandoli solo con una batteria a moneta. Quelli che oggi vengono considerati casi d'uso ML tradizionali possono essere considerati come attività TinyML in futuro. Con il miglioramento dell'hardware di inferenza a bassissima potenza, la soglia di redditività relativa all'uso di TinyML si espanderà. Inoltre, TinyML avrà un ruolo significativo da svolgere per le tecnologie del futuro. Ad esempio, molte delle caratteristiche fondamentali degli occhiali di realtà aumentata (AR) richiedono un'alimentazione a batteria, la necessità di essere sempre accesi e l'impossibilità di usufruire di collegamenti con latenza a causa di stretti vincoli di tempo reale. Naturalmente, queste non sono le uniche applicazioni possibili di TinyML. In un mondo in cui i dati stanno diventando sempre più importanti, la capacità di distribuire risorse di apprendimento automatico a dispositivi con memoria limitata ed in località remote potrebbe avere enormi vantaggi in settori ad alta intensità di dati.
Modelli
L'utilizzo delle reti neurali (NN) risulta predominante nel panorama dei modelli per ML tradizionale. Per alcuni casi d'uso TinyML, invece, è soluzione comune utilizzare altre tipologie di modelli con più bassi requisiti di calcolo e memoria, come ad esempio gli alberi decisionali. Tuttavia, l'apprendimento automatico sui dispositivi di classe MCU è diventato fattibile solo di recente, quindi non esistono modelli ampiamente accettati come per i dispositivi mobili. Nella Tabella 1 vengono riassunti i modelli più utilizzati a seconda del tipo di input.
Tipo di ingresso | Casi d'uso | Modelli |
Audio | parole di attivazione
rilevamento parole chiave |
CNN, DNN, RNN |
Immagine | rilevamento oggetti
conteggio oggetti riconoscimento testuale |
CNN, alberi decisionali, KNN |
Grandezze fisiche | riconoscimento gestuale
rilevamento attività |
alberi decisionali, SVM, lineare |
L'hardware TinyML è definito dal suo bassissimo consumo energetico, che è spesso nella gamma di 1 mWatt e inferiore. Nella parte superiore di questa gamma ci sono efficienti MCU a 32 bit, come quelli basati sui processori Arm Cortex-M7, e in fondo ci sono nuovi motori di inferenza a bassissima potenza. Anche i più grandi dispositivi TinyML consumano drasticamente meno potenza rispetto ai più piccoli dispositivi ML tradizionali. L'avvento di MCU a 32 bit a basso consumo ed economici ha rivoluzionato la capacità di calcolo periferica (edge). Piattaforme basate su Cortex-M ora eseguono regolarmente attività che in precedenza non erano fattibili a questa scala. La matematica vettoriale veloce supporta NN e implementazioni SVM altamente efficienti. Sebbene gli MCU generici offrano flessibilità, la massima efficienza delle prestazioni di TinyML proviene da hardware specializzati.
Deep compression
Gli algoritmi TinyML funzionano in modo molto simile ai tradizionali modelli di Machine Learning. In genere, i modelli vengono addestrati come al solito su un computer o nel cloud. Quindi il vero lavoro di tinyML avviene in seguito quando il modello è pronto. Per raggiungere l'obiettivo di ridurre la memoria e l'energia necessarie per eseguire l'inferenza viene utilizzata la tecnica nota come Deep Compression (compressione profonda). Si tratta di una pipeline a tre stadi (Figura 1) in grado di ridurre la memoria richiesta dalla rete neurale cercando anche di preservare l'accuratezza originale.
- Nel primo stadio detto pruning, avviene la potatura della rete per rimuovere le connessioni ridondanti, mantenendo solo le connessioni più informative
- Successivamente, nel secondo stadio, i pesi vengono quantizzati in modo che più connessioni condividano lo stesso peso. In questo modo sarà sufficiente memorizzare solo i pesi effettivi e gli indici
- Infine, nel terzo stadio, viene applicata la codifica di Huffman per sfruttare la distribuzione distorta dei pesi effettivi
L'intuizione principale di questa tecnica è che la potatura e la quantizzazione sono in grado di comprimere la rete senza interferire a vicenda, portando così a un tasso di compressione sorprendentemente alto. Rendendo la memoria richiesta molto piccola (pochi megabyte), tutti i pesi possono essere memorizzati nella cache invece di andare su DRAM con un notevole risparmio di energia. Vediamo nel dettaglio i tre stadi.
Potatura (Pruning)
In Figura 2 vengono rappresentate nel dettaglio le operazioni all'interno della potatura (pruning). Per prima cosa avviene lo studio della connettività tramite il normale addestramento della rete. Successivamente, vengono potate le connessioni di piccolo peso. Tutte le connessioni con pesi inferiori a una soglia vengono rimosse dalla rete. Infine, la rete viene riaddestrata per apprendere i pesi finali per i rimanenti collegamenti sparsi. L'operazione di potatura riduce il numero dei parametri da 9 fino a 13 volte quello della rete originale.
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2073 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.