Modelli e piattaforme di IA

UltraFastBERT: Un’introduzione ai Modelli Linguistici Esponenzialmente più Veloci

mm
Aggiungi Unite.AI alle tue fonti preferite su Google

I modelli linguistici e l’intelligenza artificiale generativa, noti per le loro capacità, sono un argomento caldo nell’industria dell’IA. I ricercatori di tutto il mondo stanno migliorando la loro efficacia e capacità. Questi sistemi, solitamente modelli di apprendimento profondo, sono pre-addestrati su dati etichettati estensivi, incorporando reti neurali per l’auto-attenzione. Utilizzano vari strati – feedforward, ricorrenti, incorporati e di attenzione – per elaborare il testo di input e produrre output rilevanti.

La maggior parte dei modelli linguistici grandi ha strati feedforward che 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 combina l’efficacia dei modelli BERT leader con l’utilizzo di solo lo 0,3% dei neuroni durante l’interferenza, in particolare 12 neuroni su 4095 in ogni livello. 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 di riconoscere modelli durante l’addestramento e, in ultima analisi, generare output precisi 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 uso inefficiente delle 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 processi di addestramento simili, soprattutto per le attività a valle. A causa delle sue implementazioni di progettazione, i livelli intermedi nel framework UltraFastBERT sono esponenzialmente più veloci.

Dato un network feedforward veloce (FFF) e un network feedforward (FF), ciascuno con n 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 si contrappone alla 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

  1. 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 livello di interferenza.
  2. Fornisce prestazioni solide paragonabili ai modelli BERT all’avanguardia implementando strategie di fine-tuning sulle attività a valle.
  3. 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 ottimizzata.

Reti Neurali Feedforward

Una rete neurale feedforward è una delle reti neurali artificiali più semplici che muove le informazioni solo in direzione forward, dai 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 alle CNN o Reti Neurali Convoluzionali. L’architettura di una rete neurale feedforward veloce comprende tre componenti: livelli di input, livelli nascosti e livelli di output, e ogni livello consiste in unità chiamate neuroni, e ogni livello è connesso all’altro con l’aiuto di pesi.

I neuroni presenti nei livelli di input ricevono input e li inoltrano al livello successivo. La quantità di neuroni in ogni livello di input è determinata dalla dimensione dei dati di input. Successivamente, ci sono 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 ponderata dei output dati dal livello precedente, applicano una funzione di attivazione e passano il risultato al livello successivo, e il processo si ripete. Infine, ci sono i livelli di output che producono l’output per gli input dati. Ogni neurone in ogni livello di una rete neurale feedforward veloce è connesso con ogni neurone nel livello successivo, 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 imparare 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. I livelli nascosti calcolano la somma ponderata degli input, 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 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 del gradiente per regolare i pesi nel tentativo di minimizzare l’errore.

UltraFastBERT: Architettura e Funzionamento del Modello

Il framework UltraFastBERT è costruito 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 il trasformatore dell’encodatore nei network feedforward contenuti nei livelli intermedi del framework crammedBERT con reti feedforward veloci. Il framework UltraFastBERT apporta le seguenti modifiche ai network feedforward originali.

  1. 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. Successivamente, il framework fissa la dimensione della foglia a 1.
  2. Infine, il framework consente più alberi di reti feedforward veloci in parallelo calcolando congiuntamente i livelli di output intermedi. Il framework gestisce questo calcolo sommando gli alberi individuali e presentando la somma come il livello 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 a tasso triangolare a 1 ciclo. Il modello viene quindi ottimizzato per massimizzare le sue 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 neurale feedforward veloce e queste reti neurali feedforward veloci in sé costituiscono una parte importante dei grandi modelli linguistici e sono note per il loro potenziale di accelerazione eccezionale. 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 livello di trasformatore consistono in oltre 49.100 neuroni. Se addestrabili, una rete feedforward veloce (profondità massima di 15) potrebbe sostituire la rete feedforward originale. La rete feedforward veloce introdotta avrebbe oltre 65.000 neuroni, ma utilizzerebbe 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 dei livelli di input e M rappresenta le colonne. Un’altra causa di preoccupazione importante nell’utilizzo dell’approccio di Moltiplicazione di Matrice Condizionale è se rende le reti neurali 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 neurale feedforward veloce, la moltiplicazione di matrice densa a thread singolo si basa sull’esecuzione delle istruzioni di moltiplicazione e accumulazione e, di conseguenza, sostituire la DMM con l’approccio CMM beneficerà i CPU perché saranno necessarie meno istruzioni di moltiplicazione e accumulazione per calcolare l’output del livello per elemento. Pertanto, nonostante impieghi una condizionalità normalmente associata alla ramificazione, la “ramificazione neurale” agisce come un’aggiunta all’offset di memoria per i puntatori rilevanti nel framework. Pertanto, nel framework UltraFastBERT, la previsione dell’istruzione di ramo non viene mai completamente impegnata per facilitare la condizionalità della CMM e carica solo le colonne rilevanti della matrice di peso individualmente. Inoltre, poiché il framework esegue prodotti riga-colonna, l’elaborazione vettoriale parallela SIMD o single instruction multiple data è ancora una buona opzione per accelerare le implementazioni di interferenza per dispositivi specifici.

