UltraFastBERT Modello di linguaggio esponenzialmente più veloce

UltraFastBERT Il modello di linguaggio esponezialmente più veloce

I modelli di linguaggio e l’IA generativa, rinomati per le loro capacità, sono un argomento molto discusso nell’industria dell’IA. I ricercatori globali stanno migliorando la loro efficacia e capacità. Questi sistemi, tipicamente modelli di deep learning, sono pre-addestrati su ampi dati etichettati, incorporando reti neurali per l’auto-attenzione. Utilizzano vari livelli – feedforward, ricorrente, incorporato e di attenzione – per elaborare il testo in ingresso e produrre output pertinenti.

Nella maggior parte dei casi, i livelli feedforward dei grandi modelli di linguaggio contengono il maggior numero di parametri. Gli studi mostrano che questi modelli utilizzano solo una frazione dei neuroni disponibili per il calcolo dell’output durante l’inferenza.

Questo articolo introduce UltraFastBERT, un framework basato su BERT che eguaglia l’efficacia dei principali modelli BERT utilizzando solo lo 0,3% dei neuroni durante l’inferenza, ovvero 12 su 4095 in ogni livello. Esploreremo l’architettura, la funzionalità e i risultati di UltraFastBERT. Iniziamo.

UltraFastBERT: Un’introduzione alla modellazione del linguaggio straordinariamente più veloce

Tradizionalmente, un modello di linguaggio utilizza diversi componenti per dotarsi di capacità di generazione di contenuti, tra cui livelli feedforward, livelli ricorrenti, livelli incorporati e livelli di attenzione. Questi componenti sono responsabili di imparare a riconoscere i modelli durante l’addestramento e, alla fine, di generare un output accurato sulla base dei testi di input. Ogni componente ha alcuni parametri e nei modelli di linguaggio, la maggior parte di questi parametri è mantenuta dai livelli feedforward. Tuttavia, questi livelli feedforward non utilizzano il 100% dei neuroni disponibili per generare l’output per ogni input durante l’inferenza, il che comporta un spreco di risorse che aumenta la complessità, il tempo di calcolo e i costi computazionali.

Alla base, il framework UltraFastBERT è una variante del framework BERT che si basa su questo concetto e sostituisce i livelli feedforward con reti feedforward più veloci nella sua architettura, il che porta alla framework UltraFastBERT all’utilizzo di solo lo 0,3% dei neuroni disponibili pur fornendo risultati comparabili a modelli BERT di dimensioni e processo di addestramento simili, specialmente per i task successivi. Grazie alle sue implementazioni progettuali, i livelli intermedi nel framework UltraFastBERT sono straordinariamente più veloci.

Dato un network feedforward veloce (FFF) e un network feedforward (FF), entrambi con n neuroni, la complessità temporale di un passaggio in avanti in un network feedforward è O(n), mentre la complessità temporale è O(log2n) per un network feedforward veloce. La differenza di complessità temporale è principalmente dovuta al fatto che in un network feedforward veloce, i neuroni sono organizzati in un albero binario bilanciato e, quando viene fornito l’input, il network esegue solo un ramo dell’albero in modo condizionale. Inoltre, l’esecuzione dell’inferenza su un network feedforward veloce produce CMM o Moltiplicazione Matrice Condizionale, in cui le righe di input vengono moltiplicate singolarmente con le colonne del peso naturale e l’output dell’operazione di prodotto scalare precedente determina il peso delle colonne da proseguire. Di conseguenza, il network utilizza tutti i neuroni solo per alcuni input e nessun input richiede più di alcuni neuroni da gestire da parte del network. Il prodotto scalare CMM si contrappone al prodotto scalare DMM o Moltiplicazione Matrice Densa che calcola il prodotto scalare di tutti gli input con tutte le colonne dei pesi.

