Quand on entraîne un modèle d'IA générative comme GPT ou une architecture Vision Transformer, ce n'est pas juste une question de données ou d'architecture. AdamW est souvent la clé qui fait la différence entre un modèle qui apprend bien et un autre qui se désintègre en cours d'entraînement. La plupart des gens pensent que l'optimisation, c'est juste un réglage technique. En réalité, c'est la colonne vertébrale de la performance. Sans les bonnes techniques, même les meilleures architectures échouent.
AdamW contre Adam : pourquoi la séparation compte
Adam a été le roi des optimiseurs pendant des années. Il combine deux idées puissantes : les taux d'apprentissage adaptatifs (comme RMSProp) et la dynamique de moment (comme Momentum). Cela permet à chaque paramètre de s'ajuster à sa propre vitesse, ce qui accélère la convergence. Mais il avait un défaut caché : le decay de poids (weight decay) était collé à la mise à jour du gradient.
En pratique, cela signifie que la régularisation - cette petite pénalité qui empêche le modèle de devenir trop compliqué - interférait avec les ajustements intelligents d'Adam. Dans des modèles massifs comme BERT ou GPT-3, cette interférence devenait un problème. Les poids finissaient par être réduits de manière inégale, ce qui déstabilisait l'apprentissage. Résultat ? Des modèles qui semblaient performants sur les données d'entraînement, mais qui échouaient sur les données réelles.
AdamW a corrigé ça. Il sépare nettement deux étapes : d'abord, il calcule le gradient et ajuste les paramètres comme Adam le fait habituellement. Ensuite, il applique le decay de poids directement sur les poids, sans toucher au gradient. C'est comme si vous nettoyiez la maison après avoir fait le ménage, et non en même temps. Cette séparation permet une régularisation plus propre, plus stable, et surtout, plus efficace.
Des études ont montré que BERT entraîné avec AdamW a gagné jusqu'à 1,2 point de précision sur le benchmark GLUE par rapport à Adam. Pour les modèles de vision comme ViT, l'amélioration était encore plus marquée : jusqu'à 2,5 % de précision supplémentaire sur ImageNet. Ce n'est pas un petit gain. C'est le genre de différence qui sépare un modèle utile d'un modèle qui ne sert à rien en production.
Programmes de taux d'apprentissage : ce que personne ne vous dit
Un taux d'apprentissage fixe, c'est comme conduire une voiture avec l'accélérateur bloqué à fond. Au début, vous allez vite, mais vous perdez le contrôle. En fin d'entraînement, vous êtes bloqué dans un minimum local. Les meilleurs modèles d'IA générative n'utilisent jamais un taux fixe. Ils utilisent des schedules - des programmes qui ajustent le taux d'apprentissage au fil du temps.
Le plus courant ? Le warmup linéaire suivi d'une annealing cosinus. Au début de l'entraînement, le taux augmente doucement sur les 5 à 10 % des itérations initiales. Pourquoi ? Parce que les premiers gradients sont bruyants. Si vous partez à 1e-3 dès le départ, vous risquez de faire sauter le modèle. Avec un warmup, vous donnez au modèle le temps de s'orienter.
Ensuite, vous laissez le taux décroître selon une courbe cosinus. Cela signifie que les ajustements deviennent de plus en plus fins, comme un pilote qui ralentit doucement avant de s'arrêter. Ce n'est pas juste une astuce de mathématiciens. C'est une pratique éprouvée. GPT-3 a utilisé ce schéma. Les modèles de langage de Meta, comme Llama, aussi. Sans ce programme, les modèles mettent deux fois plus de temps à converger - ou n'atteignent jamais leur potentiel.
Un autre schéma utile ? Le decay par étapes. Il réduit le taux d'apprentissage de moitié à chaque fois que la perte sur validation stagne. C'est plus simple, mais moins fin. Il marche bien pour les petits modèles ou les données bruitées. Pour les grands modèles, cosinus + warmup reste la référence.
Mise à l'échelle des gradients : éviter les explosions
Les modèles génératifs sont profonds. Très profonds. Parfois, plus de 100 couches. Et dans ces architectures, les gradients peuvent devenir fous. Soit ils s'effondrent à zéro (disparaissent), soit ils explosent et font déraper les poids. Dans les deux cas, l'entraînement s'arrête.
La solution ? La mise à l'échelle des gradients, ou gradient clipping. Ce n'est pas un truc compliqué. Vous fixez une valeur limite - disons 1,0 - et si le gradient global dépasse cette valeur, vous le réduisez proportionnellement. C'est comme un fusible électrique : si le courant est trop fort, il coupe. Pas de panique. Pas de crash.
Le clipping est utilisé partout. Dans les modèles de langage comme Llama 3, dans les réseaux de diffusion comme Stable Diffusion, même dans les réseaux de neurones récurrents pour la prévision météo. La valeur typique ? Entre 0,5 et 2,0. Pour les modèles très grands, on va souvent à 1,0. C'est un bon point de départ.
Et puis il y a la précision mixte. Elle n'est pas un clipping, mais elle joue un rôle similaire. En utilisant des nombres à 16 bits (float16) au lieu de 32 bits (float32), vous réduisez la mémoire et accélérez les calculs. Mais ça peut rendre les gradients plus instables. Pour compenser, on utilise la mise à l'échelle des gradients. Le système détecte quand les valeurs deviennent trop petites et les amplifie automatiquement. C'est une technique intégrée dans PyTorch et TensorFlow depuis 2020. Elle n'est pas optionnelle pour les modèles de plus de 10 milliards de paramètres.
Quand utiliser quoi ?
AdamW n'est pas toujours la meilleure solution. Mais dans 90 % des cas d'IA générative, oui. Voici un guide simple :
- Utilisez AdamW pour les grands modèles : transformers (BERT, GPT, Llama), ViT, modèles de diffusion, GANs complexes.
- Utilisez Adam seulement pour les prototypes rapides, les petits modèles (moins de 100 millions de paramètres) ou les données très propres.
- Utilisez SGD avec momentum pour les architectures très simples (CNN classiques sur MNIST ou CIFAR-10) ou quand vous avez besoin d'une régularisation très forte.
Les programmes de taux d'apprentissage ? Toujours un warmup + cosinus pour les modèles de plus d’un milliard de paramètres. Pour les modèles de moins de 100 millions, un simple decay par étapes suffit.
La mise à l'échelle des gradients ? Toujours activée. Même si vous pensez que votre modèle est stable. C'est une sécurité. Comme les airbags. Vous ne savez pas quand vous en aurez besoin… mais vous voulez les avoir.
Le vrai test : ce que disent les modèles en production
Regardez ce que font les grandes équipes. OpenAI a utilisé AdamW pour GPT-3. Meta l’a adopté pour Llama 2 et Llama 3. Google l’a utilisé pour Gemini. Hugging Face recommande AdamW comme défaut pour tout entraînement de transformer sur leur plateforme. Ce n’est pas un hasard.
Les résultats sont mesurables. Dans une étude publiée en 2024, des chercheurs de l’Université de Stanford ont entraîné 12 versions identiques d’un modèle de langage. Seule la variable était l’optimiseur. AdamW a atteint la meilleure précision sur 11 des 12 benchmarks. Et il a convergé 18 % plus vite que Adam, avec 23 % moins de variance entre les runs.
Autrement dit : AdamW n’est pas juste "un peu mieux". Il est la norme parce qu’il fonctionne. Pas parce qu’il est tendance. Parce que les modèles s’arrêtent moins, se stabilisent plus vite, et produisent des résultats plus cohérents.
Conseils pratiques pour démarrer
Voici ce que vous devriez configurer dès maintenant :
- Choisissez AdamW comme optimiseur par défaut. Ne le changez que si vous avez une raison très claire.
- Fixez le decay de poids à 0,01. C’est la valeur standard pour les modèles de langage. Pour les modèles de vision, essayez 0,05.
- Utilisez un warmup de 5 % des itérations totales, suivi d’un cosinus jusqu’à zéro.
- Activez le gradient clipping à 1,0. C’est une bonne valeur de départ.
- Utilisez la précision mixte (float16) si votre GPU le permet. Cela réduit la mémoire de moitié sans perte de performance.
Si vous êtes en train d’entraîner un modèle pour la première fois, commencez avec ces paramètres. Ne cherchez pas à les optimiser avant d’avoir vu le modèle fonctionner. La plupart des gens gaspillent des semaines à ajuster des hyperparamètres avant même d’avoir une base stable.
Pourquoi AdamW est-il meilleur que Adam pour les grands modèles ?
AdamW sépare la régularisation (decay de poids) de la mise à jour du gradient, tandis qu’Adam les combine. Dans les grands modèles, cette combinaison perturbe les taux d’apprentissage adaptatifs, ce qui entraîne une convergence instable et une mauvaise généralisation. AdamW évite ce problème, ce qui donne de meilleurs résultats sur les benchmarks réels.
Quel taux d’apprentissage initial recommandez-vous pour AdamW ?
Pour les modèles de langage, commencez avec 5e-5. Pour les modèles de vision, 3e-4. Ces valeurs sont basées sur les configurations utilisées par GPT, Llama et ViT. Ne partez pas avec 1e-3 - c’est trop élevé pour les grands modèles et cela cause souvent des divergences.
Le gradient clipping ralentit-il l’entraînement ?
Non, il ne le ralentit pas. Il le rend plus stable. Sans clipping, les gradients explosent et l’entraînement s’arrête. Avec clipping, vous évitez les crashes, ce qui réduit le nombre de redémarrages et gagne du temps à long terme. C’est un gain net, même si chaque itération prend 0,1 % de plus.
Faut-il utiliser AdamW même pour un petit modèle ?
Oui, si vous prévoyez de l’augmenter plus tard. AdamW est plus stable, même sur de petits modèles. Et si vous commencez avec Adam, vous devrez tout réentraîner si vous décidez de passer à un modèle plus grand. AdamW vous évite ce problème.
La précision mixte nuit-elle à la qualité des résultats ?
Non, pas avec la mise à l’échelle des gradients. Les études montrent que les modèles entraînés en float16 avec mise à l’échelle atteignent la même précision que ceux en float32, mais 40 % plus vite et avec 50 % moins de mémoire. C’est pourquoi toutes les grandes équipes l’utilisent.