Connect with us

Prompt engineering

Comprendere il fine-tuning di LLM: adattare i grandi modelli linguistici alle tue esigenze uniche

mm
LLM Fine tuning representation - Midjourney

Mentre ci troviamo a settembre 2023, il panorama dei Large Language Models (LLM) sta ancora assistendo alla crescita di modelli tra cui Alpaca, Falcon, Llama 2, GPT-4 e molti altri.

Un aspetto importante dell’utilizzo del potenziale di questi LLM risiede nel processo di fine-tuning, una strategia che consente la personalizzazione di modelli pre-addestrati per adattarsi a compiti specifici con precisione. È attraverso questo fine-tuning che questi modelli possono allinearsi veramente con esigenze individualizzate, offrendo soluzioni che sono sia innovative che personalizzate per le esigenze uniche.

Tuttavia, è essenziale notare che non tutte le strade del fine-tuning sono create uguali. Ad esempio, accedere alle capacità di fine-tuning del GPT-4 richiede un abbonamento a pagamento che è relativamente più costoso rispetto ad altre opzioni disponibili sul mercato. D’altra parte, il dominio open-source è in fermento con alternative che offrono un percorso più accessibile per sfruttare il potere dei grandi modelli linguistici. Queste opzioni open-source democratizzano l’accesso alla tecnologia AI avanzata, promuovendo innovazione e inclusività nel panorama AI in rapida evoluzione.

Perché il fine-tuning di LLM è importante?

Il fine-tuning di LLM è più di un miglioramento tecnico; è un aspetto cruciale dello sviluppo del modello LLM che consente un’applicazione più specifica e raffinata in vari compiti. Il fine-tuning regola i modelli pre-addestrati per adattarsi meglio a set di dati specifici, migliorando le loro prestazioni in compiti particolari e garantendo un’applicazione più mirata. Porta alla straordinaria capacità degli LLM di adattarsi a nuovi dati, mostrando flessibilità che è vitale nell’interesse crescente per le applicazioni AI.

Il fine-tuning dei grandi modelli linguistici apre molte opportunità, consentendo loro di eccellere in compiti specifici che vanno dall’analisi dei sentimenti alle recensioni della letteratura medica. Regolando il modello base per un caso d’uso specifico, sbloccchiamo nuove possibilità, migliorando l’efficienza e l’accuratezza del modello. Inoltre, facilita un utilizzo più economico delle risorse di sistema, poiché il fine-tuning richiede meno potenza computazionale rispetto all’addestramento di un modello da zero.

Mentre approfondiamo questa guida, discuteremo le sfumature del fine-tuning di LLM, fornendovi una panoramica completa basata sugli ultimi progressi e sulle migliori pratiche nel settore.

Fine-tuning basato su istruzioni

La fase di fine-tuning nel ciclo di vita dell’AI generativa, illustrata nella figura di seguito, è caratterizzata dall’integrazione di input e output di istruzioni, accompagnati da esempi di ragionamento passo dopo passo. Questo approccio consente al modello di generare risposte che non sono solo rilevanti ma anche precisamente allineate con le istruzioni specifiche fornite. È durante questa fase che i modelli pre-addestrati vengono adattati per risolvere compiti e casi d’uso distinti, utilizzando set di dati personalizzati per migliorare la loro funzionalità.

Generative AI Lifecycle - Fine Tuning, Prompt Engineering and RLHF

Generative AI Lifecycle – Fine Tuning

Fine-tuning per un solo compito

Il fine-tuning per un solo compito si concentra sull’affinare l’esperienza del modello in un compito specifico, come la sommarizzazione. Questo approccio è particolarmente benefico nell’ottimizzare i flussi di lavoro che coinvolgono documenti sostanziali o fili di conversazione, inclusi documenti legali e biglietti di supporto clienti. Notoriamente, questo fine-tuning può raggiungere miglioramenti significativi delle prestazioni con un set di esempi relativamente piccolo, che varia da 500 a 1000, a confronto con i miliardi di token utilizzati nella fase di pre-addestramento.

Single-Task Fine Tuning Example Illustration

Single-Task Fine Tuning Example Illustration

 

Fondamenti del fine-tuning di LLM: architettura Transformer e oltre

Il viaggio per comprendere il fine-tuning di LLM inizia con la comprensione degli elementi fondamentali che costituiscono gli LLM. Al cuore di questi modelli si trova l’architettura transformer, una rete neurale che sfrutta meccanismi di auto-attenzione per dare priorità al contesto delle parole rispetto alla loro prossimità in una frase. Questo approccio innovativo consente una comprensione più profonda delle relazioni lontane tra token nell’input.

