Determina il numero di passaggi per ogni sessione di addestramento

Esistono due tipi di carichi di lavoro di addestramento:

  • legato al calcolo
  • not compute bound

L'addestramento vincolato al calcolo è limitato dal tempo che puoi dedicare all'addestramento, non dalla quantità di dati di addestramento che hai o da altri fattori. In altre parole, il tempo di addestramento "ottimale" è sempre "il più lungo possibile". Se riesci ad allenarti più a lungo o in modo più efficiente, la perdita di allenamento dovrebbe diminuire. Con la giusta ottimizzazione, anche la perdita di convalida dovrebbe diminuire.

Accelerare l'addestramento vincolato al calcolo equivale a migliorare l'addestramento. Ciò detto, il fatto che un workload sia limitato dal calcolo non significa che l'unico modo per migliorare i risultati sia un addestramento più lungo o più veloce.

Quando l'addestramento non è vincolato alla potenza di calcolo, puoi addestrare il modello per tutto il tempo che vuoi. Tuttavia, addestrare un modello più a lungo potrebbe non essere molto utile o potrebbe addirittura causare un overfitting. Quando l'addestramento non è vincolato dal calcolo:

  • Puoi eseguire l'addestramento fino a una perdita di addestramento molto bassa, al punto che un addestramento aggiuntivo potrebbe ridurre leggermente la perdita di addestramento, ma non riduce in modo significativo la perdita di convalida.
  • Puoi eseguire la messa a punto più facilmente, soprattutto quando regoli le pianificazioni del decadimento del tasso di apprendimento, poiché hanno un'interazione particolarmente forte con il budget di addestramento. Al contrario, ottenere una perdita di addestramento bassa nell'addestramento vincolato dal calcolo potrebbe richiedere una pianificazione 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 (nei batch) in genere rallentano l'avanzamento dell'addestramento e quindi potrebbero aumentare il numero di passaggi di addestramento necessari per raggiungere una determinata perdita di convalida. Uno dei seguenti fattori può causare una varianza del gradiente elevata:

  • Utilizzando una dimensione del batch più piccola.
  • Aggiunta dell'aumento dei dati.
  • Aggiunta di alcuni tipi di regolarizzazione (ad esempio, regolarizzazione dropout).

Decidere la durata dell'addestramento quando non è vincolato dalla potenza di calcolo

Il tuo obiettivo: addestrare il modello per un periodo di tempo sufficiente a ottenere il miglior risultato possibile senza sprecare passaggi di addestramento.

Il tuo obiettivo principale è assicurarti di eseguire l'addestramento per un periodo di tempo sufficiente affinché il modello raggiunga il miglior risultato possibile senza sprecare passaggi di addestramento non necessari. In caso di dubbi, privilegia un allenamento più lungo. Le metriche di valutazione (ad esempio precisione, richiamo, AUC o F1) non devono mai peggiorare quando l'addestramento dura più a lungo, a condizione che tu utilizzi correttamente la selezione retrospettiva dei checkpoint e che i checkpoint siano sufficientemente frequenti.

Non modificare mai il numero max_train_steps in uno studio. Scegli invece un valore e utilizzalo per tutte le prove. Da queste prove, traccia il passo di allenamento che la selezione retrospettiva del checkpoint trova per perfezionare la scelta di max_train_steps.

