Due to advancements in processor speeds and the introduction of big data, the interest in machine learning algorithms and techniques has rapidly increased over the last 10 years. In particular, much attention has been given to the field of deep learning. Deep learning is a subset of machine learning with different capabilities compared with the latter. More specifically, deep learning algorithms are able to learn from inaccurate predictions on their own, while machine learning techniques require human intervention to make adjustments. This is why deep learning is particularly suitable for complex tasks (e.g. when not all aspects of the inputs can be categorized in advance). Deep learning methods are based on artificial neural networks, which are complex architectures inspired by information processing and distributed communication nodes in a biological neural network. A special class of artificial neural networks is represented by convolutional neural networks. Convolutional neural networks (CNNs) represent the state-of-the-art solution in many image and video recognition applications and their deep architecture allows to jointly learn the features and the classification task. To achieve this goal, CNNs are generally organized into a hierarchy of feed-forward layers processing the input image with hierarchical representations of knowledge. Unfortunately, such deep architectures require a very high number of parameters and a very high number of operations to provide the output class. Due to the high demand on computation and memory, the execution of such solutions is mostly restricted to high performing computing platforms. Nevertheless, the actual trend of edge computing focuses on integrating deep learning as close as possible to the client and therein lies the necessity to implement these techniques on embedded systems. Tiny Machine Learning (tinyML) is an emerging engineering field which proposes itself as a solution to this problem. In other words, it aims at integrating deep learning techniques on low-cost off-the shelf embedded platforms. To do that, tinyML explores the best optimization methods in order to efficiently carry artificial neural networks on embedded devices. In this paper we investigated a combination of two of these techniques: early exits and mixed-precision quantization. We proposed a solution that applies both of these compression techniques with only little loss of accuracy. The goal was being able to run CNNs in distributed inference systems where computation starts on-device and it is then offloaded into the cloud to provide more accurate predictions on too complex inputs. Our solution has been implemented with PyTorch, a flexible open source machine learning library that facilitates building deep learning projects. Experiments have been conducted on known CNNs, which represent the state-of-the-art in several applications. Overall, results demonstrated that bringing deep learning on embedded systems has competitive advantages such as faster operations, lower costs and increased security. As a result, it is worth investigating on this field.

