Intelligenza artificiale
UltraFastBERT: Modelli linguistici esponenzialmente più veloci

I modelli linguistici e l’intelligenza artificiale generativa, noti per le loro capacità, sono un argomento caldo nell’industria dell’intelligenza artificiale. I ricercatori di tutto il mondo stanno migliorando la loro efficacia e capacità. Questi sistemi, solitamente modelli di apprendimento profondo, vengono pre-addestrati su dati etichettati estensivi, incorporando reti neurali per l’auto-attenzione. Utilizzano diversi strati – feedforward, ricorrenti, incorporati e attenzione – per elaborare il testo di input e produrre output rilevanti.
In genere, gli strati feedforward dei grandi modelli linguistici contengono la maggior parte dei parametri. Gli studi mostrano che questi modelli utilizzano solo una frazione dei neuroni disponibili per il calcolo dell’output durante l’interferenza.
Questo articolo introduce UltraFastBERT, un framework basato su BERT che corrisponde all’efficacia dei principali modelli BERT, ma utilizza solo lo 0,3% dei neuroni durante l’interferenza, in particolare 12 su 4095 in ogni strato. Esploreremo l’architettura, la funzionalità e i risultati di UltraFastBERT. Iniziamo.
UltraFastBERT : Un’introduzione ai modelli linguistici esponenzialmente più veloci
Tradizionalmente, un modello linguistico utilizza diversi componenti per dotarsi di capacità di generazione di contenuti, tra cui strati feedforward, strati ricorrenti, strati incorporati e strati di attenzione. Questi componenti sono responsabili dell’apprendimento per riconoscere modelli durante l’addestramento e, in ultima analisi, generare output accurati in base ai testi di input. Ognuno di questi componenti ha alcuni parametri e, nei modelli linguistici, la maggior parte di questi parametri è detenuta dagli strati feedforward. Tuttavia, questi strati feedforward non utilizzano il 100% dei neuroni disponibili per generare output per ogni input al momento dell’interferenza, il che porta a un wasting di risorse che aumenta la complessità, il tempo di calcolo e i costi computazionali.
In sostanza, il framework UltraFastBERT è una variante del framework BERT, costruito su questo concetto e sostituisce gli strati feedforward con reti feedforward più veloci nella sua architettura, il che porta il framework UltraFastBERT a utilizzare solo lo 0,3% dei neuroni disponibili, fornendo risultati paragonabili ai modelli BERT con dimensioni e processo di addestramento simili, in particolare per le attività a valle. A causa delle sue implementazioni di progettazione, gli strati intermedi nel framework UltraFastBERT sono esponenzialmente più veloci,
Dato un network feedforward veloce (FFF) e un network feedforward (FF), ciascuno con n numero di neuroni, la complessità temporale di un passo in avanti in un network feedforward è O(n), mentre la complessità temporale è O(log2n) per un network feedforward veloce, e la differenza nella 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, eseguire l’interferenza su un network feedforward veloce porta a CMM o Moltiplicazione di matrice condizionale, in cui le righe di input puntano con le colonne di peso naturali individualmente, e l’output dell’operazione di prodotto precedente determina il peso delle colonne da proseguire. Di conseguenza, il network utilizza tutti i neuroni solo per pochi input e nessun input richiede più di pochi neuroni per essere gestito dal network. Il prodotto CMM contrasta con il DMM o Moltiplicazione di matrice densa che calcola il prodotto di tutte le righe di input con tutte le colonne di peso.
Per riassumere, UltraFastBERT è un framework basato su BERT che fornisce risultati paragonabili ai modelli linguistici BERT all’avanguardia che
- Utilizza solo lo 0,3% dei neuroni disponibili durante la fase di interferenza e coinvolge solo 12 neuroni su un totale di 4095 neuroni per ogni strato di interferenza.
- Fornisce prestazioni solide paragonabili ai modelli BERT all’avanguardia implementando strategie di fine-tuning sulle attività a valle.
- Fornisce un’implementazione nativa della CMM o Moltiplicazione di matrice condizionale che costituisce la base per il network feedforward veloce e porta a un aumento delle prestazioni di 78 volte rispetto alla moltiplicazione di matrice densa nativa ottimizzata.
Reti neurali feedforward
Una rete neurale feedforward è una delle reti neurali artificiali più semplici che muove le informazioni solo in direzione forward, dalle nodi di input ai nodi di output tramite nodi nascosti. Uno dei principali punti di forza di una rete neurale feedforward veloce è che non ci sono cicli o loop in tali reti e sono più semplici da costruire rispetto alle RNN o Reti neurali ricorrenti e CNN o Reti neurali convenzionali. L’architettura di una rete neurale feedforward veloce comprende tre componenti, ovvero strati di input, strati nascosti e strati di output, e ogni strato consiste di unità chiamate neuroni, e ogni strato è interconnesso con l’altro tramite pesi.
I neuroni presenti negli strati di input ricevono input e li inoltrano allo strato successivo. Il numero di neuroni in ogni strato di input è determinato dalla dimensione dei dati di input. Successivamente, abbiamo gli strati nascosti che non sono esposti né all’input né all’output e sono responsabili dei calcoli necessari. I neuroni in ogni strato nascosto prendono la somma ponderata degli output forniti dallo strato precedente, applicano una funzione di attivazione e passano il risultato allo strato successivo, e il processo si ripete. Infine, abbiamo lo strato di output che produce l’output per gli input forniti. Ogni neurone in ogni strato di una rete neurale feedforward veloce è interconnesso con ogni neurone nel prossimo strato, rendendo le reti neurali feedforward completamente connesse. I pesi sono utilizzati per rappresentare la forza della connessione tra i neuroni e la rete aggiorna questi pesi per apprendere i modelli aggiornando i pesi in base all’errore che si verifica nell’output.
Proseguendo, ci sono due fasi chiave nel funzionamento di una rete neurale feedforward veloce: la fase feedforward e la fase di backpropagation.
Fase feedforward
Nella fase feedforward, l’input viene fornito alla rete e poi propagato in avanti. Gli strati nascosti calcolano la somma ponderata degli input e introducono non-linearità nel modello passando la somma degli input attraverso una funzione di attivazione come ReLu, Sigmoid e TanH. Il processo si ripete fino a quando i pesi raggiungono lo strato 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 del gradiente discendente per regolare i pesi nel tentativo di minimizzare l’errore.
UltraFastBERT : Architettura del modello e funzionamento
Il framework UltraFastBERT è costruito sull’architettura crammedBERT e il framework UltraFastBERT utilizza tutti i componenti del framework crammedBERT tranne la natura degli strati intermedi. Invece, il framework UltraFastBERT sostituisce il trasformatore encoder nelle reti feedforward contenute negli strati intermedi del framework crammedBERT con reti feedforward veloci. Il framework UltraFastBERT apporta le seguenti modifiche alle reti feedforward originali.
- Il framework elimina la differenza tra nodi foglia e nodi non foglia utilizzando la funzione di attivazione GeLu across nodi e dotandoli di pesi di output e rimuovendo i bias di output nella loro interezza. Dopo di ciò, il framework fissa la dimensione della foglia a 1.
- Infine, il framework consente più alberi di reti feedforward veloci in parallelo calcolando congiuntamente gli strati di output intermedi. Il framework gestisce questo calcolo sommando gli alberi individuali e presentando la somma come lo strato di output intermedio.
Proseguendo, durante l’addestramento, il framework UltraFastBERT segue la procedura di addestramento utilizzata dal framework crammedBERT, che include la disabilitazione del dropout durante il pre-addestramento e l’utilizzo del programma di apprendimento triangolare a 1 ciclo. Il modello viene quindi ottimizzato per massimizzare le prestazioni su una vasta gamma di attività, 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 in sé costituiscono una parte importante dei grandi modelli linguistici e sono note per il loro eccezionale potenziale di accelerazione. Per comprendere questo potenziale di accelerazione, prendiamo ad esempio uno dei modelli linguistici più avanzati, il GPT-3, in cui le reti feedforward in ogni strato di trasformatore consistono in oltre 49.100 neuroni. Se addestrabili, una rete feedforward veloce (con profondità massima 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, il che equivale 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 feedforward veloce e l’algoritmo è rappresentato nell’immagine seguente.

Qui, B rappresenta la dimensione del batch, H rappresenta la larghezza degli strati di input e M rappresenta le colonne. Un’altra causa di preoccupazione nell’utilizzo dell’approccio di Moltiplicazione di matrice condizionale è se rende le reti feedforward veloci incompatibili con il processo già in uso per la Moltiplicazione di matrice densa e i framework di apprendimento profondo esistenti. Fortunatamente, l’utilizzo di CMM non influisce sulle prestazioni o introduce incompatibilità, anche se aumenta la complessità di caching.
È vitale notare che come parte della rete feedforward veloce, la moltiplicazione di matrice densa a thread singolo si basa sull’esecuzione delle istruzioni MAC o Moltiplicazione e Accumulazione e, di conseguenza, sostituire la DMM con l’approccio CMM beneficerà i CPU perché saranno necessarie meno istruzioni MAC per calcolare l’output del livello per elemento. Pertanto, nonostante l’impiego di condizionalità normalmente associata al branching, il “branching neurale” agisce come un’addizione all’offset di memoria per i puntatori rilevanti nel framework. Pertanto, nel framework UltraFastBERT, la previsione dell’istruzione di branching non viene mai completamente coinvolta per facilitare la condizionalità della CMM e carica solo le colonne rilevanti della matrice di peso individualmente. Inoltre, poiché il framework esegue prodotti scalari riga-colonna, il vettorizzato SIMD o Single Instruction Multiple Data è ancora un’opzione valida per accelerare le implementazioni di interferenza per dispositivi specifici.
UltraFastBERT : Prestazioni e risultati
Parleremo delle prestazioni del framework UltraFastBERT per l’ottimizzazione e per le attività di interferenza per analizzare come il framework si comporta rispetto ai modelli linguistici all’avanguardia.
Risultati di ottimizzazione
La seguente figura mostra le prestazioni di vari modelli sui 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ò vedere chiaramente, il framework UltraFastBERT, addestrato sul GPU A6000 per oltre 24 ore, mantiene quasi il 96% delle prestazioni predittive sulle attività a valle GLUE rispetto al framework BERT originale. Inoltre, si può anche vedere che con l’aumento della profondità delle reti feedforward veloci, le prestazioni dei framework subiscono un calo, anche se la maggior parte del degrado delle prestazioni si verifica solo per l’attività CoLa. Se si esclude l’attività CoLa, il framework UltraFastBERT restituisce un punteggio di prestazione predittiva di circa il 98,6%.
Risultati di interferenza
In questa sezione, confronteremo le prestazioni di diverse reti feedforward o reti feedforward veloci sulle implementazioni di interferenza e queste implementazioni sono diffuse su tre livelli.
- Nel livello 1, l’implementazione è costruita utilizzando le routine BLAS di livello 1, ovvero prodotto scalare-vettore e prodotti scalari vettore.
- Nel livello 2, le implementazioni utilizzano le routine BLAS di livello 2, ovvero prodotti scalari-vettore batch e prodotti scalari matrice-vettore batch.
- Nel livello 3, le implementazioni utilizzano l’approccio di moltiplicazione matrice-matrice non batch BLAS di livello 3 e, anche se è l’implementazione più veloce disponibile per le reti feedforward, tali implementazioni non sono disponibili per le reti feedforward veloci perché la libreria non supporta la sparsità a livello di vettore della Moltiplicazione di matrice condizionale.
Inoltre, il framework UltraFastBERT distribuisce le implementazioni GPU utilizzando nuclei personalizzati CUDA o PyTorch.

La tabella sopra, confronta le prestazioni del framework UltraFastBERT con i suoi predecessori, i framework basati su BERT, in termini di strati feedforward e reti feedforward veloci, dove ogni colonna contiene il relativo aumento di velocità dell’implementazione di interferenza feedforward veloce rispetto all’implementazione feedforward quando utilizzano le stesse primitive di routine algebriche lineari.
Tuttavia, è importante notare che gli aumenti di velocità segnalati nella tabella sopra sono destinati a “confronti equi”, ovvero sia le implementazioni feedforward veloci che quelle feedforward utilizzano le stesse operazioni primitive di routine algebriche lineari. Inoltre, nei livelli 1 e 2, le implementazioni delle reti feedforward veloci 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, costruito su questo concetto e sostituisce gli strati feedforward con reti feedforward più veloci nella sua architettura, il che porta il framework UltraFastBERT a utilizzare solo lo 0,3% dei neuroni disponibili, fornendo risultati paragonabili ai modelli BERT con dimensioni e processo di addestramento simili, in particolare per le attività a valle. A causa delle sue implementazioni di progettazione, gli strati intermedi nel framework UltraFastBERT sono esponenzialmente più veloci. Inoltre, le forti prestazioni fornite dal framework UltraFastBERT sono una prova che i modelli linguistici possono fornire forti prestazioni impegnando solo una frazione dei loro parametri per singole interferenze, poiché il framework UltraFastBERT utilizza solo lo 0,3% dei neuroni disponibili durante l’interferenza e gestisce comunque di raggiungere un aumento di velocità di 78 volte sui tempi di interferenza.








