Grandi modelli di linguaggio DistilBERT — Più piccolo, più veloce, più economico e più leggero

I grandi modelli di linguaggio DistilBERT più piccoli, più veloci, più economici e più leggeri

Lo svelare dei segreti della compressione di BERT: un framework studente-insegnante per un’efficienza massima

Introduzione

Negli ultimi anni, l’evoluzione dei grandi modelli linguistici è esplosa. BERT è diventato uno dei modelli più popolari ed efficienti che permette di risolvere una vasta gamma di compiti di NLP con alta precisione. Dopo BERT, sono apparsi sul mercato altri modelli che hanno dimostrato risultati eccezionali.

La tendenza ovvia che è diventata facile da osservare è il fatto che nel tempo i grandi modelli linguistici (LLM) tendono a diventare sempre più complessi, aumentando in modo esponenziale il numero di parametri e dati su cui vengono addestrati. La ricerca nell’apprendimento profondo ha dimostrato che tali tecniche di solito portano a migliori risultati. Purtroppo, il mondo del machine learning ha già affrontato diversi problemi riguardanti i LLM e la scalabilità è diventata l’ostacolo principale nell’addestramento, nell’archiviazione e nell’utilizzo efficace di essi.

Prendendo in considerazione questo problema, sono state sviluppate tecniche speciali per la compressione dei LLM. Gli obiettivi degli algoritmi di compressione sono: ridurre il tempo di addestramento, diminuire il consumo di memoria o accelerare l’infrazione del modello. Le tre tecniche di compressione più comuni utilizzate in pratica sono le seguenti:

  • Distillazione della conoscenza consiste nel formare un modello più piccolo che cerca di rappresentare il comportamento di un modello più grande.
  • Quantizzazione è il processo di riduzione di memoria per memorizzare i numeri che rappresentano i pesi del modello.
  • Riduzione si riferisce all’eliminazione dei pesi meno importanti del modello.

In questo articolo, capiremo il meccanismo di distillazione applicato a BERT che ha portato alla creazione di un nuovo modello chiamato DistillBERT. A proposito, le tecniche discusse di seguito possono essere applicate anche ad altri modelli di NLP.

Concetti di distillazione

Lo scopo della distillazione è creare un modello più piccolo in grado di imitare un modello più grande. In pratica, ciò significa che se un modello grande fa una previsione, ci si aspetta che un modello più piccolo faccia una previsione simile.

Per raggiungere questo obiettivo, è necessario che un modello più grande sia già preaddestrato (BERT nel nostro caso). Poi va scelta l’architettura di un modello più piccolo. Per aumentare la possibilità di imitazione riuscita, di solito si consiglia che il modello più piccolo abbia un’architettura simile a quella del modello più grande con un numero ridotto di parametri. Infine, il modello più piccolo impara dalle previsioni fatte dal modello più grande su un certo dataset. A tal fine, è fondamentale scegliere una funzione di perdita appropriata che aiuti il modello più piccolo a imparare meglio.

Nella notazione di distillazione, il modello più grande viene chiamato insegnante e il modello più piccolo viene chiamato studente.

In generale, la procedura di distillazione viene applicata durante il preaddestramento, ma può essere applicata anche durante il fine-tuning.

DistilBERT

DistilBERT impara da BERT e aggiorna i suoi pesi utilizzando una funzione di perdita che comprende tre componenti:

  • Perdita di masked language modeling (MLM)
  • Perdita di distillazione
  • Perdita di similarità

Di seguito, discuteremo queste componenti di perdita e capiremo la necessità di ognuna di esse. Tuttavia, prima di approfondire è necessario comprendere un concetto importante chiamato temperatura nella funzione di attivazione softmax. Il concetto di temperatura viene utilizzato nella funzione di perdita di DistilBERT.

Temperatura softmax

È spesso osservare una trasformazione softmax come l’ultimo strato di una rete neurale. Softmax normalizza tutte le uscite del modello, in modo che sommino a 1 e possano essere interpretate come probabilità.

Esiste una formula softmax in cui tutte le uscite del modello vengono divise da un parametro di temperatura T:

Formula della temperatura softmax. pᵢ e zᵢ sono l'output del modello e la probabilità normalizzata per l'oggetto i rispettivamente. T è il parametro di temperatura.

La temperatura T controlla la morbidezza della distribuzione di output:

  • Se T > 1, allora la distribuzione diventa più liscia.
  • Se T = 1, allora la distribuzione è la stessa se fosse stata applicata la softmax normale.
  • Se T < 1, allora la distribuzione diventa più irregolare.

Per rendere le cose chiare, guardiamo un esempio. Consideriamo una task di classificazione con 5 etichette in cui una rete neurale ha prodotto 5 valori indicando la confidenza di un oggetto di input appartenente a una classe corrispondente. Applicando softmax con diversi valori di T si ottengono diverse distribuzioni di output.

Un esempio di una rete neurale che produce diverse distribuzioni di probabilità basate sulla temperatura T

Più grande è la temperatura, più liscia diventa la distribuzione di probabilità.

Trasformazione softmax dei logit (numeri naturali da 1 a 5) basata su diversi valori di temperatura T. Man mano che la temperatura aumenta, i valori della softmax diventano più allineati tra loro.

Funzione di perdita

Perdita di masked language modeling

Come nel modello del docente (BERT), durante il pretraining, lo studente (DistilBERT) impara il linguaggio facendo previsioni per il task di masked language modeling. Dopo aver prodotto una previsione per un certo token, la distribuzione di probabilità prevista viene confrontata con la distribuzione di probabilità one-hot codificata del modello del docente.

