Seguici sui social

LoRa, QLoRA e QA-LoRA: adattabilità efficiente in modelli linguistici di grandi dimensioni attraverso la fattorizzazione di matrici di basso rango

Intelligenza Artificiale

LoRa, QLoRA e QA-LoRA: adattabilità efficiente in modelli linguistici di grandi dimensioni attraverso la fattorizzazione di matrici di basso rango

mm
LoRA: adattamento di basso rango di modelli linguistici di grandi dimensioni

I Large Language Models (LLM) si sono ritagliati una nicchia unica, offrendo capacità senza precedenti nella comprensione e nella generazione di testi simili a quelli umani. La potenza degli LLM può essere fatta risalire alle loro enormi dimensioni, che spesso contengono miliardi di parametri. Sebbene questa enorme scala alimenti le loro prestazioni, allo stesso tempo crea sfide, soprattutto quando si tratta di adattamento del modello per compiti o domini specifici. I percorsi convenzionali di gestione degli LLM, come la messa a punto di tutti i parametri, presentano un pesante pedaggio computazionale e finanziario, ponendo così un ostacolo significativo alla loro diffusa adozione nelle applicazioni del mondo reale.

In un precedente articolo, abbiamo approfondito la messa a punto dei Large Language Models (LLM) per adattarli a requisiti specifici. Abbiamo esplorato varie metodologie di messa a punto come la messa a punto basata su istruzioni, la messa a punto di attività singola e la messa a punto efficiente dei parametri (PEFT), ciascuna con il suo approccio unico all'ottimizzazione degli LLM per attività distinte. Al centro della discussione c'erano l'architettura del trasformatore, la spina dorsale dei LLM, e le sfide poste dalle esigenze computazionali e di memoria legate alla gestione di un vasto numero di parametri durante la messa a punto.

Parametri in LLM

https://huggingface.co/blog/hf-bitsandbytes-integration

L'immagine sopra rappresenta la scala di vari modelli linguistici di grandi dimensioni, ordinati in base al numero di parametri. In particolare: Palma, FIORITURA, ecc.

A partire da quest’anno, ci sono stati progressi che hanno portato a modelli ancora più grandi. Tuttavia, l’ottimizzazione di modelli open source così giganteschi su sistemi standard è irrealizzabile senza tecniche di ottimizzazione specializzate.

Enter Low-Rank Adaptation (LoRA) è stato introdotto da Microsoft in questo carta, con l'obiettivo di mitigare queste sfide e rendere gli LLM più accessibili e adattabili.

Il punto cruciale di LoRA risiede nel suo approccio all’adattamento del modello senza approfondire le complessità della riqualificazione dell’intero modello. A differenza della messa a punto tradizionale, in cui ogni parametro è soggetto a modifiche, LoRA adotta un percorso più intelligente. Congela i pesi del modello pre-addestrato e introduce matrici di decomposizione dei ranghi addestrabili in ogni livello dell'architettura Transformer. Questo approccio riduce drasticamente il numero di parametri addestrabili, garantendo un processo di adattamento più efficiente.

L'evoluzione delle strategie di ottimizzazione LLM

Riflettendo sul viaggio dell'ottimizzazione LLM, è possibile identificare diverse strategie utilizzate dai professionisti nel corso degli anni. Inizialmente, i riflettori erano puntati sulla messa a punto dei modelli pre-addestrati, una strategia che comporta una modifica completa dei parametri del modello per adattarli al compito specifico da svolgere. Tuttavia, man mano che i modelli crescevano in dimensioni e complessità, aumentavano anche le esigenze computazionali di questo approccio.

La strategia successiva che ha guadagnato terreno è stata la messa a punto dei sottoinsiemi, una versione più contenuta del suo predecessore. In questo caso, solo un sottoinsieme dei parametri del modello viene messo a punto, riducendo in una certa misura il carico computazionale. Nonostante i suoi meriti, la messa a punto dei sottoinsiemi non è ancora riuscita a tenere il passo con il tasso di crescita delle dimensioni degli LLM.

Man mano che i professionisti si avventuravano ad esplorare strade più efficienti, la messa a punto completa è emersa come un approccio rigoroso ma gratificante.

Introduzione a LoRA

Il rango di una matrice ci dà un'idea delle dimensioni create dalle sue colonne, essendo determinato dal numero di righe o colonne univoche di cui dispone.

  • Matrice a rango completo: il suo rango corrisponde al numero minore tra le sue righe o colonne.
  • Matrice di basso rango: con un rango notevolmente inferiore sia al numero di righe che a quello delle colonne, cattura meno funzionalità.

Ora, i grandi modelli comprendono un’ampia comprensione del loro dominio, come il linguaggio nei modelli linguistici. Ma per metterli a punto per compiti specifici spesso è sufficiente evidenziare solo una piccola parte di queste comprensioni. Ecco dove LoRA brilla. Ciò suggerisce che la matrice che mostra questi aggiustamenti del peso può essere di basso rango, catturando così meno caratteristiche.