Mentre navigiamo attraverso le sfumature dei transformer, incontriamo un processo multi-fase che inizia con l’encoder. Questa fase iniziale coinvolge la tokenizzazione dell’input e la creazione di vettori di incorporamento che rappresentano l’input e la sua posizione nella frase. Le fasi successive coinvolgono una serie di calcoli utilizzando matrici note come Query, Value e Key, culminando in un punteggio di auto-attenzione che detta l’attenzione su diverse parti della frase e vari token.

Transformer Architecture

Transformer Architecture

Il fine-tuning si erge come una fase critica nello sviluppo degli LLM, un processo che prevede l’apporto di sottili regolazioni per ottenere output più desiderabili. Questa fase, seppur essenziale, presenta una serie di sfide, tra cui le esigenze computazionali e di archiviazione di gestire un vasto numero di parametri. La tecnica di fine-tuning efficiente dei parametri (PEFT) offre tecniche per ridurre il numero di parametri da regolare, semplificando così il processo di addestramento.

Pre-addestramento di LLM: stabilire una solida base

Nelle fasi iniziali dello sviluppo di LLM, il pre-addestramento occupa il centro della scena, utilizzando transformer sovra-parametrizzati come architettura fondamentale. Questo processo coinvolge la modellazione del linguaggio naturale in vari modi, come bidirezionale, autoregressivo o sequenza-a-sequenza su grandi corpora non supervisionati. L’obiettivo qui è creare una base che possa essere successivamente regolata per compiti downstream specifici attraverso l’introduzione di obiettivi specifici del compito.

Pre-training, Fine-Tuning

Pre-training, Fine-Tuning

Un trend degno di nota in questo ambito è l’aumento inevitabile della scala dei modelli LLM pre-addestrati, misurata dal numero di parametri. I dati empirici mostrano costantemente che modelli più grandi, abbinati a più dati, quasi sempre producono prestazioni migliori. Ad esempio, il GPT-3, con i suoi 175 miliardi di parametri, ha stabilito un benchmark nella generazione di linguaggio naturale di alta qualità e nell’esecuzione di una vasta gamma di compiti zero-shot in modo efficiente.

Fine-tuning: il percorso verso l’adattamento del modello

Dopo il pre-addestramento, l’LLM subisce il fine-tuning per adattarsi a compiti specifici. Nonostante le prestazioni promettenti mostrate dall’apprendimento in contesto nei modelli pre-addestrati come GPT-3, il fine-tuning rimane superiore in ambienti di compiti specifici. Tuttavia, l’approccio prevalente di fine-tuning dei parametri completi presenta sfide, tra cui elevate esigenze computazionali e di memoria, specialmente quando si ha a che fare con modelli su larga scala.

Per grandi modelli linguistici con oltre un miliardo di parametri, la gestione efficiente della RAM della GPU è cruciale. Un singolo parametro del modello a precisione completa a 32 bit richiede 4 byte di spazio, traducendosi in un requisito di 4GB di RAM della GPU solo per caricare un modello da 1 miliardo di parametri. Il processo di addestramento effettivo richiede ancora più memoria per ospitare vari componenti, tra cui stati dell’ottimizzatore e gradienti, potenzialmente richiedendo fino a 80GB di RAM della GPU per un modello di questa portata.

Per navigare le limitazioni della RAM della GPU, si utilizza la quantizzazione, che è una tecnica che riduce la precisione dei parametri del modello, riducendo così i requisiti di memoria. Ad esempio, modificare la precisione da 32 bit a 16 bit può dimezzare la memoria necessaria sia per il caricamento che per l’addestramento del modello. Più avanti in questo articolo, impareremo di Qlora, che utilizza il concetto di quantizzazione per il fine-tuning.

LLM GPU Memory requirement wrt. number of parameters and precision

LLM GPU Memory requirement wrt. number of parameters and precision

 

Esplorare le categorie di metodi PEFT

Nel processo di fine-tuning completo dei Large Language Models, è importante avere un setup computazionale che possa gestire efficientemente non solo i sostanziali pesi del modello, che per i modelli più avanzati raggiungono ora dimensioni nell’ordine dei centinaia di gigabyte, ma anche gestire una serie di altri elementi critici. Questi includono l’allocazione della memoria per gli stati dell’ottimizzatore, la gestione dei gradienti, le attivazioni in avanti e la facilitazione della memoria temporanea durante varie fasi del processo di addestramento.

Metodo additivo