Per riassumere, UltraFastBERT è un framework basato su BERT che fornisce risultati comparabili ai modelli di linguaggio BERT all’avanguardia che:

  1. Utilizzano solo lo 0,3% dei neuroni disponibili durante la fase di inferenza e utilizzano solo 12 neuroni su un totale di 4095 neuroni per ogni livello di inferenza.
  2. Offrono prestazioni elevate paragonabili ai modelli di linguaggio BERT all’avanguardia mediante l’implementazione di strategie di messa a punto sui task successivi.
  3. Forniscono un’implementazione nativa della CMM o Moltiplicazione Matrice Condizionale che costituisce la base per la rete feedforward veloce e che porta a un incremento delle prestazioni pari a 78 volte rispetto alla matrice DMM nativa ottimizzata.

Reti neurali feedforward

Una rete neurale feedforward è una delle reti neurali artificiali più semplici che sposta le informazioni solo in direzione in avanti, dai nodi di input ai nodi di output attraverso i nodi nascosti. Uno dei principali punti di forza di una rete neurale feedforward veloce è che non ci sono loop o cicli in tali reti ed è più semplice costruirle rispetto alle RNN o Reti Neurali Ricorrenti e alle CNN o Reti Neurali Convoluzionali. L’architettura di una rete neurale feedforward veloce comprende tre componenti: strati di input, strati nascosti e strati di output, e ogni strato è costituito da unità chiamate neuroni e ogni strato è interconnesso agli altri con l’aiuto di pesi.

I neuroni presenti nei livelli di input ricevono input e li trasmettono al livello successivo. Il numero di neuroni in ogni livello di input è determinato dalla dimensione dei dati di input. Successivamente, abbiamo i livelli nascosti che non sono esposti né all’input né all’output e sono responsabili dei calcoli necessari. I neuroni in ogni livello nascosto prendono la somma pesata degli output dati dal livello precedente, utilizzano una funzione di attivazione e passano il risultato al livello successivo, e il processo si ripete ancora una volta. Infine, abbiamo il livello di output che produce l’output per gli input forniti. Ogni neurone in ogni livello di una rete neurale feedforward veloce è interconnesso con ogni neurone nel livello successivo, rendendo quindi le reti neurali FFF una rete completamente connessa. I pesi vengono utilizzati per rappresentare la forza della connessione tra i neuroni, e la rete aggiorna questi pesi per imparare i pattern, aggiornando i pesi sulla base dell’errore che si verifica nell’output.

Andando avanti, ci sono due fasi chiave nel funzionamento di una rete neurale feedforward veloce: la fase di feedforward e la fase di backpropagation.

Fase di feedforward

Nella fase di feedforward, l’input viene fornito alla rete e si propaga in avanti. I livelli nascosti quindi calcolano la somma pesata degli input e introducono non linearità nel modello passando la somma degli input attraverso una funzione di attivazione come ReLu, Sigmoide e TanH. Il processo si ripete ancora una volta fino a quando i pesi raggiungono il livello di output e il modello fa una previsione.

Fase di backpropagation

Una volta che il modello fa una previsione, calcola l’errore tra l’output generato e l’output atteso. L’errore viene quindi propagato all’indietro attraverso la rete e la rete utilizza un algoritmo di ottimizzazione di discesa del gradiente per regolare i pesi nel tentativo di ridurre al minimo l’errore.

UltraFastBERT: Architettura e funzionamento del modello

Il framework UltraFastBERT è basato sull’architettura crammedBERT e il framework UltraFastBERT utilizza tutti i componenti del framework crammedBERT tranne la natura dei livelli intermedi. Invece, il framework UltraFastBERT sostituisce l’encoder del transformer nei network feedforward contenuti nei livelli intermedi del framework crammedBERT con reti feedforward veloci. Il framework UltraFastBERT apporta le seguenti modifiche alle reti feedforward originali.

  1. Il framework elimina la differenza tra nodi foglia e non foglia utilizzando la funzione di attivazione GeLu tra i nodi e dotando questi nodi di pesi di output, eliminando completamente i bias di output. Successivamente, il framework fissa la dimensione delle foglie a 1.
  2. Infine, il framework consente a più alberi di reti feedforward veloci di essere eseguiti in parallelo calcolando congiuntamente i livelli di output intermedi. Il framework riesce a eseguire questo calcolo prendendo una somma degli alberi individuali e presentando la somma come livello di output intermedio.

