Come ottimizzare LFM2 con QLoRA e DPO: tutorial completo su Google Colab
Liquid AI’s LFM2 è un modello linguistico progettato per l’AI on-device, e con questo tutorial puoi ottimizzarlo interamente su Google Colab usando strumenti open source. QLoRA riduce il consumo di memoria GPU, mentre il supervised fine-tuning (SFT) prepara il modello a rispondere in modo strutturato. Aggiungendo il DPO (Direct Preference Optimization), migliori ulteriormente la qualità delle risposte basandoti su coppie scelte/rifiutate.
Il workflow si svolge in quattro fasi principali: installazione delle librerie, caricamento del modello con quantizzazione a 4 bit, addestramento dell’adattatore LoRA con SFT, merge dell’adattatore nel modello base, e infine training DPO con un secondo adattatore. Alla fine ottieni un checkpoint unico, pronto per test o deploy.
Setup e baseline
Inizi installando le dipendenze: transformers, trl, peft, datasets, accelerate e bitsandbytes. Poi importi le classi necessarie e definisci le configurazioni principali: MODEL_ID = "LiquidAI/LFM2-1.2B", attivi la quantizzazione 4 bit, e imposti numero di campioni e passi di training.
Carichi il modello base con BitsAndBytesConfig per la quantizzazione nf4, e allinei il tokenizer impostando il padding token uguale all’eos token. Una funzione chat() ti permette di testare le risposte prima e dopo ogni fase. La baseline iniziale — chiedendo al modello di spiegare l’architettura LFM2 — fornisce un termine di paragone.
Supervised Fine-Tuning con LoRA
Per l’SFT usi il dataset smoltalk da Hugging Face, selezionando 500 campioni e mantenendo solo la colonna messages. Configuri LoRA con rank 16, alpha 32, dropout 0.05, target su tutti i layer lineari. L’SFTConfig imposta batch size 2, gradient accumulation 4, learning rate 2e-5, e 60 passi di training. Dopo l’addestramento, salvi l’adattatore e testi la risposta: il modello ora risponde in modo più strutturato e pertinente.
Per prepararti al DPO, liberi la memoria GPU eliminando trainer e modello, ricarichi il base in fp16/bf16, carichi l’adattatore SFT e lo unisci al modello con merge_and_unload(). Salvi il checkpoint unito.
DPO: ottimizzazione delle preferenze
Se attivi RUN_DPO = True, prepari un dataset di preferenze con tre esempi di prompt, risposta scelta e risposta rifiutata, ripetuti 20 volte. Gli esempi coprono scenari realistici: risposta a reclamo cliente, riepilogo di edge AI, rifiuto educato di riunione.
Configuri un nuovo adattatore LoRA (stessa architettura) e un DPOConfig con learning rate 5e-6, beta 0.1, e 40 passi. Alleni il modello SFT unito con DPO, poi unisci l’adattatore DPO e salvi il checkpoint finale. Un ultimo test mostra il miglioramento rispetto alla baseline e all’SFT: risposte più precise, empatiche e naturali.
Alla fine hai un pipeline completo che trasforma il modello base LFM2 in un checkpoint ottimizzato con SFT e DPO, pronto per test o deploy. Tutto il codice funziona su Google Colab con GPU (assicurati di aver selezionato Runtime > Cambia tipo di runtime > GPU).
