Come specializzare un Large Language Model



Un confronto tecnico delle varie tecniche di fine tuning di Large Language Model

  1. Introduzione
  2. Metodi
  3. Confronto
  4. Conclusione

Introduzione

Negli ultimi anni, i Large Language Models (LLM) hanno catalizzato l’attenzione di tutto il mondo, rivoluzionando l’intelligenza artificiale grazie alla loro straordinaria capacità e versatilità nell’affrontare problemi reali. Nonostante queste premesse promettenti, i LLM non sono esenti da problematiche significative. Tra queste emergono il bias (pregiudizio), la bassa precisione in contesti specifici e la mancanza di comprensione delle sfumature più particolari del linguaggio umano.
Le società come Moxoff, che quotidianamente hanno a che fare con l’implementazione di soluzioni che utilizzano LLM e generative AI, devono quindi essere pronte alla sfida di sviluppare tecnologie che siano allo stesso tempo all’avanguardia ed esenti da tali problematiche.

Per fare questo, è stato sviluppato un metodo di training (allenamento) che consente di specializzare i LLM, controllandone il comportamento. Questa procedura, che prende il nome di fine tuning, è composta generalmente da due step principali: il Supervised Fine-Tuning (SFT) ed il Reinforcement Learning from Human Feedback (RLHF). Questo approccio basato sul reinforcement learning, che approfondiremo successivamente nella sua versione piu’ comune di Proximal Policy Optimization (PPO), gioca un ruolo cruciale nel permettere agli LLM di specializzarsi e raggiungere livelli di accuratezza adeguati.
Tuttavia, questa procedura (SFT + RLHF con PPO) ha delle limitazioni: è caratterizzata da una significativa complessità di implementazione pratica, da una scarsa versatilità e da un notevole consumo di risorse computazionali. Per risolvere tutte queste problematiche, recentemente sono stati proposti metodi alternativi per affinare i modelli di linguaggio. In questo articolo, intendiamo analizzare in dettaglio le caratteristiche dei seguenti metodi:

  1. Direct Preference Optimization (DPO);
  2. Kahneman-Tversky Optimization (KTO);
  3. Odds Ratio Preference Optimization (ORPO).

Ci proponiamo di offrire quindi una panoramica completa e informata sui progressi nel campo dell’allineamento dei LLM, evidenziando i miglioramenti e le innovazioni introdotte dai vari metodi considerati.
Per farlo, siamo partiti da un modello già allenato, Phi-3-mini-instruct-128k di Microsoft, e abbiamo effettuato quattro distinti allineamenti (PPO, DPO, KTO e ORPO). Per una maggior completezza e riproducibilità dei risultati, abbiamo anche pubblicato sulla pagina Hugging Face di Moxoff le quattro versioni allineate dei modelli, rendendole disponibili per la comunità open source.

Metodi

Questo paragrafo è dedicato ad un approfondimento sui metodi di allineamento sopra citati analizzando le loro caratteristiche chiave.

Supervised Fine-Tuning (SFT)

Il SFT è un processo in cui un LLM pre-addestrato viene ottimizzato utilizzando dati etichettati, costituiti da esempi di input (prompt) e output attesi. Con il SFT è possibile ottenere modelli con un comportamento in linea con quanto desiderato: è ad esempio possibile imporre il rispetto di certi vincoli e soddisfare requisiti specifici come aderenza ad uno stile particolare. Questa fase di addestramento di un modello è la più importante ed è quella dove si vedono la maggior parte dei miglioramenti. Richiede tuttavia la maggior parte delle risorse computazionali e del tempo, riflettendosi nella necessità di un dataset di dimensioni significativamente maggiori rispetto a quello utilizzato nelle fasi successive, anche fino a 10-20 volte più grande.

Reinforcement Learning from Human Feedback (RLHF)

Il SFT non apporta sufficienti miglioramenti per essere utilizzato sempre in autonomia con risultati apprezzabili. Viene infatti aggiunto uno step ulteriore che prende il nome di RLHF.

