Esistono due tipi di carichi di lavoro di addestramento:
- vincolato al calcolo
- nessun limite di calcolo
L'addestramento limitato al calcolo è limitato dal tempo che dedichi alla formazione, non dalla quantità di dati di addestramento di cui disponi o da qualche altro fattore. In altre parole, il tempo di addestramento "ottimale" è sempre "quanto puoi." Se in qualche modo puoi allenarti in modo più lungo o efficiente, la perdita di addestramento dovrebbe diminuire. (con l'ottimizzazione corretta, anche la perdita di convalida dovrebbe calare).
Accelerare l'addestramento legato al calcolo equivale a migliorare l'addestramento. Detto ciò, il semplice fatto che un carico di lavoro sia limitato nel calcolo non significa che l'addestramento sia più lungo o veloce e che sia l'unico modo per ottenere risultati migliori.
Quando l'addestramento non è vincolato al calcolo, puoi permetterti di allenarti finché vuoi. Tuttavia, l'addestramento di un modello più a lungo potrebbe non essere di grande aiuto o persino causare un overfitting. Quando l'addestramento non è legato al calcolo:
- Puoi eseguire l'addestramento fino a una perdita di addestramento molto bassa fino al punto in cui un addestramento aggiuntivo potrebbe ridurre leggermente la perdita di addestramento, ma non ridurre in modo significativo la perdita di convalida.
- Puoi ottimizzare più facilmente, soprattutto quando ottimizzi le pianificazioni del decadimento del tasso di apprendimento, poiché hanno un'interazione particolarmente forte con il budget di addestramento. Al contrario, ottenere una bassa perdita di addestramento sull'addestramento legato al calcolo potrebbe richiedere una pianificazione del decadimento del tasso di apprendimento ottimizzata alla perfezione.
Indipendentemente dal fatto che un determinato carico di lavoro sia legato al calcolo o meno, i metodi che aumentano la varianza dei gradienti (su tutti i batch) in genere rallentano l'avanzamento dell'addestramento, e quindi possono aumentare il numero di passaggi di addestramento necessari per raggiungere una particolare perdita di convalida. Uno dei seguenti problemi può causare un'elevata varianza:
- Utilizzando un batch di dimensioni inferiori.
- Aggiunta dell'aumento di dati.
- Aggiunta di alcuni tipi di regolarizzazione (ad esempio, regolarizzazione del ritiro).
Definisci il tempo di addestramento quando l'addestramento non è legato al calcolo
Il tuo obiettivo: addestrare il modello abbastanza a lungo da consentire al modello di raggiungere il miglior risultato possibile senza sprecare passaggi di addestramento.
Il tuo obiettivo principale è assicurarti di addestrare il modello abbastanza a lungo da consentire al modello di raggiungere il miglior risultato possibile senza sprecare passaggi di addestramento non necessari. In caso di dubbi, CANNOT TRANSLATE Le metriche di valutazione (ad esempio, precisione, richiamo, AUC o F1) non devono mai ridursi durante l'addestramento più a lungo, supponendo che utilizzi correttamente la selezione del checkpoint retrospettiva e che il checkpoint sia abbastanza frequente.
Non ottimizzare mai il numero max_train_steps
in uno studio. ma scegli un valore e utilizzalo per tutte le prove. Da queste prove, traccia il passaggio di addestramento che la selezione del checkpoint retrospettivo trova per perfezionare la scelta di max_train_steps
.
Ad esempio, se il passaggio migliore è sempre durante il primo 10% dell'addestramento, il numero massimo di passi è troppo elevato.
In alternativa, se il passo migliore è coerenza nell'ultimo 25% dell'addestramento, potresti trarre vantaggio da un addestramento più lungo e perfezionare il programma di decadimento.
Il numero ideale di passaggi di addestramento può cambiare quando cambia l'architettura o i dati, ad esempio aggiungendo dati.
La sezione successiva descrive come scegliere un valore iniziale del candidato per
max_train_steps
in base al numero di passaggi necessari per "adattare perfettamente" il set di addestramento utilizzando un tasso di apprendimento costante.
Potrebbe essere possibile diminuire max_train_steps
se il processo di addestramento migliora in qualche modo, ad esempio con un ottimizzatore o una pianificazione del tasso di apprendimento più ottimizzata.
Algoritmo per la scelta di un candidato iniziale per max_train_steps utilizzando una velocità di apprendimento
Puoi scegliere un candidato iniziale per max_train_steps
con un algoritmo di
controllo della percentuale di apprendimento. Il seguente algoritmo presume che sia possibile non solo adattarsi "perfettamente" al set di addestramento, ma anche farlo utilizzando una pianificazione del tasso di apprendimento costante.
- Se è possibile adattarsi perfettamente all'intero set di addestramento, deve esistere una configurazione (con un valore di
max_train_steps
) che si adatti perfettamente al set di addestramento. Trova qualsiasi configurazione di questo tipo e utilizza il valoremax_train_steps
come punto di partenzaN
. - Esegui un controllo costante del tasso di apprendimento (ovvero, ricerca della rete nel tasso di apprendimento) senza aumento dei dati e senza regolarizzazione in cui ogni prova viene addestrata per
N
passaggi. Il numero di passaggi richiesti per la prova più rapida nella velocità di apprendimento per raggiungere prestazioni di addestramento ottimali dovrebbe essere la tua ipotesi iniziale per ilmax_train_steps
.
NOTA: gli spazi di ricerca errati possono portare a inganni.
Ad esempio, se tutti i tassi di apprendimento di uno studio sono troppo piccoli, potresti
erroneamente concludere che è necessario un valore molto elevato, ovvero max_train_steps
.
Come minimo, controlla che il tasso di apprendimento ottimale nello studio non superi il limite dello spazio di ricerca.
Definisci il tempo di addestramento quando l'addestramento è limitato al calcolo
In alcuni casi, la perdita di addestramento continua a migliorare a tempo indeterminato, per cui la pazienza e le risorse di calcolo diventano i fattori limitanti. Ma ci si deve allenare quanto è possibile permettersi? Non necessariamente. Considera quanto segue:
- Potresti riuscire a ottimizzare in modo più efficace eseguendo un numero maggiore di esperimenti più brevi, riservando le esecuzioni di "durata della produzione" più lunghe per i modelli che vuoi avviare.
- Man mano che il tempo per l'addestramento con le prove si avvicina al tuo limite di pazienza, gli esperimenti di ottimizzazione diventano più pertinenti per i potenziali candidati al lancio, ma puoi ridurne il numero.
- Probabilmente puoi rispondere a molte domande durante l'addestramento solo per circa il 10% della durata della produzione. Tuttavia, le tue conclusioni a questo limite temporale potrebbero non essere applicabili agli esperimenti al 20% della durata della produzione, per non parlare del 100%.
L'ottimizzazione in più fasi con limiti di addestramento aumentati per prova è un approccio ragionevole. Puoi fare tutti i giri che vuoi, ma di solito 1-3 giri sono i più pratici. Essenzialmente, cerca di comprendere il più possibile il problema utilizzando le prove con tempi di risposta molto rapidi, compensando quanto segue:
- Precisione dell'ottimizzazione.
- Pertinenza alle finali finali più lunghe.
Una volta che un determinato limite di tempo per prova ha generato insight utili, aumenta il tempo di addestramento e continua a perfezionare, verificando le conclusioni delle esecuzioni più brevi in base alle necessità. Come punto di partenza, consigliamo due regolazioni:
- Fase 1: durata più breve per trovare modelli di iperparametri e strumenti per ottimizzare il modello.
- Round 2: pochissimi punti di lunga durata vengono eseguiti su buoni iperparametri per ottenere il modello finale.
La domanda più importante che passa dal primo al secondo turno è:
Come modifichi le pianificazioni del decadimento del tasso di apprendimento?
Un errore comune quando si modificano le programmazioni dei tassi di apprendimento tra un turno e l'altro consiste nell'utilizzare tutti i passaggi di addestramento aggiuntivi con un tasso di apprendimento troppo ridotto.
Round 1: tante brevi sessioni di allenamento
Sfortunatamente, non esiste alcuna garanzia che buoni iperparametri trovati in addestramenti brevi e incompleti siano comunque buone scelte quando aumenti in modo significativo la durata dell'addestramento. Tuttavia, per alcuni iperparametri, le buone scelte sono spesso correlate sufficienti affinché il round 1 sia utile. Quali valori degli iperparametri rilevati nelle esecuzioni più brevi vengono trasferiti correttamente alle esecuzioni di addestramento più lunghe? Non sappiamo; abbiamo bisogno di ulteriori ricerche. Tuttavia, in base a ciò che abbiamo imparato finora, ecco i nostri sospetti sulla diminuzione della probabilità di trasferimento:
- Trasferimento molto probabile. L'instabilità dell'allenamento iniziale può essere risolta al primo turno di ottimizzazione con un numero inferiore di passaggi di addestramento.
È probabile che vengano trasferiti i seguenti iperparametri:
- Lunghezza del riscaldamento
- Inizializzazione
- Trasferimento probabile. Una vittoria spettacolare nell'architettura del modello di solito viene trasferita, ma è possibile che siano presenti molti esempi d'esempio.
- Trasferimento possibile. Potrebbero essere trasferiti i seguenti iperparametri:
- L'algoritmo di ottimizzazione e gli iperparametri vengono trasferiti "senza valore".
- Aumento dei dati.
- Regolarizzazione. Se non è possibile adattarsi perfettamente al set di addestramento, il modello potrebbe essere in un regime in cui è improbabile che la regolarizzazione sia di grande aiuto.
- Probabilità improbabile di trasferimento. È improbabile che la pianificazione del tasso di apprendimento venga eseguita correttamente. Addestramento di modelli di linguaggio di grandi dimensioni per il calcolo ottico suggerisce che anche i trasferimenti della pianificazione di decadimento sono ritenuti in generale. Ad esempio, la regolazione di un decadimento quadrato su un numero ridotto di passaggi di addestramento per poi estendersi a un numero elevato fa sì che la maggior parte dell'addestramento avvenga con passaggi troppo piccoli. È probabile che tu riesca a ottenere un rendimento "sufficientemente buono" con la maggior parte delle pianificazioni nei limiti del budget di addestramento estremo, ma probabilmente noterai miglioramenti significativi del rendimento se viene ottimizzata. La comprensione del bias di orizzonte breve nella meta-ottimizzazione della meta-ottimizzazione descrive i pericoli dell'impegno a scegliere dei tassi di apprendimento teoricamente.
Round 2: meno esecuzioni, ma maggiore durata
Esegui la configurazione migliore dell'iperparametro dal Round 1.
Speculazione: 🤖 Utilizza i passaggi aggiuntivi per estendere il periodo di addestramento
a un tasso di apprendimento elevato. Ad esempio, se utilizzi una pianificazione lineare,
mantieni la durata del decadimento fissata nel round 1 ed estendi il periodo
di costante lr
all'inizio. Per il decadimento del coseno, mantieni la base lr
dal Round 1 ed estendi max_train_steps
come descritto in
Addestramento di modelli di lingue di grandi dimensioni ottimali
per il calcolo.
Ulteriori sessioni di formazione potrebbero essere utili per i team che:
- Definizione di modello molto maturo
- Regolazione delle pipeline
- Sessioni di formazione in produzione molto lunghe e costose
Tuttavia, le sessioni di addestramento aggiuntive sono spesso non produttive.
Abbiamo già descritto come effettuare il trasferimento dal 1° al 2° turno. Se non ti interessa il tempo di analisi e se l'uso efficiente delle risorse di calcolo è la tua priorità, ti consigliamo di aumentare in modo esponenziale la durata delle esecuzioni dell'addestramento (e quindi il tempo end-to-end per completare uno studio) in molti livelli di ottimizzazione:
- Ad ogni round, assicurati sistematicamente che le tue scelte continuino a fornire risultati ottimali.
- Mettere nuove idee attraverso una pipeline che le degradi progressivamente utilizzando esperimenti a lunga esecuzione dal passaggio I al passaggio i+1.