Noi di DataDeep crediamo nell’importanza di condividere quante più informazioni possibili con manager e imprenditori che vogliono introdurre tecnologie di AI nelle proprie aziende.
Quanta più conoscenza viene messa a disposizione, maggiori sono i benefici che si possono ottenere.
In questo articolo parliamo di una tecnica molto utilizzata nel Deep Learning, ossia la Model Compression.
Se non sai che cos’è il Deep Learning, ti invitiamo a leggere questo articolo “Il Deep Learning: cos’è, vantaggi e criticità”.
Per sviluppare reti neurali profonde abbiamo bisogno di molti dati e di una notevole proprietà di calcolo computazionale, affinché le informazioni possano essere processate.
La Model Compression assume in questo caso un’importanza fondamentale.
È una tecnica che viene impiegata per ridurre le dimensioni dei modelli di Deep Learning senza perdere precisione nei risultati.
Ci sono diversi tipi di Model Compression, ma tutti si basano sulla stessa idea: eliminare i parametri inutili mantenendo solo le informazioni realmente necessarie.
I modelli di Deep Learning vengono ridotti, rendendoli più efficienti da utilizzare su device con risorse limitate, come smartphone, dispositivi IoT e microcontrollori.
La riduzione della dimensione è fondamentale per diverse ragioni.
Come prima cosa, i modelli di Deep Learning più grandi richiedono molte più risorse computazionali per l’addestramento e l’inferenza rispetto ai più piccoli.
Ridurne le dimensioni ci consente di eseguire le operazioni di addestramento e inferenza più velocemente e con meno risorse.
In secondo luogo, i modelli di Deep Learning più grandi richiedono maggiore spazio di memoria rispetto ai più piccoli.
Ridurne le dimensioni ci consente di diminuire i costi di memorizzazione.
I modelli di Deep Learning più piccoli, poi, possono essere eseguiti su più dispositivi contemporaneamente, senza utilizzare risorse computazionali e di memorizzazione eccessive.
Ciò ci consente di scalare le applicazioni su un gran numero di device, senza dover aumentare le risorse in modo proporzionale.
Ci sono però alcune criticità che possono verificarsi con la Model Compression, come ad esempio la perdita di precisione dovuta all’impiego non accurato delle tecniche che vedremo di seguito.
La ricostruzione del modello compresso può essere difficile se ha comportato la rimozione di alcune parti essenziali per il suo funzionamento.
Altro aspetto da tenere in considerazione riguarda la complessità del processo di compressione, che richiede una conoscenza approfondita dell’architettura dell’algoritmo.
In ultimo, la compressione può influire negativamente sul processo di training del modello, rendendolo meno efficace se viene applicata troppo presto, cioè prima che abbia raggiunto una buona capacità predittiva.
È dunque importante comprendere le criticità associate a questa tecnica, e considerare attentamente i trade-off tra le dimensioni del modello, la sua precisione e la sua complessità computazionale prima di applicare la compressione.
Model Compression: tipologie
Ci sono diversi tipi di Model Compression che possiamo utilizzare nel nostro progetto di AI.
Ogni tecnica ha un preciso obiettivo, finalizzato alla riduzione del modello.
Vediamo qui di seguito le più comuni.
Pruning
Il Pruning è una tecnica di compressione dei modelli di Deep Learning che comporta la rimozione selettiva di alcuni parametri, come i pesi o le connessioni, con l’obiettivo di ridurre la complessità computazionale senza comprometterne l’accuratezza.
Questa tecnica può essere applicata in vari modi, ma il concetto di base è quello di identificare i parametri meno importanti del modello e rimuoverli.
Ci sono diversi approcci per identificare i parametri meno importanti, tra cui:
- Pruning a soglia
Questa tecnica comporta la definizione di una soglia di importanza per i pesi del modello, e la rimozione di quelli al di sotto di tale soglia. I pesi vengono identificati come poco importanti se hanno un valore assoluto inferiore alla soglia. - Pruning casuale
Questa tecnica comporta la rimozione casuale di alcuni pesi o connessioni del modello. Sebbene possa essere meno efficace di altre tecniche di pruning, può essere utilizzata in combinazione per ottenere una compressione maggiore.
- Pruning strutturale
Questa tecnica comporta la rimozione di interi strati o blocchi di una rete neurale, invece di singoli pesi o connessioni. Questo può ridurre significativamente la dimensione del modello e la sua complessità computazionale, ma richiede di progettare la rete neurale in modo da facilitare il pruning strutturale.
Dopo la rimozione dei parametri meno importanti, il modello viene sottoposto a un processo di addestramento, o di “fine-tuning”, per ripristinarne l’accuratezza.
In particolare, si utilizza una tecnica di “pruning iterativo”, che comporta l’alternanza di fasi di pruning e di addestramento per mantenere l’accuratezza del modello durante il processo di compressione.
Il pruning è una tecnica molto efficace, che può ridurre significativamente la dimensione del modello e aumentarne l’efficienza computazionale, mantenendo allo stesso tempo un’accuratezza elevata.
Tuttavia deve essere utilizzato con cautela, in quanto una rimozione eccessiva di parametri può compromettere la precisione del modello stesso.
Quantizzazione
La quantizzazione è una tecnica di compressione dei modelli di Deep Learning che comporta la riduzione della precisione dei numeri impiegati nel modello, come i pesi o le attivazioni, da numeri decimali a numeri interi.
Può essere applicata in vari modi, ma il metodo più comune è la “quantizzazione a precisione fissa”.
Con questa tecnica, i numeri a virgola mobile usati nel modello vengono arrotondati a un numero a virgola fissa di bit.
Ad esempio, possiamo utilizzare numeri a 8 bit per rappresentare i pesi del modello, anziché numeri a virgola mobile a 32 bit.
Ciò comporta una riduzione della dimensione del modello e ne aumenta l’efficienza computazionale.
Un’altra tecnica è la “quantizzazione a interi”, in cui i numeri utilizzati vengono rappresentati da numeri interi anziché da numeri a virgola mobile.
In questo caso si utilizzano solo numeri interi positivi o negativi, anziché numeri a virgola mobile con un’ampia gamma di valori possibili.
La quantizzazione può anche essere usata in combinazione con il pruning per ottenere una compressione maggiore.
Ad esempio, i pesi di un modello possono essere quantizzati a precisione fissa e poi sottoposti a pruning, rimuovendo i pesi che contribuiscono poco alla precisione del modello.
Occorre però ricordare che la quantizzazione comporta una perdita di precisione nel modello, che può influire sull’accuratezza dei risultati.
Tuttavia in molti casi la perdita è accettabile, e i vantaggi superano gli svantaggi.
Knowledge Distillation
La Knowledge Distillation è una tecnica di compressione dei modelli di Deep Learning che consiste nell’addestrare un modello più piccolo, chiamato “studente”, usando le informazioni apprese da un modello più grande e complesso, chiamato “insegnante”.
In pratica, l’insegnante viene addestrato su un dataset di addestramento, e poi utilizzato per generare le predizioni su un altro dataset di validazione o di test.
Il suo output viene quindi utilizzato come target per l’addestramento dello studente, che cerca di imitare l’output dell’insegnante.
Durante la Knowledge Distillation, l’insegnante trasmette la sua conoscenza allo studente in due modi principali: attraverso le sue predizioni “hard” e “soft”.
Le predizioni “hard” sono le etichette di classe “one-hot” tipiche delle reti neurali tradizionali, dove una sola classe ha un valore di probabilità di 1 e tutte le altre sono 0.
Le predizioni “soft”, invece, sono distribuzioni di probabilità continue su tutte le classi.
L’idea chiave della Knowledge Distillation è che le predizioni “soft” dell’insegnante forniscono informazioni più ricche e dettagliate rispetto alle “hard”.
In particolare, contengono informazioni sulla relativa importanza delle classi, che lo studente può utilizzare per migliorare la sua capacità di generalizzazione e di adattamento a nuovi dati.
Durante l’addestramento dello studente si cerca di minimizzare la differenza tra le sue predizioni e quelle dell’insegnante, sia in forma “hard” che “soft”.
Ciò permette allo studente di apprendere le informazioni cruciali dall’insegnante, e di sviluppare una rappresentazione compressa e più efficiente del problema.
La Knowledge Distillation è una tecnica di compressione molto potente e versatile, che può ridurre significativamente la dimensione del modello e migliorarne l’efficienza computazionale senza comprometterne l’accuratezza.
Inoltre, la Knowledge Distillation può essere utilizzata per trasferire le informazioni apprese da un modello a un altro, ad esempio da un modello addestrato su un dominio di dati specifico a un altro addestrato su un dominio diverso.
Model Compression: applicazioni
L’obiettivo della Model Compression, come abbiamo visto, è quello di portare modelli complessi su assets meno potenti a livello computazionale, come smartphone, dispositivi IoT o microcontrollori.
I device mobili hanno risorse limitate in termini di memoria e di capacità di elaborazione rispetto ai computer tradizionali.
I modelli di Deep Learning, invece, richiedono una grande quantità di risorse computazionali per l’addestramento e l’inferenza, in quanto devono eseguire molte operazioni di calcolo su un gran numero di parametri.
Per rendere i modelli di Deep Learning utilizzabili sui dispositivi mobili è necessario comprimerli per ridurne dimensioni e complessità, in modo da adattarli alle risorse limitate.
L’Internet delle Cose, o “IoT”, si riferisce alla connessione di device, oggetti e sensori di vario genere alla rete.
Questi possono includere sensori ambientali, smartwatch, dispositivi medici, sensori di sicurezza, dispositivi per la casa intelligente, veicoli autonomi e molto altro.
L’obiettivo principale dell’IoT è quello di raccogliere dati dai device e utilizzarli per migliorare l’efficienza e la comodità nella vita quotidiana.
Il Deep Learning è una tecnologia che consente di analizzare grandi quantità di dati per trovare modelli e correlazioni, e quindi prendere decisioni o effettuare previsioni.
L’applicazione del Deep Learning nell’IoT può essere utile per l’analisi dei dati raccolti dai sensori per monitorare il traffico, migliorare l’efficienza energetica, prevedere guasti di macchine, o migliorare la sicurezza delle abitazioni.
Tuttavia, i dispositivi IoT hanno spesso risorse limitate, come la memoria, la capacità di elaborazione, la larghezza di banda e la durata della batteria.
Di conseguenza, l’uso di modelli di Deep Learning complessi su dispositivi IoT può essere problematico, ed è quindi necessario ricorrere alla Model compression per ottenere risultati significativi.
Model Compression: esempi
Per chiarire meglio ciò di cui stiamo parlando, proviamo a vedere insieme alcuni esempi di come questa tecnica viene sfruttata dai grandi player tech.
Ad esempio, Google ha usato la compressione dei modelli per migliorare la performance di Google Assistant su dispositivi mobili.
Grazie alla Model Compression, è riuscita a ridurre le dimensioni del modello di riconoscimento vocale di Google Assistant da 100 GB a soli 0,5 GB, senza perdere di precisione.
Intel ha utilizzato la compressione dei modelli per migliorare l’efficienza energetica dei suoi processori per l’elaborazione delle reti neurali.
Usando tecniche di pruning, quantizzazione e altri metodi di compressione, è riuscita a ridurre il tempo e il consumo di energia per l’elaborazione delle reti neurali.
NVIDIA ha sviluppato una tecnologia chiamata “TensorRT” che utilizza la model compression per migliorare l’efficienza dei suoi processori grafici (GPU) per l’elaborazione delle reti neurali.
TensorRT impiega tecniche di pruning, quantizzazione e fusione di layer per ridurre le dimensioni dei modelli e accelerare l’elaborazione.
Facebook ha utilizzato la compressione dei modelli per migliorare la performance di DeepFace, un sistema di riconoscimento facciale basato su Deep Learning.
Grazie alla model compression, è riuscita a ridurre le dimensioni del modello di DeepFace da 150 milioni di parametri a soli 6 milioni di parametri, senza perdere di precisione.
Apple ha usato la compressione dei modelli per migliorare l’efficienza energetica di Siri, il suo assistente virtuale basato sul Deep Learning.
Ha impiegato tecniche di pruning, quantizzazione e fusione di layer per ridurre le dimensioni del modello di Siri e migliorare l’efficienza energetica su dispositivi mobili come iPhone e iPad.
Ora invece immaginiamo che la nostra azienda produca componenti elettronici tramite robot industriali.
Questi utilizzano sensori per rilevare la posizione e l’orientamento dei componenti, e sfruttano i dati raccolti per eseguire compiti, come il montaggio di parti o la saldatura.
La raccolta e l’elaborazione delle informazioni richiede una grande quantità di risorse computazionali, che possono causare ritardi nella produzione e aumentare i costi operativi.
Usando la Model Compression possiamo ridurre le dimensioni del modello, riducendo così il tempo di elaborazione e migliorando l’efficienza dei robot.
Tramite tecniche di pruning e quantizzazione abbattiamo la quantità di dati necessari per l’elaborazione, diminuendo il numero di informazioni da trasferire attraverso la rete.
In questo modo possiamo ottimizzare la linea di produzione, riducendo i tempi di attesa e i costi operativi, e aumentando la produttività dei robot.
Immaginiamo ora che la nostra azienda produca pezzi meccanici tramite macchine CNC (Computer Numerical Control).
Queste macchine utilizzano un software di controllo per leggere i disegni CAD (Computer-Aided Design) e tradurli in istruzioni per il taglio del metallo.
Il software di controllo richiede una grande quantità di risorse computazionali per elaborare i disegni CAD e generare le istruzioni per la macchina.
Usando la model compression possiamo ridurre le dimensioni del modello, abbassando il tempo di elaborazione e migliorando l’efficienza delle macchine CNC.
Tramite tecniche di pruning e quantizzazione abbattiamo la quantità di dati necessari, diminuendo il numero di informazioni da trasferire tramite la rete.
In questo modo possiamo ridurre il tempo di produzione dei pezzi meccanici e aumentare la produttività, abbassando i costi operativi legati al consumo di energia e all’uso di risorse computazionali.
Questi sono alcuni esempi di come e quando utilizzare la Model Compression, e perché questa diventa determinante per il successo del nostro progetto di AI.
Conclusioni
La Model Compression è una tecnica importante per rendere i modelli di Deep Learning più efficienti e utilizzabili su dispositivi con risorse limitate.
Occorre però fare molta attenzione a non perdere in accuratezza, altrimenti tutto il lavoro di ridimensionamento può rivelarsi inutile.
Noi di DataDeep, mettiamo a disposizione la nostra esperienza attraverso consulenze personalizzate, progettate per adattarsi perfettamente alle tue necessità specifiche e per trasferire il know-how necessario a instaurare una cultura aziendale orientata ai dati.
Il nostro intento è quello di equipaggiare la tua azienda con le conoscenze e le abilità richieste per muoversi con dimestichezza nel contesto Data-Driven e nella gestione dei bias, fornendo gli strumenti per sfruttare al massimo le potenzialità offerte dai dati.
Se vuoi scoprire come possiamo supportarti nello sviluppo del tuo progetto, offrendo una panoramica dettagliata delle nostre aree di competenza e dei servizi disponibili, ti invitiamo a visitare: DataDeep – Studio di fattibilità
Da qui potremmo iniziare a mettere le basi di un approccio orientato ai dati per ogni processo aziendale.