Grazie alle recenti tecniche di ottimizzazione dei processori e all'introduzione dei Big Data, l'interesse verso l'ambito del machine learning è aumentato a dismisura nel corso degli ultimi anni. Un'attenzione particolare è stata posta sul campo del deep learning. Il deep learning è inteso come un sottoinsieme del machine learning, avente però differenti potenzialità rispetto a quest'ultimo. I modelli di deep learning sono in grado di prendere decisioni e imparare dai propri errori da soli, risultando dunque molto più autonomi. I modelli di machine learning invece necessitano dell'intervento umano per eventuali aggiustamenti in caso di predizioni sbagliate. Ciò rende le tecniche di deep learning particolarmente adatte a risolvere problemi complessi. Gli algoritmi di deep learning vengono implementati tramite reti neurali: modelli computazionali composti da "neuroni" artificiali, che si basano sui pattern di comunicazione e di elaborazione delle informazioni di una rete neurale biologica. Una classe interessante di reti neurali è quella delle reti neurali convoluzionali. Le reti neurali convoluzionali rappresentano lo stato dell'arte in moltissime applicazioni per il riconoscimento di oggetti, in quanto in grado di imparare le caratteristiche discriminative dei dati senza l'intervento umano e dunque a risolvere da sole problemi di classificazione. Per raggiungere questo obiettivo, le reti neurali convoluzionali sono generalmente organizzate in architetture costituite da diversi strati feed-forward che elaborano le immagini con rappresentazioni gerarchiche. Sfortunatamente, tali architetture richiedono un notevole numero di parametri e di operazioni per fornire una corretta predizione. A causa degli elevati requisiti di calcolo e di memoria, l'esecuzione delle reti convoluzionali è per lo più limitata a piattaforme di calcolo ad alte prestazioni. Tuttavia, l'attuale interesse verso l'edge computing tende ad integrare le tecniche di deep learning il più vicino possibile all'utente, e qui nasce la necessità di portare tali tecniche su sistemi embedded. Il Tiny Machine Learning (tinyML) è un campo dell'ingegneria che si propone come soluzione a questo problema. Esso mira ad integrare tecniche di deep learning su dispositivi embedded a basso costo. Per fare ciò, si studiano i metodi di compressione e di ottimizzazione più efficaci per portare le reti neurali su tali dispositivi in maniera efficiente. In questa tesi abbiamo analizzato una combinazione di due di questi metodi: early exits e quantizzazione a precisione mista. Abbiamo proposto una soluzione che applica entrambe queste tecniche al costo di una leggera perdita di accuracy. L'obiettivo era quello di essere in grado di portare reti convoluzionali in sistemi di inferenza distribuiti, dove il processamento inizia sul dispositivo e viene poi trasferito sul cloud per fornire una predizione più accurata quando l'input è troppo complesso. La nostra soluzione è stata implementata con PyTorch, una libreria open source di machine learning molto flessibile per lo sviluppo di tecniche di deep learning. Gli esperimenti sono stati condotti su reti convoluzionali particolarmente note, in quanto rappresentano lo stato dell'arte in diverse applicazioni. Nel complesso, i risultati hanno dimostrato che portare tecniche di deep learning su dispositivi embedded porta numerosi vantaggi come: ottimizzazione dei calcoli, costi più bassi e maggiore attenzione alla privacy dei dati. Vale la pena quindi continuare ad approfondire il campo del tiny machine learning.

Quantization and early exits are all you need in TinyML

RUGGIERO, RICCARDO ANTONIO
2020/2021

Abstract

