EO_493
EDA/SW/T&M 63 - ELETTRONICA OGGI 493 - APRILE 2021 NEURAL NETWORKS alla CPU e ne massimizza l’utilizzo, mentre riduce al minimo i mancati riscontri nella cache, ed è in genere fondamentale per ottenere prestazioni elevate. Il punto chiave è che il sistema deve essere adattato in modo che l’accesso alla memoria corrisponda alla frequenza di elaborazione e alle capacità del sistema. Motori di inferenza I framework di deep learning sono gli strumenti utilizzati per la creazione, la formazione e l’esecuzione delle reti NN. La loro proliferazione ha portato alla semplificazio- ne di queste attività per i sistemi basati sul cloud. C’è un alto numero di modelli pre-addestrati disponibili nei cosiddetti “model zoos”, che possono essere facilmente utilizzati per svolgere task generici o come backbone (estrattori di funzionalità) per NN specializzate. Tuttavia, per quanto sia semplice utilizzare un modello sottoposto a training usando un sistema con architettura x86 e unità di elaborazione grafica, utilizzare lo stesso modello per un microcontrollore non è ancora un compito banale. Per affrontare questo problema sono state sviluppate diverse soluzioni software, denominate “motori di infe- renza” (inference engine). Si tratta essenzialmente di li- brerie con kernel ottimizzati o funzioni per le specifiche piattaforme hardware, che tengono conto delle risorse limitate disponibili sui microcontrollori embedded. CMSIS NN CMSIS è una delle recenti estensioni che vengono of- ferte con l’obiettivo di fornire un’accelerazione alle NN utilizzando le istruzioni DSP. Si tratta di istruzioni SIMD (single-instruction multiple-data) che operano su un vettore di dati. I microcontrollori ARM sono a 32 bit, e quindi ogni istruzione opera effettivamente su un vettore di quattro parole di 8 bit o due di 16 bit. In so- stanza, CMSIS è una libreria di kernel NN che possono essere richiamati direttamente in un’applicazione. La topologia del modello viene implementata passando i buffer di ingresso e di uscita tra livelli consecutivi, mentre i pesi vengono forniti in un file di intestazione con tabelle di parametri. TensorFlow Lite TensorFlow è stato sviluppato da Google ed è uno dei più diffusi framework open source di deep learning. Esso fornisce metodi per la creazione e il training di modelli, incluse le interfacce front-end come Keras e Gradient Tape. TensorFlow Lite è una versione ridotta che supporta solo il percorso in avanti, in quanto infe- risce solo in base ai dati di ingresso. Glow Glow è un compilatore di apprendimento automatico che fornisce come input un grafico computazionale delle operazioni e compila un codice ottimizzato per un hardware target. È concepito per essere utilizzato come motore di inferenza usando l’hardware di acce- lerazione disponibile. Glow utilizza un approccio a due fasi con rappresentazione intermedia (IR). Partendo da IR di alto livello, esso esegue ottimizzazio- ni specifiche del dominio (ad esempio correlate all’ap- prendimento automatico), seguite da una IR di basso livello che utilizza istruzioni assembly e riferimenti di solo indirizzo per ottimizzare l’uso della memoria eli- minando le operazioni di copia, allocando staticamen- te la memoria e rischedulando le operazioni. La fase finale consiste quindi nel compilare il codice macchi- na che utilizza le funzionalità hardware per l’accelera- zione. I sistemi embedded sono simili a qualsiasi sistema digitale con un’unità di elaborazione e un dominio di memoria. Tuttavia, esistono considerazioni specifiche che sono più importanti per i dispositivi con vincoli più che per i server e i sistemi di fascia alta. È neces- sario considerare le dimensioni della memoria, l’effi- cienza energetica e i tempi di elaborazione. La chiave per valutare le prestazioni e l’efficienza energetica è la calibrazione delle capacità di elaborazione con ac- cesso alla memoria e delle capacità di utilizzo dei dati, in modo che nessuno dei due sia inutilmente bloccato. L’utilizzo di istruzioni DSP o di altri metodi di funziona- mento contemporaneo su più serie di dati è necessa- rio per avere elevate prestazioni. Tab. 1 – Alcuni esempi di motori di inferenza Motore Modello Testo Dati CMSIS NN CNN3 152,0 kB 9,6 MB CMSIS NN Nessuno 46,8 kB 8,1 MB TF Lite CNN3 1,07 MB 9,6 MB TF Lite Nessuno 0,97 MB 8,1 MB Solo RTOS Nessuno 4,4 kB 2,4 kB
Made with FlippingBook
RkJQdWJsaXNoZXIy Mzg4NjYz