Il RLHF è una metodologia che integra il reinforcement learning (apprendimento per rinforzo) con il feedback umano per migliorare le performance dei modelli. Dopo aver effettuato il SFT, il modello genera risposte a vari input. Queste risposte vengono valutate da revisori umani, che assegnano dei punteggi in base alla qualità e alla pertinenza delle risposte. I punteggi forniti dai revisori umani vengono quindi utilizzati per allenare un modello di ricompensa (reward model). Questo modello apprende a prevedere la qualità delle risposte del LLM basandosi sulle valutazioni umane. Utilizzando il modello di ricompensa, si applicano tecniche di reinforcement learning per aggiornare il LLM, che viene addestrato a generare risposte che massimizzano il punteggio previsto dal modello di ricompensa.

Il Proximal Policy Optimization (PPO) è uno degli algoritmi più comunemente utilizzati nel contesto di RLHF, grazie alla sua efficienza e stabilità. Il PPO migliora il processo di apprendimento del modello riducendo i rischi di comportamenti non desiderati e di instabilità delle prestazioni. Raggiunge questo obiettivo imponendo un limite all’entità degli aggiornamenti delle politiche (policy) ad ogni iterazione. Ciò significa che le modifiche alla policy del modello sono graduali e controllate. Altra caratteristica chiave di PPO è l’utilizzo di una funzione di clipping che impedisce agli aggiornamenti di divergere troppo. Questo aiuta a mantenere l’apprendimento stabile, evitando oscillazioni o comportamenti estremi. Grazie a questi meccanismi, il PPO rende l’apprendimento per rinforzo più affidabile e fluido, aumentando le probabilità di ottenere soluzioni ottimali e stabili.
Nonostante le ottime performance, questa tipologia di tecniche di affinamento soffre della complessità di implementazione, dovuta alla difficoltà di allenamento del modello di rinforzo.

Direct Preference Optimization (DPO)

Il DPO rappresenta un’evoluzione significativa nell’addestramento dei modelli di linguaggio, differenziandosi in modo marcato da altri approcci tradizionali quali il RLHF. Pensato anch’esso come step successivo al SFT, questo metodo si concentra non sull’ottimizzazione di una ricompensa, ma piuttosto sulla risoluzione di problemi legati alla classificazione delle preferenze. Questo significa che il DPO mira a identificare e promuovere le azioni che sono ritenute preferibili da un supervisore, piuttosto che massimizzare le ricompense.
Nonostante il DPO offra diversi vantaggi rispetto a metodi come il RLHF, dove si utilizza il feedback umano per guidare l’apprendimento di una policy, anch’esso ha varie problematiche. Una delle principali è il rischio di overfitting, poiché vi è la possibilità che il modello si adatti troppo specificamente ai dati di esempio forniti durante l’addestramento, perdendo di vista la generalizzazione su nuove situazioni non ancora incontrate e rischiando di produrre allucinazioni.

Kahneman-Tversky Optimization (KTO)

La metodologia KTO, anch’essa pensata come alternativa al RLHF da effettuare dopo il SFT, è ispirata a studi che vedono gli umani valutare la realtà in modo asimmetrico, risultando più competenti a quantificare difetti e perdite rispetto a pregi e guadagni. Si tratta nello specifico di una variante della DPO, volta a migliorarne le problematiche usando una metodologia a singola preferenza.

Il KTO supera il DPO in casi di dati rumorosi e grezzi, situazione molto comune nel campo del linguaggio naturale. Per questo, è un ottimo candidato ad essere utilizzato su dataset di grandezza limitata, contesto nel quale esprime al meglio le sue potenzialità.

Odds Ratio Preference Optimization (ORPO)

La metodologia ORPO, è invece sostanzialmente differente dalle precedenti. Infatti, al posto di usare il tradizionale SFT seguito da un’ulteriore fase di apprendimento, ORPO combina questi passaggi. Questo rende il processo più veloce ed efficiente, oltre a produrre modelli più leggeri.
L’idea alla base del funzionamento è semplice: quando si aumentano le probabilità di ottenere risposte corrette, si rischia anche di aumentare quelle di ottenere risposte sbagliate. ORPO affronta questo problema penalizzando direttamente le risposte errate durante l’addestramento. In questo modo, il modello viene adattato a uno scenario specifico fin dall’inizio, migliorando le prestazioni complessive.