Ad esempio, se il passo migliore si verifica sempre durante il primo 10% dell'allenamento, il numero massimo di passi è troppo alto. In alternativa, se il passaggio migliore si trova costantemente nell'ultimo 25% dell'addestramento, potresti trarre vantaggio da un addestramento più lungo e dalla regolazione della pianificazione del decadimento. Il numero ideale di passaggi di addestramento può cambiare quando l'architettura o i dati cambiano (ad esempio, aggiungendo l'aumento dei dati). Nella sezione successiva viene descritto come scegliere un valore candidato iniziale per max_train_steps in base al numero di passaggi necessari per "adattare perfettamente" il set di addestramento utilizzando un tasso di apprendimento costante.

È possibile diminuire max_train_steps se il processo di addestramento migliora in qualche modo, ad esempio con un ottimizzatore meglio ottimizzato o una pianificazione del tasso di apprendimento meglio ottimizzata.

Algoritmo per la scelta di un candidato iniziale per max_train_steps utilizzando una scansione del tasso di apprendimento

Puoi scegliere un candidato iniziale per max_train_steps con un algoritmo di scansione del tasso di apprendimento. Il seguente algoritmo presuppone che sia possibile non solo adattare "perfettamente" il set di addestramento, ma anche farlo utilizzando una pianificazione del tasso di apprendimento costante.

  1. Se è possibile adattare perfettamente l'intero set di addestramento, deve esistere una configurazione (con un determinato valore di max_train_steps) che si adatti perfettamente al set di addestramento. Trova una configurazione di questo tipo e utilizza il valore max_train_steps come punto di partenza N.
  2. Esegui una scansione del tasso di apprendimento costante (ovvero una ricerca a griglia del tasso di apprendimento) senza aumento dei dati e senza regolarizzazione, in cui ogni prova viene addestrata per N passaggi. Il numero di passaggi necessari per la prova più veloce nella scansione del tasso di apprendimento per raggiungere prestazioni di addestramento perfette deve essere la tua ipotesi iniziale per max_train_steps.

NOTA: gli spazi di ricerca errati possono portare all'autoinganno. Ad esempio, se tutti i tassi di apprendimento in uno studio sono troppo piccoli, potresti concludere erroneamente che è necessario un valore molto grande di max_train_steps. Come minimo, verifica che il tasso di apprendimento ottimale nello studio non si trovi al limite dello spazio di ricerca.

Decidere la durata dell'addestramento quando l'addestramento è vincolato dalla capacità di calcolo

In alcuni casi, la perdita di addestramento continua a migliorare indefinitamente, quindi la pazienza e le risorse di calcolo diventano i fattori limitanti. Ma dovresti allenarti finché puoi permettertelo? Non necessariamente. Considera quanto segue:

  • Potresti essere in grado di eseguire l'ottimizzazione in modo più efficace eseguendo un numero maggiore di esperimenti più brevi, riservando le esecuzioni più lunghe per i modelli che prevedi di lanciare.
  • Man mano che il tempo di addestramento per le prove si avvicina al limite di pazienza, gli esperimenti di ottimizzazione diventano più pertinenti per i potenziali candidati al lancio, ma puoi completarne un numero inferiore.
  • Probabilmente puoi rispondere a molte domande con un addestramento di circa il 10% della durata di produzione. Tuttavia, le conclusioni a questo limite di tempo potrebbero non valere per gli esperimenti al 20% della durata di produzione, figuriamoci al 100%.

L'ottimizzazione in più round con limiti crescenti per ogni passaggio di addestramento è un approccio sensato. Puoi eseguire tutti i round che vuoi, ma in genere 1-3 round sono i più pratici. In sostanza, cerca di comprendere il problema il più possibile utilizzando prove con tempi di risposta molto rapidi, bilanciando quanto segue:

  • Accuratezza dell'ottimizzazione.
  • Pertinenza per le corse 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 nuovamente le conclusioni delle esecuzioni più brevi, se necessario. Come punto di partenza, ti consigliamo due cicli di ottimizzazione:

  • Round 1: esecuzioni di durata inferiore per trovare iperparametri di modello e ottimizzatore validi.
  • Round 2: poche esecuzioni di lunga durata su buoni punti di iperparametri per ottenere il modello finale.

La domanda più importante che sorge passando dal primo al secondo round è:

Come si regolano le pianificazioni del decadimento del tasso di apprendimento.

Un errore comune quando si modificano le pianificazioni del tasso di apprendimento tra un round e l'altro è utilizzare tutti i passaggi di addestramento aggiuntivi con un tasso di apprendimento troppo piccolo.

Round 1: molte corse di allenamento brevi

Purtroppo, non è garantito che gli iperparametri ottimali trovati in un addestramento breve e incompleto siano ancora scelte valide quando aumenti in modo significativo la durata dell'addestramento. Tuttavia, per alcuni iperparametri, le scelte valide sono spesso correlate a sufficienza per rendere utile il round 1. Quali valori degli iperparametri trovati nelle esecuzioni più brevi vengono trasferiti correttamente alle esecuzioni di addestramento più lunghe? Non lo sappiamo, abbiamo bisogno di ulteriori ricerche. Ma in base a ciò che sappiamo finora, ecco i nostri sospetti in ordine decrescente di probabilità di trasferimento:

  • Molto probabile che venga trasferito. L'instabilità iniziale dell'addestramento può essere risolta nel primo ciclo di ottimizzazione utilizzando un numero inferiore di passaggi di addestramento. Gli iperparametri più probabili da trasferire sono i seguenti:
    • Durata del riscaldamento
    • Inizializzazione
  • Con elevata probabilità di trasferimento. Un miglioramento significativo nell'architettura del modello di solito viene trasferito, ma sono probabili molti controesempi.
  • Potrebbe essere trasferito. Potrebbero essere trasferiti i seguenti iperparametri:
    • L'algoritmo di ottimizzazione e gli iperparametri verranno trasferiti "liberamente".
    • Aumento dei dati.
    • Regolarizzazione. Se non è possibile adattare perfettamente il set di addestramento, il modello potrebbe trovarsi in un regime in cui la regolarizzazione non è molto utile.
  • Con scarse probabilità di trasferimento. È improbabile che la pianificazione del tasso di apprendimento venga trasferita perfettamente. Training Compute-Optimal Large Language Models suggerisce che anche i trasferimenti della pianificazione del decadimento, ma non riteniamo che ciò sia vero in generale. Ad esempio, l'ottimizzazione del decadimento della radice quadrata su un numero ridotto di passaggi di addestramento e poi l'estensione a un numero elevato fa sì che la maggior parte dell'addestramento avvenga a passaggi troppo piccoli. Probabilmente otterrai risultati "abbastanza buoni" con la maggior parte dei programmi nel limite del budget di addestramento estremo, ma noterai miglioramenti significativi del rendimento se viene ottimizzato. Understanding Short-Horizon Bias in Stochastic Meta-Optimization descrive i pericoli di tentare di scegliere i tassi di apprendimento in modo miope.

Round 2: meno corse, ma di durata maggiore

Esegui la migliore configurazione degli iperparametri del 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 fissa la durata del decadimento dal round 1 ed estendi il periodo di lr costante all'inizio. Per il decadimento del coseno, mantieni la base lr del round 1 ed estendi max_train_steps come descritto in Training Compute-Optimal Large Language Models.

Ulteriori cicli di addestramento potrebbero essere utili per i team che presentano tutte le seguenti caratteristiche:

  • Modellazione molto matura
  • Pipeline di ottimizzazione
  • Esecuzioni di addestramento alla produzione molto lunghe e costose

Tuttavia, le corse di allenamento aggiuntive sono spesso improduttive.

Abbiamo già descritto come eseguire il trasferimento dal round 1 al round 2. Se non ti preoccupa il tempo di analisi e se la tua preoccupazione principale è l'utilizzo efficiente delle risorse di calcolo, ti consigliamo di aumentare in modo esponenziale la durata delle esecuzioni di addestramento (e quindi il tempo end-to-end per completare uno studio) in molti round diversi di ottimizzazione:

  • A ogni round, assicurati sistematicamente che le tue scelte continuino a fornire buoni risultati.
  • Inserisci le nuove idee in una pipeline che le rende progressivamente meno rischiose utilizzando esperimenti sempre più lunghi dal passaggio i al passaggio i+1.