La distribuzione one-hot codificata designa una distribuzione di probabilità in cui la probabilità del token più probabile viene impostata a 1 e le probabilità degli altri token vengono impostate a 0.

Come nella maggior parte dei modelli di linguaggio, la perdita di cross-entropy viene calcolata tra la distribuzione prevista e la vera distribuzione e i pesi del modello dello studente vengono aggiornati attraverso la retropropagazione.

Esempio di calcolo della perdita di masked language modeling

Perdita di distillazione

In realtà è possibile utilizzare solo la perdita dello studente per addestrare il modello dello studente. Tuttavia, in molti casi, potrebbe non essere sufficiente. Il problema comune nell’utilizzo solo della perdita dello studente risiede nella sua trasformazione softmax in cui la temperatura T viene impostata a 1. Nella pratica, la distribuzione risultante con T = 1 si presenta nella forma in cui una delle possibili etichette ha una probabilità molto alta vicina a 1 e tutte le altre probabilità delle etichette diventano basse, vicine a 0.

Una tale situazione non si allinea bene con i casi in cui due o più etichette di classificazione sono valide per un determinato input: lo strato softmax con T = 1 sarà molto probabile che escluda tutte le etichette valide tranne una e renderà la distribuzione di probabilità simile a una distribuzione one-hot encoding. Ciò comporta la perdita di informazioni potenzialmente utili che potrebbero essere apprese dal modello dello studente, rendendolo meno diverso.

Ecco perché gli autori del paper introducono la perdita di distillazione in cui le probabilità softmax vengono calcolate con una temperatura T > 1 rendendo possibile allineare in modo fluido le probabilità, prendendo così in considerazione diverse possibili risposte per lo studente.

Nella perdita di distillazione, la stessa temperatura T viene applicata sia allo studente che al docente. La codifica one-hot della distribuzione del docente viene rimossa.

Esempio di calcolo della perdita di distillazione

Al posto della perdita di cross-entropy, è possibile utilizzare la perdita di divergenza KL.

Perdita di similarità

Gli studiosi affermano anche che è utile aggiungere perdita di similarità coseno tra gli embedding dello stato nascosto.

Formula della perdita del coseno

In questo modo, è probabile che lo studente non solo riproduca correttamente i token mascherati, ma costruisca anche embedding simili a quelli dell’insegnante. Apre inoltre la possibilità di preservare le stesse relazioni tra gli embedding in entrambi gli spazi dei modelli.

Esempio di calcolo della perdita di similarità

Perdita tripla

Infine, viene calcolata la somma della combinazione lineare di tutte e tre le funzioni di perdita, che definisce la funzione di perdita in DistilBERT. In base al valore di perdita, viene eseguita una retropropagazione sul modello dello studente per aggiornare i suoi pesi.

Funzione di perdita di DistillBERT

Come dato interessante, tra i tre componenti di perdita, la perdita di modellazione del linguaggio mascherato ha la minore importanza sulle prestazioni del modello. La perdita di distillazione e la perdita di similarità hanno un impatto molto maggiore.

Inferenza

Il processo di inferenza in DistilBERT funziona esattamente come durante la fase di addestramento. L’unica sottigliezza è che la temperatura softmax T viene impostata su 1. Questo viene fatto per ottenere probabilità vicine a quelle calcolate da BERT.

Architettura

In generale, DistilBERT utilizza la stessa architettura di BERT, ad eccezione di questi cambiamenti:

  • DistilBERT ha solo la metà dei livelli di BERT. Ogni livello del modello è inizializzato prendendo un livello di BERT su due.
  • Vengono rimossi gli embedding di tipo token.
  • Viene rimossa la dense layer applicata allo stato nascosto del token [CLS] per un compito di classificazione.
  • Per una performance più robusta, gli autori utilizzano le migliori idee proposte in RoBERTa: – utilizzo della mascheratura dinamica – rimozione dell’obiettivo di previsione della prossima frase – addestramento su batch più grandi – viene applicata la tecnica dell’accumulazione del gradiente per calcoli del gradiente ottimizzati

La dimensione dell’ultimo livello nascosto (768) in DistilBERT è la stessa di BERT. Gli autori hanno segnalato che la sua riduzione non porta a miglioramenti considerevoli in termini di efficienza di calcolo. Secondo loro, la riduzione del numero totale di livelli ha un impatto molto maggiore.

Dati

DistilBERT viene addestrato sullo stesso corpus di dati di BERT che include BooksCorpus (800 milioni di parole) e English Wikipedia (2500 milioni di parole).

Confronto BERT vs DistilBERT

I parametri chiave delle prestazioni di BERT e DistilBERT sono stati confrontati sui diversi benchmark più popolari. Ecco i fatti importanti da ricordare:

  • Nell’inferenza, DistilBERT è il 60% più veloce di BERT.
  • DistilBERT ha 44 milioni di parametri in meno e in totale è il 40% più piccolo di BERT.
  • DistilBERT mantiene il 97% delle prestazioni di BERT.
Confronto BERT vs DistilBERT (sul dataset GLUE)

Conclusione

DistilBERT ha compiuto un enorme passo nell’evoluzione di BERT, permettendo di compressare significativamente il modello pur ottenendo prestazioni confrontabili in vari compiti di NLP. Oltre a ciò, DistilBERT pesa solo 207 MB, rendendo più facile l’integrazione su dispositivi con capacità limitata. La distillazione della conoscenza non è l’unica tecnica da applicare: DistilBERT può essere ulteriormente compresso con algoritmi di quantizzazione o potatura.

Risorse

Tutte le immagini, salvo diversa indicazione, sono dell’autore