Questo tipo di regolazione può aumentare il modello pre-addestrato con parametri o livelli aggiuntivi, concentrandosi sull’addestramento solo dei parametri aggiunti di recente. Nonostante l’aumento del numero di parametri, questi metodi migliorano il tempo e l’efficienza dello spazio di addestramento. Il metodo additivo è ulteriormente suddiviso in sottocategorie:

  • Adapter: incorporare piccole reti neurali completamente connesse dopo i sottolivelli del transformer, con esempi notevoli come AdaMix, KronA e Compactor.
  • Prompt morbidi: regolare una sezione dell’incorporamento dell’input del modello attraverso la discesa del gradiente, con IPT, prefix-tuning e WARP come esempi prominenti.
  • Altri approcci additivi: includono tecniche come LeTS, AttentionFusion e Ladder-Side Tuning.

Metodo selettivo

I PEFT selettivi regolano un numero limitato di livelli superiori in base al tipo di livello e alla struttura interna del modello. Questa categoria include metodi come BitFit e LN tuning, che si concentrano sull’aggiustamento di elementi specifici come i bias del modello o particolari righe.

Metodo basato sulla riparametrizzazione

Questi metodi utilizzano rappresentazioni a basso rango per ridurre il numero di parametri addestrabili, con il più rinomato essendo l’adattamento a basso rango o LoRA. Questo metodo sfrutta una semplice decomposizione matriciale a basso rango per parametrizzare l’aggiornamento del peso, dimostrando un fine-tuning efficace in sottospazi a basso rango.

1) LoRA (Adattamento a basso rango)

LoRA è emerso come una tecnica di fine-tuning PEFT rivoluzionaria, introdotta in un articolo di Edward J. Hu e altri nel 2021. Funziona all’interno della categoria di riparametrizzazione, congelando i pesi originali dell’LLM e integrando nuove matrici a basso rango addestrabili in ogni livello dell’architettura Transformer. Questo approccio non solo riduce il numero di parametri addestrabili ma diminuisce anche il tempo di addestramento e le risorse computazionali necessarie, presentando così un’alternativa più efficiente al fine-tuning completo.

Per comprendere la meccanica di LoRA, è necessario ritornare all’architettura del transformer dove l’input del prompt subisce la tokenizzazione e la conversione in vettori di incorporamento. Questi vettori attraversano l’encoder e/o il decoder del transformer, incontrando reti di auto-attenzione e feed-forward le cui pesi sono pre-addestrati.

LoRA utilizza il concetto di decomposizione ai valori singolari (SVD). Fondamentalmente, la SVD divide una matrice in tre matrici distinte, una delle quali è una matrice diagonale che ospita i valori singolari. Questi valori singolari sono cruciali poiché misurano l’importanza delle diverse dimensioni nelle matrici, con valori più grandi che indicano maggiore importanza e valori più piccoli che denotano minore significato.

Singular Value Decomposition (SVD) of m × n Matrix

Singular Value Decomposition (SVD) of m × n Matrix

Questo approccio consente a LoRA di mantenere le caratteristiche essenziali dei dati mentre riduce la dimensionalità, ottimizzando così il processo di fine-tuning.

LoRA interviene in questo processo, congelando tutti i parametri del modello originali e introducendo una coppia di “matrici di decomposizione del rango” accanto ai pesi originali. Queste matrici più piccole, denotate come A e B, vengono addestrate attraverso l’apprendimento supervisionato.

L’elemento cruciale in questa strategia è il parametro chiamato “rango” (‘r’), che detta le dimensioni delle matrici a basso rango. Una scelta accurata di ‘r’ può produrre risultati impressionanti, anche con un valore più piccolo, creando così una matrice a basso rango con meno parametri da addestrare. Questa strategia è stata implementata con successo utilizzando librerie open-source come HuggingFace Transformers, facilitando il fine-tuning LoRA per vari compiti con notevole efficienza.

2) QLoRA: portare l’efficienza di LoRA più in alto

Basandosi sulle fondamenta gettate da LoRA, QLoRA riduce ulteriormente i requisiti di memoria. Introdotto da Tim Dettmers e altri nel 2023, combina l’adattamento a basso rango con la quantizzazione, utilizzando un formato di quantizzazione a 4 bit chiamato NormalFloat o nf4. La quantizzazione è essenzialmente un processo che transita i dati da una rappresentazione più informativa a una con meno informazioni. Questo approccio mantiene l’efficacia dei metodi di fine-tuning a 16 bit, dequantizzando i pesi a 4 bit a 16 bit come necessario durante i processi computazionali.

Comparing finetuning methods: QLORA enhances LoRA with 4-bit precision quantization and paged optimizers for memory spike management

Comparing finetuning methods: QLORA enhances LoRA with 4-bit precision quantization and paged optimizers for memory spike management

