Intelligenza artificiale
LoRa, QLoRA e QA-LoRA: adattabilità efficiente nei Large Language Model attraverso la fattorizzazione di matrici a basso rango

I Large Language Model (LLM) hanno creato un proprio spazio unico, offrendo capacità senza precedenti nella comprensione e generazione di testi simili a quelli umani. La potenza degli LLM può essere fatta risalire alle loro enormi dimensioni, che spesso raggiungono miliardi di parametri. Mentre questa enorme scala alimenta le loro prestazioni, contemporaneamente genera sfide, soprattutto quando si tratta di adattamento del modello per compiti o domini specifici. Le strategie convenzionali di gestione degli LLM, come il fine-tuning di tutti i parametri, presentano un onere computazionale e finanziario pesante, rappresentando così un ostacolo significativo alla loro adozione diffusa in applicazioni del mondo reale.
In un articolo precedente, abbiamo esplorato il fine-tuning dei Large Language Model (LLM) per adattarli a requisiti specifici. Abbiamo esaminato varie metodologie di fine-tuning, come l’Instruction-Based Fine-Tuning, il Single-Task Fine-Tuning e il Parameter Efficient Fine-Tuning (PEFT), ognuna con il proprio approccio unico per ottimizzare gli LLM per compiti diversi. Al centro della discussione c’era l’architettura del transformer, la colonna portante degli LLM, e le sfide poste dalle esigenze computazionali e di memoria nel gestire un vasto numero di parametri durante il fine-tuning.
L’immagine sopra rappresenta la scala di vari grandi modelli linguistici, ordinati per numero di parametri. Notiamo in particolare PaLM, BLOOM, ecc.
Quest’anno, ci sono stati progressi che hanno portato a modelli ancora più grandi. Tuttavia, l’addestramento di tali enormi modelli open-source su sistemi standard è impraticabile senza tecniche di ottimizzazione specializzate.
Entra in scena Low-Rank Adaptation (LoRA), introdotta da Microsoft in questo documento, con l’obiettivo di mitigare queste sfide e rendere gli LLM più accessibili e adattabili.
Il nucleo di LoRA risiede nel suo approccio all’adattamento del modello senza addentrarsi nelle complessità del ritraining dell’intero modello. A differenza del fine-tuning tradizionale, dove ogni parametro è soggetto a modifica, LoRA adotta una strada più intelligente. Congela i pesi del modello pre-addestrato e introduce matrici di decomposizione di rango trainabile in ogni livello dell’architettura del Transformer. Questo approccio riduce drasticamente il numero di parametri trainabili, garantendo un processo di adattamento più efficiente.
L’evoluzione delle strategie di tuning degli LLM
Riflettendo sul percorso del tuning degli LLM, è possibile identificare diverse strategie impiegate dai pratici nel corso degli anni. Inizialmente, l’attenzione si è concentrata sul fine-tuning dei modelli pre-addestrati, una strategia che prevede una modifica completa dei parametri del modello per adattarlo a un compito specifico. Tuttavia, man mano che i modelli crescevano in dimensioni e complessità, anche le esigenze computazionali di questo approccio sono aumentate.
La prossima strategia che ha guadagnato popolarità è stata il fine-tuning di subset, una versione più limitata del suo predecessore. Qui, solo un subset dei parametri del modello viene fine-tunato, riducendo il carico computazionale in una certa misura. Nonostante i suoi meriti, il fine-tuning di subset non è stato in grado di tenere il passo con la crescita dimensionale degli LLM.
Mentre i pratici esploravano vie più efficienti, il fine-tuning completo è emerso come un approccio rigoroso ma gratificante.
Introduzione a LoRA
Il rango di una matrice ci fornisce uno sguardo sulle dimensioni create dalle sue colonne, determinato dal numero di righe o colonne univoche che ha.
- Matrice a pieno rango: il suo rango corrisponde al numero minore tra le sue righe o colonne.
- Matrice a basso rango: con un rango notevolmente inferiore sia al numero di righe che di colonne, cattura meno caratteristiche.
Ora, i grandi modelli comprendono una vasta comprensione del loro dominio, come il linguaggio nei modelli linguistici. Tuttavia, il fine-tuning per compiti specifici spesso richiede solo l’evidenziazione di una piccola parte di queste comprensioni. Ecco dove LoRA brilla. Suggestisce che la matrice che mostra questi aggiustamenti dei pesi può essere una matrice a basso rango, catturando così meno caratteristiche.
LoRA limita intelligentemente il rango di questa matrice di aggiornamento dividendola in due matrici più piccole di rango. Quindi, invece di modificare l’intera matrice dei pesi, ne modifica solo una parte, rendendo il compito di fine-tuning più efficiente.
Applicazione di LoRA ai Transformer
LoRA aiuta a minimizzare il carico di addestramento nelle reti neurali concentrandosi su specifiche matrici di pesi. Sotto l’architettura del Transformer, alcune matrici di pesi sono collegate al meccanismo di auto-attenzione, in particolare Wq, Wk, Wv e Wo, oltre a due altre nel modulo Multi-Layer Perceptron (MLP).
Spiegazione matematica dietro LoRA
Vediamo di scomporre la matematica dietro LoRA:
- Matrice di pesi pre-addestrata :
- Parte con una matrice di pesi pre-addestrata di dimensioni . Ciò significa che la matrice ha righe e colonne.
- Decomposizione di rango basso:
- Invece di aggiornare direttamente l’intera matrice , che può essere computazionalmente costoso, il metodo propone un approccio di decomposizione di rango basso.
- L’aggiornamento a può essere rappresentato come il prodotto di due matrici: e .
- ha dimensioni
- ha dimensioni
- Il punto chiave qui è che il rango è molto più piccolo di entrambi e , il che consente una rappresentazione più efficiente in termini computazionali.
- Addestramento:
- Durante il processo di addestramento, rimane invariato. Ciò viene chiamato “congelamento” dei pesi.
- D’altra parte, e sono i parametri trainabili. Ciò significa che, durante l’addestramento, vengono apportate modifiche alle matrici e per migliorare le prestazioni del modello.
- Moltiplicazione e addizione:
- Entrambe e l’aggiornamento (che è il prodotto di e ) vengono moltiplicati per lo stesso input (denotato come ).
- I risultati di queste moltiplicazioni vengono poi aggiunti insieme.
- Questo processo è riassunto nell’equazione: Qui, rappresenta l’output finale dopo aver applicato gli aggiornamenti all’input .
In sintesi, questo metodo consente un modo più efficiente per aggiornare una grande matrice di pesi rappresentando gli aggiornamenti utilizzando una decomposizione di rango basso, il che può essere benefico in termini di efficienza computazionale e utilizzo della memoria.
Inizializzazione e scalatura:
Quando si addestrano modelli, come inizializziamo i parametri può influenzare notevolmente l’efficienza e l’efficacia del processo di apprendimento. Nel contesto della nostra matrice di aggiornamento dei pesi utilizzando e :
- Inizializzazione delle matrici e :
- Matrice : questa matrice viene inizializzata con valori Gaussiani casuali, anche noti come distribuzione normale. La ragione alla base dell’utilizzo dell’inizializzazione Gaussiana è quella di rompere la simmetria: diversi neuroni nello stesso livello impareranno caratteristiche diverse quando hanno pesi iniziali diversi.
- Matrice : questa matrice viene inizializzata con zeri. Facendo ciò, l’aggiornamento inizia come zero all’inizio dell’addestramento. Ciò garantisce che non ci siano cambiamenti improvvisi nel comportamento del modello all’inizio, permettendo al modello di adattarsi gradualmente mentre impara valori appropriati durante l’addestramento.
- Scalatura dell’output da :
- Dopo aver calcolato l’aggiornamento , il suo output viene scalato da un fattore di dove è una costante. Scalando, la magnitudine degli aggiornamenti viene controllata.
- La scalatura è particolarmente cruciale quando il rango cambia. Ad esempio, se si decide di aumentare il rango per una maggiore accuratezza (a scapito della computazione), la scalatura garantisce che non sia necessario aggiustare molti altri iperparametri nel processo. Ciò fornisce un livello di stabilità al modello.
Impatto pratico di LoRA
LoRA ha dimostrato il suo potenziale per adattare gli LLM a stili artistici specifici in modo efficiente, come mostrato dalla comunità di AI. Ciò è stato notevolmente dimostrato 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 fine-tunati con 175B parametri ciascuno è piuttosto costoso. Tuttavia, con LoRA, i parametri trainabili diminuiscono di 10.000 volte e l’utilizzo della memoria GPU viene ridotto a un terzo.
LoRA non solo rappresenta un passo significativo verso la rendizione degli LLM più accessibili, ma sottolinea anche il potenziale per colmare il divario tra progressi teorici e applicazioni pratiche nel dominio dell’AI. Riducendo gli ostacoli computazionali e facilitando un processo di adattamento del modello più efficiente, LoRA è pronta a svolgere un ruolo cruciale nell’adozione e nella distribuzione più ampia degli LLM in scenari del mondo reale.
QLoRA (Quantizzato)
Mentre LoRA è un gioco-chiave nella riduzione delle esigenze di archiviazione, richiede ancora una GPU potente per caricare il modello per l’addestramento. Ecco dove entra in scena QLoRA, o Quantized LoRA, che combina LoRA con la quantizzazione per un approccio più intelligente.
Normalmente, i parametri di peso vengono archiviati in formato a 32 bit (FP32), il che significa che ogni elemento nella matrice occupa 32 bit di spazio. Immaginate se potessimo comprimere le stesse informazioni in soli 8 o addirittura 4 bit. Questo è il nucleo dell’idea dietro QLoRA. La quantizzazione si riferisce al processo di mappatura di valori continui e infiniti in un insieme più piccolo di valori discreti e finiti. Nel contesto degli LLM, si riferisce al processo di conversione dei pesi del modello da tipi di dati a precisione più alta a tipi di dati a precisione più bassa.
Ecco una spiegazione più semplice di QLoRA:
- Quantizzazione iniziale: in primo luogo, il Large Language Model (LLM) viene quantizzato a 4 bit, riducendo notevolmente l’impronta di memoria.
- Addestramento LoRA: quindi, l’addestramento LoRA viene eseguito, ma con la precisione standard a 32 bit (FP32).
Ora, potreste chiedervi, perché tornare ai 32 bit per l’addestramento dopo aver ridotto a 4 bit? Bene, per addestrare efficacemente gli adattatori LoRA in FP32, i pesi del modello devono tornare a FP32 anche loro. Questo passaggio avanti e indietro viene eseguito in modo intelligente e graduale per evitare di sovraccaricare la memoria della GPU.
LoRA trova la sua applicazione pratica nella libreria di fine-tuning efficiente dei parametri (PEFT) di Hugging Face, semplificandone l’utilizzo. Per coloro che desiderano utilizzare QLoRA, è accessibile attraverso una combinazione delle librerie bitsandbytes e PEFT. Inoltre, la libreria di apprendimento per rinforzo del Transformer (TRL) di HuggingFace facilita il fine-tuning supervisionato con supporto integrato per LoRA. Insieme, queste tre librerie forniscono lo strumento essenziale per il fine-tuning di un modello pre-addestrato selezionato, consentendo la generazione di descrizioni di prodotti persuasive e coerenti quando viene fornito con istruzioni di attributi specifiche.
Dopo il fine-tuning da QLoRA, i pesi devono tornare a un formato ad alta precisione, il che può portare a una perdita di accuratezza e mancanza di ottimizzazione per accelerare il processo.
Una soluzione proposta è raggruppare la matrice dei pesi in segmenti più piccoli e applicare la quantizzazione e l’adattamento di rango basso a ogni gruppo individualmente. Un nuovo metodo, chiamato QA-LoRA, tenta di combinare i benefici della quantizzazione e dell’adattamento di rango basso, mantenendo il processo efficiente e il modello efficace per i compiti desiderati.
Conclusione
In questo articolo abbiamo toccato le sfide poste dalle loro enormi dimensioni dei parametri. Abbiamo esplorato le pratiche di fine-tuning tradizionali e le relative esigenze computazionali e finanziarie. Il nucleo di LoRA risiede nella sua capacità di modificare modelli pre-addestrati senza ritrainerli interamente, riducendo così i parametri trainabili e rendendo il processo di adattamento più conveniente in termini di costo.
Abbiamo anche esplorato brevemente QLoRA (Quantized LoRA), una combinazione di LoRA e quantizzazione che riduce l’impronta di memoria del modello mantenendo la precisione essenziale per l’addestramento. Con queste tecniche avanzate, i pratici sono ora dotati di librerie robuste, facilitando l’adozione e la distribuzione più ampia degli LLM in una gamma di scenari del mondo reale.
Queste strategie sono state progettate per bilanciare la resa degli LLM adattabili per compiti specifici e garantire che i processi di fine-tuning e distribuzione non siano eccessivamente onerosi in termini di calcolo e risorse di archiviazione.




















