Una Pipeline per migliorare gli LLM in Italiano

Una Pipeline per migliorare gli LLM in Italiano

Introduzione

Siamo tutti consapevoli delle potenzialità di ChatGPT. Si tratta probabilmente della killer app della decade (forse del secolo se i progressi continuano allo stesso rate?) e da quando è uscita ha completamente stravolto il mio modo di lavorare, imparare e quasi sicuramente di pensare.

Un problema al momento non ancora molto pronunciato ma che vedo crescere molto in fretta (a meno di un incredibile successo di progetti come Modello Italia) è la differenza in performance di un modello SOTA in Inglese rispetto che in Italiano.

Se così, vedremo aumentare quelli che sono oggi gli svantaggi tra una persona che non è fluente in Inglese. Non solo faticherà a sfruttare la vastità di risorse in Inglese sul web, ma non potrà sfruttare al massimo i futuri GPT che da queste risorse avranno estratto ancora più conoscenza.

Per metterci una pezza, il finetuning di Foundation Models per migliorare le loro capacità in Italiano sembra una strategia valida.

Per arrivare al finetuning dobbiamo passare prima però per altri step molto importanti.

Data Preparation

Lasciando da parte per il momento la prepazione dell’ambiente di sviluppo sul quale condurre il finetuning, come in qualsiasi progetto di machine learning è ottima pratica partire dai dati.

Recentemente molti articoli scientifici hanno dimostrato come la qualità dei dati sia fondamentale(forse ancora più della quantità ) per la riuscita di un finetuning di qualità. Niente di nuovo sotto il sole:

  • Garbage in, Garbage out.
  • Ma è bello sapere Gold in, Gold out per quanto riguarda il finetuning di downstream task di un LLM.

L’ambizione qui è di riuscire a creare un dataset di alta qualità di coppie istruzioni-risposte adottando un alto livello di automazione. L’ispirazione è seguire metodologie introdotte in ORCA e WizardLM ed ottenere un qualcosa simile all’alpaca dataset. (Ma noi abbiamo letto da poco quest’altro bell’articolo e proveremo ad ottenere il dataset in yaml invece che json)

Ci saranno anche delle sfide di formattazione ed altro, ma le affronteremo più avanti.

Il Fine-Tuning Vero e Proprio

Un’altra serie di scelte che dovremo affrontare:

  1. Scelta del modello: Bisognerà optare per un modello pre-addestrato con licenza pubblica che si adatti bene al nostro task, ovvero che sappia già essere un bravo interlocutore in Inglese e possa diventarlo in Italiano. Pensate anche voi già a LLaMA2 (come i LLaMAntini)? Oppure siete curiosi di vedere MixTral in azione?

  2. Scelta del Tokenizer: Tutta un’altra storia

  3. Scelta di Iperparametri: Sarà a tutti gli effetti un esperimento di machine learning!

  4. Efficientamento: LoRA, QLoRA, Flash Attention… vediamo come ci arriviamo prima

  5. Testare e Valutare il Modello dopo il FineTuning

Aperture

Bene direi che più o meno l’idea in testa ce l’abbiamo, e i primi step sono chiari… possiamo iniziare!