Prompt engineering

Comprendere il fine-tuning di LLM: personalizzare i modelli di linguaggio di grandi dimensioni in base alle esigenze uniche

mm
Aggiungi Unite.AI alle tue fonti preferite su Google
LLM Fine tuning representation - Midjourney

Ad settembre 2023, il panorama dei modelli di linguaggio di grandi dimensioni (LLM) sta ancora assistendo alla crescita di modelli come Alpaca, Falcon, Llama 2, GPT-4 e molti altri.

Un aspetto importante dell’utilizzo del potenziale di questi LLM consiste nel processo di fine-tuning, una strategia che consente la personalizzazione dei 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 innovative e personalizzate.

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 piena fioritura con alternative che offrono un percorso più accessibile per sfruttare il potere dei modelli di linguaggio di grandi dimensioni. 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. Presenta la notevole capacità dei LLM di adattarsi a nuovi dati, mostrando flessibilità vitale nell’interesse crescente per le applicazioni AI.

Il fine-tuning dei modelli di linguaggio di grandi dimensioni 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, sblocciamo 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 ci addentriamo in questo guide, 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 sottostante, è 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 non solo rilevanti, ma anche allineate con precisione alle 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 thread di conversazione, inclusi documenti legali e biglietti di supporto clienti. Notevolmente, questo fine-tuning può raggiungere miglioramenti significativi delle prestazioni con un set di esempi relativamente piccolo, che varia da 500 a 1000, in contrasto con i miliardi di token utilizzati nella fase di pre-addestramento.

Esempio di fine-tuning per un solo compito

Esempio di fine-tuning per un solo compito

 

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 i 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 vicinanza in una frase. Questo approccio innovativo consente una comprensione più profonda delle relazioni a distanza tra token nell’input.

Man mano che esploriamo le sfumature dei Transformer, incontriamo un processo a più fasi che inizia con l’encoder. Questa fase iniziale coinvolge la tokenizzazione dell’input e la creazione di vettori di embedding 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 determina l’attenzione su diverse parti della frase e token.

Architettura Transformer

Architettura Transformer

Il fine-tuning si erge come una fase critica nello sviluppo dei LLM, un processo che richiede ajustamenti sottili per ottenere output più desiderabili. Questa fase, sebbene essenziale, presenta una serie di sfide, tra cui le esigenze computazionali e di archiviazione per gestire un vasto numero di parametri. Il 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 architetture Transformer sovra-parametrizzate come base fondamentale. Questo processo coinvolge la modellazione del linguaggio naturale in vari modi, come bidirezionale, auto-regressivo o sequenza-a-sequenza, su grandi corpora non supervisionati. L’obiettivo qui è creare una base che possa essere regolata in seguito per compiti downstream specifici attraverso l’introduzione di obiettivi specifici del compito.

Pre-addestramento, fine-tuning

Pre-addestramento, fine-tuning

Un trend degno di nota in questo ambito è l’aumento inevitabile della scala dei LLM pre-addestrati, misurata dal numero di parametri. I dati empirici mostrano costantemente che modelli più grandi, abbinati a più dati, producono quasi sempre 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 con competenza.

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

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

Per i modelli di linguaggio di grandi dimensioni 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 con un miliardo di parametri. Il processo di addestramento effettivo richiede ancora più memoria per ospitare componenti come gli stati dell’ottimizzatore e i gradienti, potenzialmente richiedendo fino a 80GB di RAM della GPU per un modello di questa portata.

Per navigare nelle limitazioni della RAM della GPU, si utilizza la quantizzazione, una tecnica che riduce la precisione dei parametri del modello, riducendo così le esigenze 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.

Requisito di memoria della GPU LLM in relazione al numero di parametri e precisione

Requisito di memoria della GPU LLM in relazione al numero di parametri e precisione

 

Esplorare le categorie di metodi PEFT

Nel processo di fine-tuning completo dei LLM, è 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 di memoria per gli stati dell’ottimizzatore, la gestione dei gradienti, le attivazioni in avanti e la gestione della memoria temporanea durante le varie fasi del processo di addestramento.