Procedendo, durante l’addestramento, il framework UltraFastBERT segue la procedura di addestramento impiegata dal framework crammedBERT, che include la disabilitazione del dropout nel pretraining e l’utilizzo della pianificazione del tasso di apprendimento triangolare 1-ciclo. Il modello viene quindi sintonizzato per massimizzare le sue prestazioni su una vasta gamma di compiti principalmente del benchmark GLUE per un totale di 5 epoche.

Interferenza

L’interferenza è una parte importante per una rete feedforward veloce e queste reti feedforward veloci di per sé costituiscono una parte significativa dei grandi modelli di linguaggio, e sono conosciute per il loro eccezionale potenziale di accelerazione. Per comprendere questo potenziale di accelerazione, prendiamo ad esempio uno dei modelli di linguaggio più avanzati, il GPT-3, in cui le reti feedforward in ogni livello del transformer sono composte da oltre 49.100 neuroni. Se fosse addestrabile, una rete feedforward veloce (massima profondità di 15) potrebbe sostituire la rete feedforward originale. La rete feedforward veloce introdotta avrà oltre 65.000 neuroni, ma utilizzerà solo 16 di questi neuroni per l’interferenza, che corrisponde a circa lo 0,03% dei neuroni disponibili per il GPT-3.

Algoritmo e compatibilità

Il framework UltraFastBERT utilizza un algoritmo pseudocodice ricorsivo per l’interferenza rapida feedforward, e l’algoritmo è rappresentato nell’immagine sottostante. 

Qui, B rappresenta la dimensione del batch, H rappresenta la larghezza dei livelli di input e M rappresenta le colonne. Un’altra causa di preoccupazione nell’uso dell’approccio della moltiplicazione matriciale computazionale è se rende le reti feedforward rapide incompatibili con il processo già in uso per la moltiplicazione matriciale densa e i framework esistenti di deep learning. Fortunatamente, l’uso di CMM non influisce sulle prestazioni o introduce incompatibilità, anche se aumenta la complessità della memorizzazione nella cache. 

È importante notare che come parte della rete feedforward rapida, la moltiplicazione matriciale densa single-threaded si basa sull’esecuzione delle istruzioni MAC o moltiplicazione e accumulazione e, di conseguenza, la sostituzione dell’approccio DMM con CMM beneficerà delle CPU perché sono necessarie meno istruzioni MAC per calcolare l’output del livello per elemento. Pertanto, nonostante l’utilizzo di condizioni di ramificazione, il “ramificarsi neurale” agisce come un’aggiunta all’offset di memoria ai puntatori rilevanti nel framework. Pertanto, nel framework UltraFastBERT, la previsione del ramo di istruzioni non viene completamente attivata per facilitare la condizionalità del CMM e carica solo le colonne rilevanti della matrice dei pesi individualmente. Inoltre, poiché il framework esegue prodotti puntuali riga-colonna, il SIMD o elaborazione parallela a vettore di istruzioni singola per dati multipli è comunque una buona opzione per accelerare le implementazioni di interferenza per dispositivi specifici. 

UltraFastBERT: Performance e risultati

Parleremo delle prestazioni del framework UltraFastBERT per il fine-tuning e per le attività di interferenza per analizzare come il framework si comporta rispetto ai modelli linguistici di ultima generazione. 

Risultati del fine-tuning

La figura seguente illustra le prestazioni di vari modelli su set di dati di test GLUE-dev. Qui, N rappresenta il numero di neuroni disponibili per i framework per l’addestramento, “Avg” rappresenta il punteggio medio di tutte le attività. 

