La distillation (in italiano: distillazione) è una tecnica per trasferire la conoscenza da un modello grande e potente (teacher) a un modello piccolo e veloce (student). Si addestra lo student a imitare il teacher.
Idea proposta da Hinton et al. (2015): invece di addestrare lo student direttamente sui dati con etichette dure, lo addestri a riprodurre le distribuzioni di probabilità del teacher (le "soft labels"). Le soft labels contengono più informazione: il teacher dice "85% gatto, 10% lince, 5% cane" invece di solo "gatto".
Vantaggi:
- Modelli compatti: lo student può essere 10x-100x più piccolo del teacher con qualità simile.
- Inferenza veloce: meno parametri = meno calcolo.
- Deploy edge: modelli che girano su mobile, IoT.
Esempi famosi:
- DistilBERT: 40% più piccolo di BERT, 60% più veloce, 97% delle performance.
- TinyBERT, MobileBERT: versioni ancora più compatte.
- Whisper distil: versioni leggere di Whisper di OpenAI.
- Llama 3 8B: distillata in parte dai modelli più grossi di Meta.
Tipi di distillation:
- Response-based: lo student impara solo le distribuzioni finali del teacher.
- Feature-based: imita anche le rappresentazioni intermedie.
- Relation-based: imita relazioni tra esempi.
- Self-distillation: il modello distilla da sé stesso (versione più piccola).
Variante hot del 2024: distillazione da modelli closed-source. Generi un dataset interrogando GPT-4 o Claude, addestri il tuo modello su quel dataset. Modelli come Vicuna, Alpaca sono nati così. Legalmente grigio: le ToS di OpenAI vietano di usare l'output per addestrare modelli concorrenti.
Distillation è uno dei principali strumenti per portare la qualità degli LLM grossi su dispositivi piccoli. Se vedi un modello "8B che va come uno 70B", probabilmente c'è di mezzo distillation.