introduzione
Quando un modello di Machine Learning viene distribuito in produzione, spesso ci sono requisiti da soddisfare che non vengono presi in considerazione in una fase di prototipazione del modello. Ad esempio, il modello in produzione dovrà gestire molte richieste da parte di diversi utenti che eseguono il prodotto. Quindi vorrai ottimizzare, ad esempio, la latenza e/o il throughput.
- Latenza: è il tempo necessario per completare un’attività, ad esempio il tempo necessario per caricare una pagina Web dopo aver fatto clic su un collegamento. È il tempo di attesa tra iniziare qualcosa e vedere il risultato.
- Portata: è quante richieste un sistema può gestire in un determinato 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 quelle più importanti in questo articolo.
Ci sono tecniche che mirano a realizzare modelli più piccoliecco perché vengono chiamati compressione del modello tecniche, mentre altri si concentrano sulla realizzazione di modelli più veloce nell’inferenza e quindi rientrano nel campo di ottimizzazione del modello.
Ma spesso rendere i modelli più piccoli aiuta anche con la velocità di inferenza, quindi la linea che separa questi due campi di studio è molto sfumata.
Fattorizzazione di basso rango
Questo è il primo metodo che vediamo, ed è molto studiato, infatti recentemente sono usciti molti articoli a riguardo.
L’idea di base è quella di sostituire le matrici di una rete neurale (le matrici che rappresentano gli strati della rete) con matrici di dimensionalità inferioreanche se sarebbe più corretto parlare di tensori, perché spesso possiamo avere matrici con più di 2 dimensioni. In questo modo avremo meno parametri di rete e un’inferenza più rapida.
Un caso banale è in una rete CNN in cui si sostituiscono le convoluzioni 3×3 con convoluzioni 1×1. Tali tecniche sono utilizzate da reti come SqueezeNet.