Metodo additivo

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

  • Adattatori: incorporare piccole reti completamente connesse dopo i sottolayer dei Transformer, con esempi notevoli come AdaMix, KronA e Compactor.
  • Prompt morbidi: regolare un segmento delle embedding di input del modello attraverso il gradiente discendente, 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 layer superiori in base al tipo di layer 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 regolabili, con il più noto 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 PEFT innovativa, introdotta in un articolo da Edward J. Hu e altri nel 2021. Opera all’interno della categoria della riparametrizzazione, congelando i pesi originali del LLM e integrando nuove matrici a basso rango regolabili in ogni layer dell’architettura Transformer. Questo approccio non solo riduce il numero di parametri regolabili, ma diminuisce anche il tempo di addestramento e le risorse computazionali necessarie, presentandosi così come un’alternativa più efficiente al fine-tuning completo.

Per comprendere la meccanica di LoRA, è necessario ritornare all’architettura Transformer dove il prompt di input subisce la tokenizzazione e la conversione in vettori di embedding. 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 contiene 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.

Decomposizione ai valori singolari (SVD) di una matrice rettangolare m × n

Decomposizione ai valori singolari (SVD) di una matrice m × n

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 originale e introducendo una coppia di “matrici di decomposizione di rango” accanto ai pesi originali. Queste matrici più piccole, denotate come A e B, subiscono l’addestramento attraverso l’apprendimento supervisionato.

L’elemento cruciale in questa strategia è il parametro chiamato rango (‘r’), che determina le dimensioni delle matrici a basso rango. Una scelta attenta 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: aumentare l’efficienza di LoRA

Basandosi sulle fondamenta gettate da LoRA, QLoRA riduce ulteriormente le esigenze di memoria. Introdotta 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 trasferisce i dati da una rappresentazione ad alta informazione a una con meno informazione. 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.

Confronto dei metodi di fine-tuning: QLORA migliora LoRA con quantizzazione a 4 bit e ottimizzatori paginati per la gestione degli spike di memoria

Confronto dei metodi di fine-tuning: QLORA migliora LoRA con quantizzazione a 4 bit e ottimizzatori paginati per la gestione degli spike di memoria

QLoRA sfrutta il NumericFloat4 (nf4), mirando a ogni layer dell’architettura Transformer, e introduce il concetto di doppia quantizzazione per ridurre ulteriormente l’impronta di memoria necessaria per il fine-tuning. Ciò viene realizzato eseguendo la quantizzazione sui costanti già quantizzati, una strategia che evita gli spike di memoria tipici della memorizzazione dei gradienti attraverso l’utilizzo di ottimizzatori paginati e una gestione della memoria unificata.

Guanaco, che è un ensemble regolato 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 campo.

Le versioni da 65B e 33B di Guanaco, regolate 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 da feedback umano

L’apprendimento per rinforzo da feedback umano (RLHF) entra in gioco quando si regolano i modelli di linguaggio pre-addestrati per allinearsi più strettamente 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, una tecnica di apprendimento automatico in cui un agente impara a comportarsi in un ambiente eseguendo azioni e ricevendo ricompense. È un ciclo continuo di azione e feedback, dove l’agente è incentivato a fare scelte che produrranno la ricompensa più alta.

Traducendo questo nel regno dei modelli di linguaggio, 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ù strettamente 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 fine-tuning, incoraggiandolo a generare output che sono più allineati con i valori umani. È un processo dinamico e iterativo, dove il modello apprende attraverso una serie di “rollout”, un termine usato 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 emotivamente, in grado 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 non regolamentati e pregiudizi nei dati su cui sono addestrati.

Conclusione

Il processo di fine-tuning, una fase critica nello sfruttare appieno il potenziale dei 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 specializza i modelli in ruoli particolari, e i metodi di fine-tuning efficiente dei parametri (PEFT) come LoRA e QLoRA, che mirano a rendere il processo di addestramento più efficiente e accessibile. Questi sviluppi stanno aprendo le porte a funzionalità AI di alto livello per un pubblico più ampio.

Inoltre, l’introduzione dell’apprendimento per rinforzo da feedback umano (RLHF) da parte di Open AI è un passo verso la creazione di sistemi AI che comprendono e si allineano più strettamente 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 modelli di linguaggio di grandi dimensioni.

Man mano che aziende, imprese e individui cercano di integrare questi LLM regolati nelle loro operazioni, stanno essenzialmente accogliendo un futuro in cui l’AI è più di uno strumento; è un partner che comprende e si adatta ai contesti umani, offrendo soluzioni innovative e personalizzate.

Ho trascorso gli ultimi cinque anni immergendomi nel mondo affascinante 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à in corso mi ha anche portato verso l'elaborazione del linguaggio naturale, un campo che sono ansioso di esplorare ulteriormente.