Confronto

Il confronto è stato eseguito tra quattro distinti fine tuning di un modello già allenato, specificamente Phi-3-mini-instruct. Il fine tuning è stato condotto per 3 epoche utilizzando i seguenti dataset, in base al metodo selezionato:

  1. Per KTO, abbiamo usato il dataset argilla/distilabel-intel-orca-kto.
  2. Per PPO, DPO e ORPO, abbiamo usato il dataset argilla/ultrafeedback-binarized-preferences-cleaned, selezionando solo i dati con un rating scelto pari a 5. Questo significa che le risposte nel dataset sono esattamente come vogliamo che il modello risponda, garantendo la massima qualità.

Gli allineamenti sono stati eseguiti su una macchina dotata di GPU 4090, CPU i7-8700 e 32GB di RAM. Come metriche di benchmarking, abbiamo scelto Hellaswag, Arc-challenge e M_MMLU_EN 5 shot. Questi sono i valori di benchmarking di Phi3-mini-instruct, prima dei fine tuning:

HellaswagArc-challengeM_MMLU 5 shot
0.78200.54630.6808

Proximal Policy Optimization (PPO)

L’allenamento tramite il PPO non ha fornito risultati ottimali, come si evince dai valori delle metriche.

HellaswagArc-challengeM_MMLU 5 shot
0.70440.47010.5814

Nonostante alcuni miglioramenti iniziali, abbiamo osservato un aumento della loss e una stagnazione nei rewards, indicando che il modello non stava apprendendo in modo efficace. Le accuratezze e i margini non hanno mostrato progressi significativi, e i logp e logits non si sono mossi nella direzione desiderata. Questo ad ulteriore conferma che, non avendo a disposizione dataset consistenti e non utilizzando risorse HW importanti, è in generale difficile raggiungere buoni risultati con questa tecnica. Tuttavia, ampliando la quantità di dati a disposizione e la GPU, il PPO può diventare un metodo di allenamento estremamente robusto.

Direct Preference Optimization (DPO)

L’allenamento tramite DPO ha fornito ottimi risultati, con una riduzione significativa della loss in sole 3 epoche. Abbiamo osservato un chiaro miglioramento nei rewards, nelle accuratezze e nei margini, così come nei logp e logits, che sono andati nella direzione desiderata. Tuttavia, i risultati dei benchmark non hanno mostrato un miglioramento particolare rispetto ai valori iniziali:

HellaswagArc-challengeM_MMLU 5 shot
0.78330.54860.6847

Questo risultato potrebbe essere dovuto al fatto che siamo partiti da un modello instruct invece che da un SFT, oppure al fatto che abbiamo utilizzato un dataset relativamente piccolo e che abbiamo effettuato solo poche epoche di allenamento.

Kahneman-Tversky Optimization (KTO)

Anche l’allineamento tramite KTO è andato molto bene, con tutte le metriche che hanno mostrato miglioramenti e una riduzione della loss. Rispetto al DPO, abbiamo osservato un miglioramento maggiore:

      1. Le metriche di accuratezza e reward sono migliorate in modo significativo;
      2. I logp e logits si sono allineati con le aspettative.

Questo suggerisce che il metodo KTO potrebbe essere più efficace nelle condizioni in cui abbiamo condotto l’allenamento. Di seguito le metriche di benchmarking:

HellaswagArc-challengeM_MMLU 5 shot
0.79150.56060.6939

Odds Ratio Preference Optimization (ORPO)

L’allenamento tramite ORPO ha mostrato una progressione positiva attraverso le diverse fasi di addestramento, con una riduzione costante della loss e miglioramenti nelle metriche di accuratezza e margini come la DPO, ma nello stesso modo il risultato positivo di questo training non si è riflettuto nei benchmark del modello finale.

HellaswagArc-challengeM_MMLU 5 shot
0.76210.53750.6824

Conclusione

