English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

invité
1 / ?
retour aux leçons

Deux problèmes aux deux extrémités de l’entraînement

Problème des premiers pas : les poids frais ne peuvent pas supporter de grands pas

À l’étape 0, chaque poids commence comme un petit nombre aléatoire tiré d’une distribution proche de zéro. Les activations restent proches de zéro. Les gradients ne portent presque aucune information sur une solution finale. Appliquer un taux d’apprentissage maximal à ces gradients et le modèle s’éloigne fortement de l’initialisation dans des directions qui n’encodent aucune structure significative.


ANDREA-120M v1 a commis cette erreur. Pas de warmup. L’étape 1 utilisait lr = 0.0003 sur des poids fraîchement initialisés. Résultat : le modèle s’est retrouvé dans un mauvais bassin de paramètres en quelques centaines de pas. Les valeurs de perte semblaient raisonnables ; les échantillons produisaient des boucles de répétition dès l’étape 80K et ne s’en sont jamais remis.


Problème de fin d’entraînement : les grands pas ne peuvent pas polir une solution

À l’étape 100K, le modèle a appris la structure grossière. Les gradients portent désormais un signal fin : quel poids de token a besoin d’une petite correction, quelle tête d’attention a besoin d’un léger rééquilibrage. Appliquer un taux d’apprentissage maximal à ce stade fait dépasser chaque ajustement fin, oscillant autour d’un optimum sans jamais s’y stabiliser.


Deux problèmes, aux extrémités opposées de l’entraînement. Une seule planification, deux régions : monter doucement, puis décroître progressivement.

Warmup linéaire : les 2000 premiers pas

La formule

ANDREA-120M v2 utilise un warmup linéaire sur 2000 pas :


lr(t) = lr_scheduled(t) * min(1, (t + 1) / warmup_steps)


t est le numéro de l'étape (indexé à partir de 0), warmup_steps = 2000, et lr_scheduled(t) est ce que la planification cosinus prescrirait en ignorant le warmup.


Lecture de la formule :


- À t = 0 : lr = lr_scheduled(0) min(1, 1/2000) = lr_scheduled(0) 0.0005. Premier pas minuscule.

- À t = 1000 : lr = lr_scheduled(1000) min(1, 1001/2000) = lr_scheduled(1000) 0.5. Moitié de la force.

- À t = 2000 : lr = lr_scheduled(2000) min(1, 2001/2000) = lr_scheduled(2000) 1.0. Force totale.

- À t > 2000 : le clamp maintient le multiplicateur à 1, le warmup n’a plus d’effet, la décroissance cosinus prend seule le relais.


La rampe linéaire depuis zéro donne au modèle 2000 pas pour former des représentations grossières avant qu’AdamW et le clipping de gradient ne voient des mises à jour à pleine force. À l’étape 2000, les poids ont suffisamment dérivé pour que le lr maximal ne les pousse plus dans un mauvais bassin.

Calcul du taux d’apprentissage pendant le warmup

ANDREA-120M v2 utilise `lr_scheduled = 0.0003` (pic) et `warmup_steps = 2000`. Ignorez la décroissance cosinus pendant le warmup (supposez que `lr_scheduled` reste constant). Calculez le taux d’apprentissage réel à : (a) l’étape 0, (b) l’étape 500, (c) l’étape 2000, (d) l’étape 5000. Montrez vos calculs.

Décroissance cosinus après warmup

La courbe

Une fois le warmup terminé à l'étape 2000, le taux d'apprentissage suit une courbe cosinus depuis le pic jusqu'à zéro sur les étapes restantes :


lr(t) = lr_min + (lr_peak - lr_min) 0.5 (1 + cos(pi * progress))


progress = (t - warmup_steps) / (total_steps - warmup_steps). À progress = 0 (juste après le warmup), cos(0) = 1, lr = peak. À progress = 1 (dernière étape), cos(pi) = -1, lr = lr_min (généralement 0 ou un petit plancher).


Pourquoi Cosinus, et non Linéaire ou Exponentiel ?

La décroissance cosinus commence lentement (courbe presque plate près du pic), accélère au milieu, puis ralentit à nouveau près de zéro. Trois avantages :


1. Plateau près du pic. Les premières étapes après le warmup conservent encore un lr presque maximal, permettant au modèle d’utiliser une longue période de taux d’apprentissage élevé pour construire des représentations.

