Quantizzazione di un modello PNL umoristico DistilBERT

Dec 13 2022
Passaggio da FP32 a INT8 per un'inferenza più rapida con Optimum Intel e Intel Neural Compressor
La quantizzazione è una tecnica di compressione del modello che aiuta a ridurre il tempo di inferenza. La quantizzazione dal tipo a virgola mobile a 32 bit (FP32) al tipo intero a 8 bit (INT8) migliora le prestazioni con solo un leggero calo della precisione.
Foto di Tengyart su Unsplash

La quantizzazione è una tecnica di compressione del modello che aiuta a ridurre il tempo di inferenza. La quantizzazione dal tipo a virgola mobile a 32 bit (FP32) al tipo intero a 8 bit (INT8) migliora le prestazioni con solo un leggero calo della precisione. In generale, la dimensione del modello può ridursi di 4-5 volte e il tempo di inferenza può essere ridotto di oltre 3 volte ( fonte ).

Dobbiamo prima importare alcune altre librerie per la quantizzazione, incluse neural_compressore optimum.intel:

Sto impostando il torchdispositivo su cpu:

Possiamo ora applicare la quantizzazione. Dai un'occhiata agli esempi di classificazione del testo nel optimum.intel repository GitHub per saperne di più. Carichiamo un modello precedentemente addestrato:

Ho impostato il trainer per utilizzare la IncTrainero la classe Intel® Neural Compressor Trainer:

Ora è tutto pronto per eseguire la quantizzazione. Nota che sto usando un file di configurazione chiamato quantization.yml scaricato dal repository optimum.intel GitHub . È possibile modificare i parametri di configurazione in questo file per regolare la modalità di quantizzazione del modello. Qui sto applicando la quantizzazione dinamica post-addestramento, una tecnica che non richiede riaddestramento, ma di solito sacrifica un po' di precisione:

Possiamo quindi andare avanti ed eseguire la quantizzazione con optimizer.fit():

Ora che abbiamo un modello ottimizzato, possiamo confrontarlo con il modello di base:

Possiamo salvare il modello quantizzato su disco e avere a disposizione sia il modello FP32 che il nuovo modello INT8 quantizzato:

Modello INT8 salvato su disco

Eseguendo la valutazione con il modello FP32, otteniamo:

E per INT8:

La precisione è più o meno la stessa, ma il modello INT8 è 1,5 volte più veloce del modello FP32. Il codice completo può essere trovato su GitHub qui .

Puoi installare Intel Neural Compressor in modalità autonoma o come parte di Intel AI Analytics Toolkit . Per saperne di più sulle soluzioni hardware e software AI di Intel, visita qui .