Due to advancements in processor speeds and the introduction of big data, the interest in machine learning algorithms and techniques has rapidly increased over the last 10 years. In particular, much attention has been given to the field of deep learning. Deep learning is a subset of machine learning with different capabilities compared with the latter. More specifically, deep learning algorithms are able to learn from inaccurate predictions on their own, while machine learning techniques require human intervention to make adjustments. This is why deep learning is particularly suitable for complex tasks (e.g. when not all aspects of the inputs can be categorized in advance). Deep learning methods are based on artificial neural networks, which are complex architectures inspired by information processing and distributed communication nodes in a biological neural network. A special class of artificial neural networks is represented by convolutional neural networks. Convolutional neural networks (CNNs) represent the state-of-the-art solution in many image and video recognition applications and their deep architecture allows to jointly learn the features and the classification task. To achieve this goal, CNNs are generally organized into a hierarchy of feed-forward layers processing the input image with hierarchical representations of knowledge. Unfortunately, such deep architectures require a very high number of parameters and a very high number of operations to provide the output class. Due to the high demand on computation and memory, the execution of such solutions is mostly restricted to high performing computing platforms. Nevertheless, the actual trend of edge computing focuses on integrating deep learning as close as possible to the client and therein lies the necessity to implement these techniques on embedded systems. Tiny Machine Learning (tinyML) is an emerging engineering field which proposes itself as a solution to this problem. In other words, it aims at integrating deep learning techniques on low-cost off-the shelf embedded platforms. To do that, tinyML explores the best optimization methods in order to efficiently carry artificial neural networks on embedded devices. In this paper we investigated a combination of two of these techniques: early exits and mixed-precision quantization. We proposed a solution that applies both of these compression techniques with only little loss of accuracy. The goal was being able to run CNNs in distributed inference systems where computation starts on-device and it is then offloaded into the cloud to provide more accurate predictions on too complex inputs. Our solution has been implemented with PyTorch, a flexible open source machine learning library that facilitates building deep learning projects. Experiments have been conducted on known CNNs, which represent the state-of-the-art in several applications. Overall, results demonstrated that bringing deep learning on embedded systems has competitive advantages such as faster operations, lower costs and increased security. As a result, it is worth investigating on this field.
SCARDAPANE, SIMONE
ING - Scuola di Ingegneria Industriale e dell'Informazione
21-dic-2021
2020/2021
Grazie alle recenti tecniche di ottimizzazione dei processori e all'introduzione dei Big Data, l'interesse verso l'ambito del machine learning è aumentato a dismisura nel corso degli ultimi anni. Un'attenzione particolare è stata posta sul campo del deep learning. Il deep learning è inteso come un sottoinsieme del machine learning, avente però differenti potenzialità rispetto a quest'ultimo. I modelli di deep learning sono in grado di prendere decisioni e imparare dai propri errori da soli, risultando dunque molto più autonomi. I modelli di machine learning invece necessitano dell'intervento umano per eventuali aggiustamenti in caso di predizioni sbagliate. Ciò rende le tecniche di deep learning particolarmente adatte a risolvere problemi complessi. Gli algoritmi di deep learning vengono implementati tramite reti neurali: modelli computazionali composti da "neuroni" artificiali, che si basano sui pattern di comunicazione e di elaborazione delle informazioni di una rete neurale biologica. Una classe interessante di reti neurali è quella delle reti neurali convoluzionali. Le reti neurali convoluzionali rappresentano lo stato dell'arte in moltissime applicazioni per il riconoscimento di oggetti, in quanto in grado di imparare le caratteristiche discriminative dei dati senza l'intervento umano e dunque a risolvere da sole problemi di classificazione. Per raggiungere questo obiettivo, le reti neurali convoluzionali sono generalmente organizzate in architetture costituite da diversi strati feed-forward che elaborano le immagini con rappresentazioni gerarchiche. Sfortunatamente, tali architetture richiedono un notevole numero di parametri e di operazioni per fornire una corretta predizione. A causa degli elevati requisiti di calcolo e di memoria, l'esecuzione delle reti convoluzionali è per lo più limitata a piattaforme di calcolo ad alte prestazioni. Tuttavia, l'attuale interesse verso l'edge computing tende ad integrare le tecniche di deep learning il più vicino possibile all'utente, e qui nasce la necessità di portare tali tecniche su sistemi embedded. Il Tiny Machine Learning (tinyML) è un campo dell'ingegneria che si propone come soluzione a questo problema. Esso mira ad integrare tecniche di deep learning su dispositivi embedded a basso costo. Per fare ciò, si studiano i metodi di compressione e di ottimizzazione più efficaci per portare le reti neurali su tali dispositivi in maniera efficiente. In questa tesi abbiamo analizzato una combinazione di due di questi metodi: early exits e quantizzazione a precisione mista. Abbiamo proposto una soluzione che applica entrambe queste tecniche al costo di una leggera perdita di accuracy. L'obiettivo era quello di essere in grado di portare reti convoluzionali in sistemi di inferenza distribuiti, dove il processamento inizia sul dispositivo e viene poi trasferito sul cloud per fornire una predizione più accurata quando l'input è troppo complesso. La nostra soluzione è stata implementata con PyTorch, una libreria open source di machine learning molto flessibile per lo sviluppo di tecniche di deep learning. Gli esperimenti sono stati condotti su reti convoluzionali particolarmente note, in quanto rappresentano lo stato dell'arte in diverse applicazioni. Nel complesso, i risultati hanno dimostrato che portare tecniche di deep learning su dispositivi embedded porta numerosi vantaggi come: ottimizzazione dei calcoli, costi più bassi e maggiore attenzione alla privacy dei dati. Vale la pena quindi continuare ad approfondire il campo del tiny machine learning.
File allegati
File Dimensione Formato  
10716376_complete.pdf

accessibile in internet solo dagli utenti autorizzati

Dimensione 6.48 MB
Formato Adobe PDF
6.48 MB Adobe PDF   Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/181596