Il confronto tra i vari metodi di allineamento dei Large Language Models considerati in questa analisi (PPO, KTO, DPO e ORPO) ha evidenziato significative differenze in termini di tempi, consumo di risorse e performance.
Non è possibile stabilire un metodo migliore in assoluto, in quanto ognuno può rivelarsi la scelta più opportuna in determinati scenari, in base alle risorse hardware a disposizione, alla quantità e qualità di dati e alle tempistiche.
Tra i metodi analizzati, il PPO si è rivelato particolarmente impegnativo dal punto di vista computazionale e temporale, non producendo i risultati sperati. Tuttavia, questa tecnica presenta un potenziale significativo: con adeguati dati e risorse, è uno dei principali candidati ad emergere come approccio più robusto e affidabile.

D’altra parte il resto dei metodi si sono rivelati più accessibili e ugualmente validi per un utilizzo, seppur con delle differenze tra di loro.
In particolare il KTO ha mostrato buoni miglioramenti rispetto al modello di partenza. Questo è dovuto al fatto che, per dataset di dimensione contenuta, come quello preso in considerazione, questa tecnica di allineamento tende a performare meglio delle altre.
Il DPO ha fornito buoni risultati in termini di accuratezza e margini, ma non ha mostrato miglioramenti significativi sui benchmark rispetto ai valori iniziali. Questo potrebbe essere dovuto all’uso di un dataset relativamente piccolo e a un numero limitato di epoche di allenamento.

Infine, ORPO ha mostrato una progressione positiva con una riduzione costante della loss e miglioramenti nelle metriche di accuratezza e margini, anche se non ha raggiunto i livelli degli altri metodi sui benchmark considerati. Tuttavia, ORPO offre una combinazione di efficienza e rapidità, rendendolo un’opzione interessante in scenari con limitazioni di tempo e risorse.
In definitiva, il KTO emerge come la soluzione più efficace per l’allineamento dei LLM, offrendo un equilibrio ottimale tra prestazioni e efficienza. Metodi come il DPO e ORPO si presentano come alternative valide e convenienti, rendendo l’addestramento dei modelli più accessibile senza compromettere significativamente la qualità dei risultati. Il PPO, pur richiedendo notevoli risorse temporali e computazionali, rimane una buona opzione per scenari in cui tali risorse sono disponibili, promettendo risultati di alta qualità con un investimento adeguato.

Compagnie come Moxoff possono utilizzare queste informazioni per ottimizzare i loro processi di sviluppo dei modelli di linguaggio su larga scala. Scegliendo il metodo di allineamento più adatto in base alle risorse disponibili e agli obiettivi specifici, Moxoff può migliorare l’efficienza e la qualità dei propri modelli. Ad esempio, in scenari con abbondanti risorse computazionali, l’adozione del PPO potrebbe garantire modelli di alta qualità. Al contrario, in situazioni con limitazioni di tempo e risorse, ORPO potrebbe rappresentare una scelta più bilanciata, consentendo comunque di raggiungere buoni livelli di accuratezza e prestazioni. La flessibilità nella scelta del metodo di allineamento permette a Moxoff di adattarsi meglio alle varie esigenze dei clienti e ai diversi contesti operativi.
Tutte le versioni allineate dei modelli, sono disponibili sulla pagina Hugging Face di Moxoff per ulteriori analisi e sperimentazioni.

Referenze

  1. Phi3-mini-instruct, modello: https://huggingface.co/microsoft/Phi-3-mini-128k-instruct
  2. Pagina HF di Moxoff: https://huggingface.co/MoxoffSpA
  3. Allineamento con PPO, modello: https://huggingface.co/MoxoffSpA/Moxoff-Phi3Mini-PPO
  4. Allineamento con DPO, modello: https://huggingface.co/MoxoffSpA/Moxoff-Phi3Mini-DPO
  5. Allineamento con KTO, modello: https://huggingface.co/MoxoffSpA/Moxoff-Phi3Mini-KTO
  6. Allineamento con ORPO, modello: https://huggingface.co/MoxoffSpA/Moxoff-Phi3Mini-ORPO
  7. Allineamento con PPO, articolo: https://arxiv.org/abs/2307.04964
  8. Allineamento con DPO, articolo: https://arxiv.org/abs/2305.18290
  9. Allineamento con KTO, articolo: https://arxiv.org/abs/2402.01306
  10. Allineamento con ORPO, articolo: https://arxiv.org/abs/2403.07691

Contattaci per ricevere ulteriori informazioni