QLoRA sfrutta NumericFloat4 (nf4), puntando a ogni livello dell’architettura del transformer, e introduce il concetto di doppia quantizzazione per ridurre ulteriormente l’impronta di memoria richiesta per il fine-tuning. Ciò viene realizzato eseguendo la quantizzazione sui costanti già quantizzati, una strategia che evita le tipiche punte di memoria dello stato dell’ottimizzatore attraverso l’utilizzo di ottimizzatori paginati e gestione della memoria unificata.

Guanaco, che è un ensemble fine-tuned con QLORA, stabilisce un benchmark nelle soluzioni di chatbot open-source. Le sue prestazioni, validate attraverso valutazioni sistematiche umane e automatiche, sottolineano la sua supremazia e efficienza nel settore.

Le versioni da 65B e 33B di Guanaco, fine-tuned utilizzando una versione modificata del set di dati OASST1, emergono come contendenti formidabili a modelli rinomati come ChatGPT e persino GPT-4.

Fine-tuning utilizzando l’apprendimento per rinforzo con feedback umano

L’apprendimento per rinforzo con feedback umano (RLHF) entra in gioco quando si regola il fine-tuning dei modelli linguistici pre-addestrati per allinearsi più da vicino con i valori umani. Questo concetto è stato introdotto da Open AI nel 2017, gettando le basi per una migliore sommarizzazione dei documenti e lo sviluppo di InstructGPT.

Al cuore di RLHF c’è il paradigma dell’apprendimento per rinforzo, un tipo di tecnica di apprendimento automatico in cui un agente impara come comportarsi in un ambiente eseguendo azioni e ricevendo ricompense. È un ciclo continuo di azione e feedback, in cui l’agente è incentivato a fare scelte che produrranno la massima ricompensa.

Traducendo questo nel regno dei modelli linguistici, l’agente è il modello stesso, operante all’interno dell’ambiente di una data finestra di contesto e prendendo decisioni in base allo stato, che è definito dai token correnti nella finestra di contesto. Lo “spazio delle azioni” comprende tutti i token potenziali che il modello può scegliere, con l’obiettivo di selezionare il token che si allinea più da vicino con le preferenze umane.

Il processo RLHF sfrutta ampiamente il feedback umano, utilizzandolo per addestrare un modello di ricompensa. Questo modello gioca un ruolo cruciale nel guidare il modello pre-addestrato durante il processo di fine-tuning, incoraggiandolo a generare output che sono più allineati con i valori umani. È un processo dinamico e iterativo, in cui il modello impara attraverso una serie di “rollout”, un termine utilizzato per descrivere la sequenza di stati e azioni che portano a una ricompensa nel contesto della generazione del linguaggio.

Una delle potenzialità notevoli di RLHF è la sua capacità di promuovere la personalizzazione negli assistenti AI, adattandoli per risuonare con le preferenze individuali degli utenti, che sia il loro senso dell’umorismo o le loro routine quotidiane. Apre strade per la creazione di sistemi AI che non sono solo tecnicamente competenti ma anche intelligenti a livello emotivo, capaci di comprendere e rispondere alle sfumature della comunicazione umana.

Tuttavia, è essenziale notare che RLHF non è una soluzione infallibile. I modelli sono ancora suscettibili a generare output indesiderabili, riflesso dei vasti e spesso incontrollati e pregiudiziati dati su cui sono addestrati.

Conclusione

Il processo di fine-tuning, un passaggio critico nell’utilizzo del pieno potenziale degli LLM come Alpaca, Falcon e GPT-4, è diventato più raffinato e focalizzato, offrendo soluzioni personalizzate per una vasta gamma di compiti.

Abbiamo visto il fine-tuning per un solo compito, che si specializza nel modello in ruoli specifici, e i metodi di fine-tuning efficienti dei parametri (PEFT) tra cui LoRA e QLoRA, che mirano a rendere il processo di addestramento più efficiente e conveniente. Questi sviluppi stanno aprendo le porte a funzionalità AI di alto livello per un pubblico più ampio.

Inoltre, l’introduzione dell’apprendimento per rinforzo con feedback umano (RLHF) da parte di Open AI è un passo verso la creazione di sistemi AI che comprendono e si allineano più da vicino con i valori e le preferenze umane, preparando il terreno per assistenti AI che non sono solo intelligenti ma anche sensibili alle esigenze individuali degli utenti. Sia RLHF che PEFT lavorano in sinergia per migliorare la funzionalità e l’efficienza dei Large Language Models.

Mentre aziende, imprese e individui guardano all’integrazione di questi LLM fine-tuned nelle loro operazioni, stanno essenzialmente accogliendo un futuro in cui l’AI non è solo uno strumento, ma un partner che comprende e si adatta ai contesti umani, offrendo soluzioni che sono innovative e personalizzate.

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