Efficient Deep Learning Sfruttare il Potere della Compressione del Modello

Efficient Deep Learning Sfruttare la Compressione del Modello

Immagine di autore

Accelerare la velocità di inferenza del modello in produzione

Introduzione

Quando un modello di Machine Learning viene implementato in produzione, spesso ci sono requisiti da soddisfare che non vengono presi in considerazione nella fase di prototipazione del modello. Ad esempio, il modello in produzione dovrà gestire molte richieste da parte di diversi utenti che utilizzano il prodotto. Pertanto, si desidera ottimizzare ad esempio la latenza e/o il throughput.

  • Latenza: è il tempo impiegato per completare un’operazione, come ad esempio quanto tempo impiega per caricare una pagina web dopo aver cliccato su un link. È il tempo di attesa tra l’avvio di un’azione e la visualizzazione del risultato.
  • Throughput: è quante richieste un sistema può gestire in un determinato periodo di tempo.

Ciò significa che il modello di Machine Learning deve essere molto veloce nel fare le sue previsioni e per questo esistono varie tecniche che servono ad aumentare la velocità di inferenza del modello. Vediamo le più importanti in questo articolo.

Compressione del modello

Esistono tecniche che mirano a rendere i modelli più piccoli, motivo per cui vengono chiamate tecniche di compressione del modello, mentre altre si concentrano nel rendere i modelli più veloci nell’inferenza e quindi rientrano nel campo dell’ottimizzazione del modello. Spesso, però, rendere i modelli più piccoli aiuta anche la velocità di inferenza, quindi c’è una linea molto sottile che separa questi due campi di studio.

Fattorizzazione a basso rango

Questo è il primo metodo che vediamo ed è oggetto di molti studi, infatti di recente sono stati pubblicati molti articoli a riguardo.

L’idea di base è quella di sostituire le matrici di una rete neurale (le matrici che rappresentano i livelli della rete) con matrici di dimensione inferiore, anche se sarebbe più corretto parlare di tensori, poiché spesso abbiamo matrici di più di 2 dimensioni. In questo modo avremo meno parametri di rete e inferenza più veloce.

Un caso banale consiste nel sostituire le convoluzioni 3×3 in una rete CNN con convoluzioni 1×1. Tecniche simili sono utilizzate da reti come SqueezeNet.