LoRA limita in modo intelligente il rango di questa matrice di aggiornamento suddividendola in due matrici di rango più piccole. Quindi, invece di alterare l’intera matrice dei pesi, ne cambia solo una parte, rendendo il compito di messa a punto più efficiente.

Applicazione di LoRA ai trasformatori

LoRA aiuta a ridurre al minimo il carico di addestramento nelle reti neurali concentrandosi su matrici di peso specifiche. Nell'architettura Transformer, alcune matrici di peso sono collegate al meccanismo di auto-attenzione, vale a dire Wq, Wk, Wv e Wo, oltre ad altre due nel modulo Multi-Layer Perceptron (MLP).

Architettura dei trasformatori

Architettura dei trasformatori

 

teste di attenzione del trasformatore

Teste di attenzione del trasformatore

Spiegazione matematica dietro LoRA

Analizziamo i calcoli dietro LoRA:

  1. Matrice del peso pre-allenato :
    • Si inizia con una matrice di peso pre-addestrata di dimensioni . Ciò significa che la matrice ha righe e colonne.
  2. Decomposizione di basso rango:
    • Invece di aggiornare direttamente l'intera matrice , che può essere computazionalmente costoso, il metodo propone un approccio di scomposizione di basso rango.
    • L'aggiornamento a può essere rappresentato come il prodotto di due matrici: e .
      • ha dimensioni
      • ha dimensioni
    • Il punto chiave qui è il rango è molto più piccolo di entrambi e , che consente una rappresentazione computazionalmente più efficiente.
  3. Formazione:
    • Durante il processo di formazione, Rimane invariato. Questo si chiama “congelamento” dei pesi.
    • D'altro canto, e sono i parametri addestrabili. Ciò significa che, durante l'addestramento, vengono apportate modifiche alle matrici e per migliorare le prestazioni del modello.
  4. Moltiplicazione e addizione:
    • Entrambi e l'aggiornamento (che è il prodotto di e ) vengono moltiplicati per lo stesso input (indicato come ).
    • I risultati di queste moltiplicazioni vengono quindi sommati.
    • Questo processo è riassunto nell’equazione: Qui, rappresenta l'output finale dopo aver applicato gli aggiornamenti all'input .

In breve, questo metodo consente un modo più efficiente per aggiornare una matrice di pesi di grandi dimensioni rappresentando gli aggiornamenti utilizzando una scomposizione di basso rango, che può essere vantaggiosa in termini di efficienza computazionale e utilizzo della memoria.

LORA Animazione

LORA

Inizializzazione e ridimensionamento:

Quando si addestrano i modelli, il modo in cui inizializziamo i parametri può influire in modo significativo sull'efficienza e sull'efficacia del processo di apprendimento. Nel contesto del nostro aggiornamento della matrice dei pesi utilizzando e :

  1. Inizializzazione delle matrici e :
    • Matrice : Questa matrice è inizializzata con valori gaussiani casuali, noti anche come distribuzione normale. La logica alla base dell'utilizzo dell'inizializzazione gaussiana è quella di rompere la simmetria: neuroni diversi nello stesso strato apprenderanno caratteristiche diverse quando hanno pesi iniziali diversi.
    • Matrice : Questa matrice è inizializzata con zeri. In questo modo, l'aggiornamento inizia da zero all'inizio dell'allenamento. Garantisce che non vi siano cambiamenti improvvisi nel comportamento del modello all'inizio, consentendo al modello di adattarsi gradualmente apprende i valori appropriati durante l'allenamento.
  2. Ridimensionamento dell'output da :
    • Dopo aver calcolato l'aggiornamento , il suo output è scalato di un fattore pari a where è una costante. Tramite il ridimensionamento, l'entità degli aggiornamenti viene controllata.
    • Il ridimensionamento è particolarmente cruciale quando si classifica i cambiamenti. Ad esempio, se decidi di aumentare il rango per una maggiore precisione (a scapito del calcolo), il ridimensionamento garantisce che non sarà necessario modificare molti altri iperparametri nel processo. Fornisce un livello di stabilità al modello.

Impatto pratico di LoRA

LoRA ha dimostrato il suo potenziale per adattare in modo efficiente i LLM a stili artistici specifici da parte di persone della comunità AI. Ciò è stato dimostrato in particolare nell'adattamento di un modello per imitare lo stile artistico di Greg Rutkowski.

Come evidenziato nel documento con GPT-3 175B come esempio. Avere istanze individuali di modelli ottimizzati con parametri 175B ciascuno è piuttosto costoso. Ma con LoRA, i parametri addestrabili diminuiscono di 10,000 volte e l’utilizzo della memoria della GPU viene ridotto a un terzo.

Impatto LoRa sulla sintonizzazione GPT-3

Impatto LoRa sulla messa a punto GPT-3

