Lo sviluppo di applicazioni di apprendimento automatico basato sull'edge sta diventando molto più semplice
Lo sviluppo dell'apprendimento automatico (ML) è ora molto più accessibile grazie a un numero crescente di strumenti specifici, in particolare quelli dei principali fornitori di servizi cloud come Amazon Web Services (AWS), Google e Microsoft. Tuttavia, questi strumenti non necessariamente facilitano l'implementazione di applicazioni basate sull'edge per Internet delle cose (IoT), le case intelligenti, i sistemi di automazione industriale e altre aree embedded. Fortunatamente, crescono rapidamente le risorse hardware e software che stanno iniziando a rispondere ai requisiti unici dello sviluppo di applicazioni di apprendimento automatico per i sistemi embedded.
Gran parte dell'attenzione del "Big ML" è rivolta a modelli molto grandi e ad applicazioni di livello aziendale eseguite in farm massicciamente scalabili di unità di elaborazione grafica (GPU) e server. Il "tinyML" per le applicazioni edge presenta invece una serie di problemi completamente diversi che derivano, in parte, dalle limitazioni delle risorse dei microcontroller (MCU) e in parte dai requisiti in tempo reale dell'applicazione.
In passato, gli MCU erano progettati per soddisfare requisiti relativamente semplici in termini di memoria e periferiche. Per la maggior parte delle applicazioni integrate che richiedevano tempi di ciclo misurati al massimo in millisecondi, le prestazioni spesso non erano un problema. Oggi, le applicazioni integrate più convenzionali richiedono risorse superiori, oltre a connettività e prestazioni più robuste. Inoltre, il crescente desiderio di eseguire algoritmi di ML con una latenza minima nelle applicazioni integrate ha cambiato radicalmente le esigenze e ciò che ci si aspetta dagli MCU avanzati. Di conseguenza, i produttori di semiconduttori hanno risposto con MCU avanzati, come i Crossover i.MX RT1170 di NXP, che offrono caratteristiche e capacità che fino a poco tempo fa erano considerate di classe server.
Per l'implementazione di un'applicazione integrata basata su ML è essenziale poter contare su un hardware idoneo, ma la realizzazione di tale applicazione dipende in ultima analisi dalla capacità di sviluppare con successo la parte software relativamente estesa necessaria per le soluzioni edge basate su ML. Oltre a implementare il software di acquisizione dati su cui poggiano quasi tutti i sistemi embedded, gli sviluppatori devono anche creare un modello di apprendimento automatico idoneo, addestrato su dati rappresentativi, e distribuire sull'MCU il corrispondente modello di inferenza (Figura 1).
Figura 1: L'implementazione di un'applicazione basata su ML per l'edge aggiunge fasi di progetto specifiche per ML che estendono lo sviluppo oltre le attività più familiari richieste per la realizzazione di prodotti intelligenti basati su sensori. (Immagine per gentile concessione di NXP Semiconductors)
Per gli sviluppatori embedded che implementano applicazioni per l'edge basate su ML, il lavoro aggiuntivo richiesto per la creazione di modelli ML si riduce a quattro compiti principali:
- Definire il set di dati: in questa critica fase iniziale, gli sviluppatori decidono le fonti di dati e le caratteristiche richieste dalla loro applicazione.
- Definire il modello: gli sviluppatori stabiliscono la topologia del modello e gli iperparametri necessari per metterlo a punto.
- Addestrare il modello: questa fase ad alta intensità di calcoli in genere viene eseguita su server robusti e GPU farm.
- Generare il modello di inferenza: prima della distribuzione effettiva, gli sviluppatori convertono il modello di addestramento in un modello di inferenza ottimizzato, rimuovendo le caratteristiche necessarie solo durante l'addestramento o che contribuiscono poco o nulla all'inferenza.
Presi singolarmente, questi passaggi rientrano perfettamente nelle capacità di uno sviluppatore embedded. Nell'implementazione dei sensori e del sistema di acquisizione dati, lo sviluppatore conosce i dati quanto basta per gestire il ruolo di data scientist tipicamente richiesto nelle applicazioni ML di livello aziendale. Oltre questa fase iniziale, tuttavia, normalmente gli sviluppatori hanno dovuto affrontare da soli la risoluzione della definizione, l'addestramento e la conversione dei modelli.
I primi ad adottarlo sono stati pronti a sfruttare quanto derivato dalla tecnologia emersa rapidamente, per creare modelli di ML idonei per l'edge. Librerie come TensorFlow Lite portano gran parte della potenza dell'ecosistema open-source TensorFlow di Google ai sistemi mobili ed edge con risorse limitate. Le librerie di sviluppo, come Common Microcontroller Software Interface Standard - Neural Network (CMSIS-NN) di Arm e il suo kit di sviluppo software (SDK) per rete neurale (NN), sfruttano le capacità hardware delle GPU e delle unità di elaborazione centrale (CPU) di Arm. Strumenti come il compilatore Glow ML di Facebook e l'ottimizzatore di ML ONNX Runtime di Microsoft aiutano a generare modelli di inferenza. Per l'implementazione, un software specializzato come il motore di inferenza DeepViewRT di Au-Zone Technologies è un motore pronto per la produzione, progettato per semplificare la conversione dei modelli.
Il software di cui ho parlato in questa sede scalfisce appena la superficie delle librerie e degli strumenti software disponibili progettati (o adattabili) per lo sviluppo di applicazioni ML basate su MCU. Una delle tendenze più interessanti nel campo dell'edge ML è stata la comparsa di soluzioni di sviluppo ML direttamente dai produttori di semiconduttori MCU.
Anche se i ricercatori di ML potrebbero essere meglio attrezzati per creare algoritmi di ML eccezionali, il fornitore di MCU si trova in una posizione unica per risolvere il problema di ingegnerizzazione nella creazione di un ambiente di sviluppo ML efficiente per sistemi basati su MCU con risorse limitate. Progettati appositamente per questo problema, strumenti come il Toolkit eIQ di NXP aiutano a velocizzare lo sviluppo di modelli ML destinati a funzionare su MCU (Figura 2).
Figura 2: La disponibilità di strumenti come il Toolkit eIQ di NXP ha semplificato notevolmente lo sviluppo di applicazioni ML basate su MCU per l'edge. (Immagine per gentile concessione di NXP Semiconductors)
Conclusione
Dati i requisiti particolari dei dispositivi embedded, lo sviluppo di applicazioni per edge ML potrebbe non raggiungere il tipo di implementazione "chiavi in mano" a cui si punta per le applicazioni ML di livello aziendale, ma sta già ottenendo il tipo di supporto hardware e software che ha reso possibili molti dispositivi intelligenti.
Parlerò specificamente dello sviluppo di edge ML e dell'ecosistema ML di NXP in un prossimo articolo in cui illustrerò come sia diventato molto più facile implementare applicazioni ML per l'edge. Potrebbe non essere ancora completamente "chiavi in mano", ma l'edge ML sta diventando molto più accessibile e facile da implementare.
Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.
Visit TechForum