Come si può chiaramente vedere, il framework UltraFastBERT che è stato addestrato sulla GPU A6000 per più di 24 ore riesce a mantenere quasi il 96% delle prestazioni predictive su attività downstream GLUE rispetto al framework BERT originale. Inoltre, si può vedere che con un aumento della profondità delle reti feedforward rapide, le prestazioni dei framework subiscono un calo, anche se la maggior parte del degrado delle prestazioni avviene solo per l’attività CoLa. Se l’attività CoLa viene disattesa per un po’, il framework UltraFastBERT restituisce un punteggio di prestazioni predictive di circa il 98,6%. 

Risultati di interferenza

In questa sezione, confrontiamo le prestazioni di diverse reti feedforward o reti feedforward rapide su implementazioni di interferenza, e queste implementazioni sono distribuite su tre livelli. 

  1. Nell’implementazione di Livello 1, l’implementazione è costruita utilizzando le routine BLAS di Livello 1, ovvero il prodotto scalare-vettore e il prodotto vettore-vettore. 
  2. Nel Livello 2, le implementazioni fanno uso delle routine BLAS di Livello 2, ovvero il prodotto scalare-vettore batch e il prodotto matrice-vettore batch. 
  3. Nel Livello 3, le implementazioni utilizzano l’approccio di moltiplicazione matrice-matrice BLAS di Livello 3 non batched e, anche se è l’implementazione più veloce disponibile per le reti feedforward, tali implementazioni non sono disponibili per le reti feedforward rapide perché la libreria non supporta la sparsità del livello vettore della moltiplicazione matriciale computazionale. 

Inoltre, il framework UltraFastBERT utilizza implementazioni GPU utilizzando kernel CUDA personalizzati o PyTorch. 

La tabella soprastante confronta le prestazioni del framework UltraFastBERT con i suoi predecessori, i framework basati su BERT in termini di strati feedforward e feedforward rapidi in cui ogni colonna contiene il Fast Feedforward di inferenza relativo rispetto ai miglioramenti di velocità di implementazione del Feedforward usando le stesse primitive di routine algebriche lineari. 

Tuttavia, è importante notare che i miglioramenti di velocità riportati nella tabella soprastante sono destinati a “confronti equi”, ovvero entrambe le implementazioni di feedforward e feedforward rapido fanno uso delle stesse operazioni primitive di routine algebrica lineare identiche. Inoltre, a livello 1 e livello 2, le implementazioni delle reti feedforward rapide sono in grado di eseguire l’interferenza 48 volte e 78 volte più velocemente rispetto all’implementazione feedforward più veloce rispettivamente. 

Pensieri finali

In questo articolo abbiamo parlato di UltraFastBERT, una variante del framework BERT, che si basa sul concetto che gli strati feedforward non utilizzano il 100% dei neuroni disponibili per generare l’output per ogni input al momento dell’interferenza, il che porta a uno spreco di risorse che aumenta complessità, tempo di calcolo e costi computazionali. Questo framework sostituisce gli strati feedforward con reti feedforward più veloci nella sua architettura, il che porta infine al framework UltraFastBERT che utilizza solo lo 0.3% dei neuroni disponibili, pur ottenendo risultati comparabili ai modelli BERT di dimensioni simili e processo di addestramento, soprattutto per quanto riguarda i compiti successivi.

Grazie alle sue implementazioni di design, gli strati intermedi nel framework UltraFastBERT sono notevolmente più veloci. Inoltre, le ottime prestazioni offerte dal framework UltraFastBERT dimostrano che LLM possono ottenere ottime prestazioni utilizzando solo una frazione dei loro parametri per singole interferenze, poiché il framework UltraFastBERT utilizza solo lo 0.3% dei neuroni disponibili durante l’interferenza, riuscendo comunque ad ottenere un aumento di velocità di 78 volte rispetto ai tempi di interferenza.