Parametri e iperparametri
I parametri di un modello, i suoi pesi, vengono appresi: è l'addestramento a definirli. Gli iperparametri vengono impostati dall'utente prima dell'inizio dell'addestramento e controllano come avviene tale apprendimento: quante volte i dati vengono esaminati, quanto è grande ogni aggiornamento, quanti esempi sono inclusi in ogni aggiornamento, quanto è grande un adattatore. L'addestramento non può trovare buoni iperparametri da solo. È l'utente a trovarli eseguendo, misurando e regolando; ecco perché un valore predefinito sensato e un modo chiaro di leggere i risultati contano più di una prima ipotesi perfetta.
Le impostazioni
Quanti passaggi completi compie l'addestramento sui dati. Troppo pochi e il modello cambia a malapena; troppi e inizia a riprodurre gli esempi parola per parola (overfitting), il che si manifesta con un aumento della loss di validazione mentre la loss di addestramento continua a diminuire. I dataset di piccole dimensioni possono sopportare qualche epoca in più; quelli grandi spesso ne richiedono solo una. Il preference tuning di solito necessita di meno epoche rispetto all'addestramento supervisionato. Inoltre, ogni epoca si aggiunge al costo.
L'entità di ogni aggiornamento dei pesi. È l'impostazione più sensibile: se è troppo alta, gli aggiornamenti vanno oltre il limite, la perdita diventa irregolare e il modello può perdere le competenze acquisite; se è troppo bassa, l'esecuzione termina prima che il modello abbia imparato a sufficienza. I modelli in hosting spesso espongono un moltiplicatore invece di un tasso assoluto: il tasso predefinito del provider per quel modello e per i Suoi dati viene moltiplicato per il valore inserito, quindi 1 mantiene il valore predefinito, 2 lo raddoppia e 0,5 lo dimezza. I modelli aperti accettano un tasso assoluto, come circa 1e-4 per un adattatore LoRA o 1e-5 per un fine-tuning completo.
Quanti esempi vengono mediati in ogni aggiornamento dei pesi. I batch più grandi offrono aggiornamenti più fluidi e affidabili, ma in numero minore per epoca, e richiedono più memoria; i batch più piccoli si aggiornano più spesso ma con maggiore rumore. Quando si modifica la dimensione del batch, è opportuno riconsiderare anche il tasso di apprendimento: un batch più grande di solito tollera, e necessita di, un tasso maggiore. Su un dataset di piccole dimensioni, un batch molto grande lascia troppi pochi passaggi da cui apprendere.
Per l'addestramento degli adattatori su modelli aperti. Il rango delle due piccole matrici che LoRA addestra accanto a ogni livello, il quale stabilisce quanto l'adattatore può apprendere. Un rango di 4–16 è sufficiente per tono, stile e formato; dataset più ampi e ricchi di conoscenze possono richiederne uno maggiore. Ranghi più elevati costano di più in termini di memoria e tempo, e smettono di essere utili una volta che l'adattatore ha capacità sufficiente. La pagina LoRA tratta alfa, moduli di destinazione e dropout.
Per i primi step di addestramento, il tasso di apprendimento aumenta da quasi zero al suo valore massimo invece di iniziare a piena potenza. Nelle fasi iniziali, le statistiche in esecuzione dell'ottimizzatore si basano su pochissimi gradienti, quindi step di dimensioni massime rischiano di causare una prima mossa errata; un breve warm-up evita un avvio instabile. Viene indicato come numero di step o come percentuale di tutti gli step. Dopo il warm-up, il tasso di solito decade verso lo zero per il resto dell'esecuzione.
Come interagiscono le impostazioni
| Se si modifica | Considerare anche | Perché |
|---|---|---|
| Più epoche | Un tasso di apprendimento più basso; osservare la perdita di validazione | Più passaggi e step ampi combinati aggravano l'overfitting |
| Un batch più grande | Un tasso di apprendimento più alto | Ci sono meno step, ma più affidabili, per epoca |
| Un dataset più piccolo | Un batch più piccolo; possibilmente qualche epoca in più | Altrimenti ci sono troppi pochi step da cui apprendere |
| LoRA invece del fine-tuning completo | Un tasso di apprendimento più alto, circa 10× | L'adattatore parte da zero e il suo output viene scalato per alfa ÷ r |
| Tuning delle preferenze dopo quello supervisionato | Meno epoche e un tasso di apprendimento più basso | Perfeziona un modello funzionante; step ampi lo fanno deviare |
Un ordine pratico per il tuning
- Eseguire una volta su Auto. È una base di partenza ragionevole e mostra cosa seleziona il provider per i Suoi dati.
- Leggere le curve di perdita. La perdita di validazione aumenta presto: meno epoche o un tasso di apprendimento più basso. Entrambe le perdite continuano a scendere alla fine: più epoche. Nessuna delle due si muove: controllare prima i dati, poi provare un tasso di apprendimento più alto.
- Valutare rispetto al modello di base, non solo la perdita. Una perdita inferiore non garantisce risposte migliori.
- Modificare un'impostazione alla volta, mantenendo fisse le altre, in modo da sapere cosa ha fatto la differenza. Prima il tasso di apprendimento e le epoche; la dimensione del batch e il warm-up raramente necessitano di modifiche.
- Conservare le esecuzioni perdenti. Archiviate con le relative valutazioni, risponderanno alla domanda 'abbiamo provato un tasso di apprendimento più alto?' a mesi di distanza.
- Esecuzione 1, su Auto: 3 epoche, moltiplicatore 1. La loss di addestramento diminuisce costantemente; la loss di validazione raggiunge il minimo all'inizio dell'epoca 2 e poi aumenta.
- Diagnosi: overfitting da circa metà dell'esecuzione. Il tasso di apprendimento sembra adeguato: la curva è fluida, non frastagliata.
- Esecuzione 2: 2 epoche, tutto il resto invariato. La loss di validazione ora termina vicino al suo punto più basso e l'esecuzione costa un terzo in meno.
- Prima di confermarla: valutare l'esecuzione 2 rispetto al modello di base e all'esecuzione 1.
Errori comuni
- Modificare più impostazioni contemporaneamente, rendendo impossibile spiegare un risultato migliore o peggiore.
- Ottimizzare in base alla loss di addestramento. Migliora quasi sempre con più epoche o un tasso più alto; la loss di validazione e la valutazione sono i veri giudici.
- Trattare un moltiplicatore come un tasso di apprendimento assoluto. Un moltiplicatore pari a 2 raddoppia il valore predefinito del provider; non equivale a un tasso di 2.
- Copiare le impostazioni da un'esecuzione con dimensioni dei dati molto diverse. I passaggi, il warm-up e il giusto numero di epoche scalano in base ai dati.
- Inseguire piccole differenze su un set di validazione minuscolo. Con poche decine di conversazioni held-out, un piccolo divario è solo rumore.
Riferimenti e letture di approfondimento
Le fonti esterne si aprono in una nuova scheda.
- 01TrainerHugging Face Transformers docs · huggingface.coL'elenco completo degli argomenti di addestramento e dei relativi valori predefiniti, dal tasso di apprendimento e le epoche fino al warm-up e al weight decay.
- 02Linear regression: HyperparametersGoogle Machine Learning Crash Course · developers.google.comTasso di apprendimento, dimensione del batch ed epoche spiegati con esempi interattivi.
- 03Accurate, Large Minibatch SGD: Training ImageNet in 1 HourGoyal et al., 2017 · arXiv · arxiv.orgLa regola di ridimensionamento lineare che collega la dimensione del batch e il tasso di apprendimento, e il warm-up graduale.
- 04Hyperparameter (machine learning)Wikipedia · en.wikipedia.org