2. Transition fluide au milieu. Pas de sauts brusques que AdamW doit absorber.

3. Plateau près de zéro. Les dernières étapes reçoivent un lr minuscule pour le polissage fin, similaire au recuit simulé.


ANDREA-120M s’entraîne sur 200K étapes au total ; 198K de ces étapes se trouvent dans la région de décroissance cosinus après le warmup de 2000 étapes.


LR Warmup & Cosine Decay

Redémarrage chaud d’ANDREA-12M à l’étape 25K

Le plateau

ANDREA-12M s’est entraîné pendant 60K étapes avec une décroissance cosinus depuis le pic lr = 0.0004. Vers l’étape 22K, la perte s’est stabilisée à une EMA ~2.4. La décroissance cosinus avait réduit lr à ~0.00015. Le bandit continuait à fournir des données diversifiées ; le modèle a cessé de s’améliorer.


Diagnostic : le lr avait décru trop bas pour que le modèle puisse sortir de son bassin actuel. Les données Hermes allaient entrer dans le programme (étape 25K), apportant 590K nouvelles conversations. Le modèle avait besoin d’énergie pour absorber ce choc de données.


Le redémarrage

À l’étape 25K, le calendrier a exécuté un redémarrage chaud : il a fait passer le lr de 0.00015 (décru) à 0.0004 (pic initial), puis a repris la décroissance cosinus sur les étapes restantes.


Loshchilov & Hutter (2017) ont nommé cette technique « SGDR » (stochastic gradient descent with warm restarts). L’intuition : un lr élevé apporte suffisamment d’énergie cinétique pour sortir d’un bassin local et explorer les bassins voisins ; la décroissance cosinus suivante permet de se ré-anneler dans un meilleur bassin.


Résultat. La perte EMA est passée de 2,40 à 2,10 au cours des 10K étapes suivantes après le redémarrage. Le modèle a été livré à l'étape 43,6K avec une perte SMMA de 2,0, démontrant une structure cohérente de tours de questions-réponses.


ANDREA-120M v2 a choisi de NE PAS utiliser de redémarrages chauds : avec 200K étapes disponibles et un nombre de paramètres beaucoup plus élevé, une décroissance monotone régulière a produit une convergence plus stable. Le redémarrage fonctionne mieux lorsque l'entraînement est court et qu'un plateau coïncide avec un changement de données connu.

Diagnostic de l'échec de v1

ANDREA-120M v1 a utilisé `lr = 0.0003` dès l'étape 1, sans warmup. À l'étape 80K, les échantillons produisaient `region region region region`. Raisonnement mécaniste : décrivez ce qui se passe pour une matrice de poids fraîchement initialisée aux étapes 1 à 100 sous `lr = 0.0003` par rapport à un warmup de 2000 étapes. Pourquoi le chemin sans warmup aboutit-il à un mauvais bassin ?

Choix de planification en pratique

Si vous entraîniez un modèle de 120M sur un jeu de données bruité pour SEULEMENT 50K étapes au total, utiliseriez-vous un warmup plus long ou plus court que les 2000 étapes d'ANDREA-120M v2 ? Justifiez avec un argument mécanistique unique.

Activités connexes

Trois liens frères vers le planning du LR :


- Activité 10 : AdamW. Le warmup laisse au biais de correction d'AdamW le temps de se stabiliser. Sans warmup, l'amplification 10x à l'étape 1 multiplie le bruit présent dans les gradients ; avec warmup, le multiplicateur agit sur un signal réel.

- Activité 12 : Gradient clipping. Le clipping limite la norme L2 du gradient à 1.0 AVANT AdamW. Le warmup amortit lr ; le clipping amortit g. Ensemble, ils sécurisent les premières étapes même sur des curricula sensibles aux chocs.

- Activité 22 : Checkpointing. Un warm restart nécessite de charger l'état de l'optimiseur (m, v, compteur d'étapes) depuis un checkpoint, puis de modifier la planification en cours d'exécution. Le restart d'ANDREA-12M à l'étape 25K illustre cela ; il a fallu deux tentatives pour obtenir la logique de chargement d'état correcte.


Schedule, optimiseur et clipping forment un triangle de stabilité. Supprimez un sommet, et ANDREA répétera son effondrement v1.