La metodologia LoRA non solo rappresenta un passo avanti significativo nel rendere gli LLM più accessibili, ma sottolinea anche il potenziale per colmare il divario tra i progressi teorici e le applicazioni pratiche nel dominio dell'intelligenza artificiale. Alleviando gli ostacoli computazionali e promuovendo un processo di adattamento del modello più efficiente, LoRA è pronta a svolgere un ruolo fondamentale nell’adozione e nell’implementazione più ampia di LLM in scenari del mondo reale.

QLoRA (quantizzato)

Sebbene LoRA rappresenti un punto di svolta nel ridurre le esigenze di archiviazione, richiede comunque una GPU pesante per caricare il modello per l'addestramento. È qui che entra in gioco QLoRA, o Quantized LoRA, fondendo LoRA con Quantization per un approccio più intelligente.

Quantizzazione

Quantizzazione

Normalmente i parametri di peso vengono memorizzati in un formato a 32 bit (FP32), il che significa che ogni elemento della matrice occupa 32 bit di spazio. Immagina se potessimo comprimere le stesse informazioni in soli 8 o anche 4 bit. Questa è l'idea centrale dietro QLoRA. La quantizzazione si riferisce al processo di mappatura di valori infiniti continui su un insieme più piccolo di valori finiti discreti. Nel contesto dei LLM, si riferisce al processo di conversione dei pesi del modello da tipi di dati a precisione più elevata a quelli a precisione inferiore.

Quantizzazione in LLM

Quantizzazione in LLM

Ecco una ripartizione più semplice di QLoRA:

  1. Quantizzazione iniziale: Innanzitutto, il Large Language Model (LLM) è quantizzato fino a 4 bit, riducendo significativamente l'ingombro della memoria.
  2. Formazione LoRA: Quindi, viene eseguito l'addestramento LoRA, ma con la precisione standard a 32 bit (FP32).

Ora, potresti chiederti, perché tornare a 32 bit per l'addestramento dopo essere stati ridotti a 4 bit? Bene, per addestrare in modo efficace gli adattatori LoRA in FP32, anche i pesi del modello devono tornare a FP32. Questo passaggio avanti e indietro viene eseguito in modo intelligente e passo dopo passo per evitare di sovraccaricare la memoria della GPU.

LoRA trova la sua applicazione pratica nell'Hugging Face Regolazione fine efficiente dei parametri (PEFT) libreria, semplificandone l'utilizzo. Per coloro che desiderano utilizzare QLoRA, è accessibile tramite una combinazione di bitsandbytes e biblioteche PEFT. Inoltre, HuggingFace Libreria Transformer Reinforcement Learning (TRL). facilita la messa a punto supervisionata con un supporto integrato per LoRA. Insieme, queste tre librerie forniscono il toolkit essenziale per mettere a punto un modello pre-addestrato selezionato, consentendo la generazione di descrizioni di prodotto persuasive e coerenti quando richiesto con istruzioni specifiche sugli attributi.

Dopo la messa a punto da parte di QLoRA, i pesi devono tornare a un formato ad alta precisione, il che può portare a una perdita di accuratezza e alla mancanza di ottimizzazione per accelerare il processo.

Una soluzione proposta consiste nel raggruppare la matrice dei pesi in segmenti più piccoli e applicare la quantizzazione e l'adattamento di basso rango a ciascun gruppo individualmente. Un nuovo metodo, chiamato QA-LoRA, cerca di fondere i vantaggi della quantizzazione e dell'adattamento di basso rango mantenendo il processo efficiente e il modello efficace per i compiti desiderati.

Conclusione

In questo articolo abbiamo accennato alle sfide poste dalle loro enormi dimensioni dei parametri. Abbiamo approfondito le tradizionali pratiche di messa a punto e le relative esigenze computazionali e finanziarie associate. Il punto cruciale di LoRA risiede nella sua capacità di modificare modelli pre-addestrati senza riqualificarli completamente, riducendo così i parametri addestrabili e rendendo il processo di adattamento più conveniente.

Abbiamo anche approfondito brevemente il Quantized LoRA (QLoRA), una combinazione di LoRA e Quantizzazione che riduce l'impronta di memoria del modello pur mantenendo la precisione essenziale per l'addestramento. Con queste tecniche avanzate, i professionisti sono ora dotati di solide librerie, facilitando l'adozione e l'implementazione più semplice di LLM in uno spettro di scenari del mondo reale.

Matrice

Matrice

Queste strategie sono realizzate per trovare un equilibrio tra il rendere gli LLM adattabili a compiti specifici e garantire che i processi di messa a punto e distribuzione non siano eccessivamente impegnativi in ​​termini di risorse di calcolo e di archiviazione.

Ho trascorso gli ultimi cinque anni immergendomi nell'affascinante mondo del Machine Learning e del Deep Learning. La mia passione e competenza mi hanno portato a contribuire a oltre 50 diversi progetti di ingegneria del software, con un focus particolare su AI/ML. La mia continua curiosità mi ha anche attirato verso l'elaborazione del linguaggio naturale, un campo che non vedo l'ora di esplorare ulteriormente.