UltraFastBERT: Prestazioni e Risultati

Parleremo delle prestazioni del framework UltraFastBERT per il fine-tuning e per le attività di interferenza per analizzare come il framework si confronta con i modelli linguistici all’avanguardia.

Risultati del Fine-Tuning

La figura seguente 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 su una GPU A6000 per oltre 24 ore, riesce a mantenere quasi il 96% delle prestazioni predittive sulle attività a valle di GLUE rispetto al framework BERT originale. Inoltre, si può anche vedere che con l’aumentare della profondità delle reti feedforward veloci, le prestazioni dei framework subiscono un calo, anche se la maggior parte della degradazione 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 dell’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.

  1. Nell’implementazione di livello 1, l’implementazione è costruita utilizzando le routine BLAS di livello 1, ovvero il prodotto scalare-vettore e i prodotti vettore-vettore.
  2. Nel livello 2, le implementazioni utilizzano le routine BLAS di livello 2, ovvero il prodotto scalare-vettore batchato e i prodotti matrice-vettore batchati.
  3. Nel livello 3, le implementazioni utilizzano l’approccio di moltiplicazione di matrice-matrice non batchata di livello 3 e, sebbene sia 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 CUDA personalizzati 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 gli aumenti di velocità dell’implementazione di interferenza feedforward veloce rispetto alla feedforward quando utilizzano le stesse primitive di routine lineari-algebriche.

Tuttavia, è importante notare che gli aumenti di velocità riportati nella tabella sopra sono destinati a “confronti equi”, ovvero sia le implementazioni feedforward veloci che quelle feedforward utilizzano le stesse operazioni primitive di routine lineari-algebriche. Inoltre, ai livelli 1 e 2, le implementazioni delle reti feedforward veloci sono in grado di eseguire l’interferenza 48 volte e 78 volte più velocemente dell’implementazione feedforward più veloce rispettivamente.

Pensieri Finali

In questo articolo, abbiamo parlato di UltraFastBERT, una variante del framework BERT, costruito sul concetto che gli strati feedforward non utilizzano il 100% dei neuroni disponibili per generare output per ogni input al momento dell’interferenza, il che porta a un uso inefficiente delle risorse che aumenta la complessità, il tempo di calcolo e i costi computazionali, 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 processi di addestramento simili, soprattutto per le attività a valle.

A causa delle sue implementazioni di progettazione, i livelli intermedi nel framework UltraFastBERT sono esponenzialmente più veloci. Inoltre, le prestazioni solide fornite dal framework UltraFastBERT sono una prova che i modelli linguistici possono fornire prestazioni solide impegnando solo una frazione dei loro parametri per le singole interferenze, poiché il framework UltraFastBERT utilizza solo lo 0,3% dei neuroni disponibili durante l’interferenza e riesce comunque a raggiungere un aumento di velocità di 78 volte rispetto ai tempi di interferenza.

Kunal Kejriwal è un ingegnere backend specializzato in Python, PostgreSQL, Redis e infrastrutture cloud su GCP e AWS. Con tre anni di esperienza nella costruzione e nella scalabilità di sistemi di produzione, scrive di infrastruttura AI, sistemi distribuiti e dell'architettura alla base del deployment di workload di machine learning.