Hyperparamètre (Hyperparameter)
Un hyperparamètre est une variable de configuration définie avant le lancement de l’entraînement d’un modèle de machine learning, qui contrôle le processus d’apprentissage mais n’est pas apprise à partir des données. Contrairement aux paramètres du modèle (poids, biais) qui sont optimisés pendant l’entraînement, les hyperparamètres sont fixés par le praticien et influencent directement la qualité, la vitesse et la stabilité de la convergence.
Le learning rate, le batch size, le nombre d’epochs, le choix de l’optimiseur, le taux de dropout, le weight decay : ce sont tous des hyperparamètres. Leur choix est critique. Un learning rate trop élevé fait diverger l’entraînement. Un learning rate trop bas gaspille des centaines d’heures de GPU. Un mauvais batch size dégrade la convergence. Trouver la bonne combinaison d’hyperparamètres est souvent la différence entre un modèle médiocre et un modèle état de l’art.
- Catégorie
- Concept fondamental / Machine Learning
- Définition
- Variable de configuration fixée avant l’entraînement
- Distinction clé
- Paramètre = appris des données / Hyperparamètre = défini par l’utilisateur
- Exemples
- Learning rate, batch size, epochs, dropout, weight decay, warmup steps
- Tuning
- Grid search, random search, Bayesian optimization, Hyperband
- Outils
- Optuna, Ray Tune, Weights & Biases Sweeps, Keras Tuner
Paramètre vs Hyperparamètre
La distinction est fondamentale et souvent source de confusion pour les débutants :
Paramètres du modèle. Les poids et biais des couches du réseau de neurones. Ils sont initialisés aléatoirement et optimisés automatiquement pendant l’entraînement via la rétropropagation et un algorithme d’optimisation. Un modèle de 7B paramètres a 7 milliards de ces valeurs apprises.
Hyperparamètres. Les variables de configuration qui contrôlent comment l’entraînement se déroule. Ils ne sont pas appris des données. Ils sont définis avant l’entraînement et restent fixes (ou suivent un schedule prédéfini) pendant tout le processus. Le praticien doit les choisir, soit par expérience, soit par recherche systématique (tuning).
| Critère | Paramètre | Hyperparamètre |
|---|---|---|
| Quand défini | Appris pendant l’entraînement | Fixé avant l’entraînement |
| Par qui | L’algorithme d’optimisation | Le praticien ou un outil de tuning |
| Exemples | Poids des couches, biais | Learning rate, batch size, dropout |
| Quantité typique | Millions à milliards | Dizaines |
| Sauvegardé dans | Le checkpoint du modèle | Le fichier de configuration |
Les hyperparamètres principaux en deep learning
Learning Rate (taux d’apprentissage)
Le learning rate (η ou lr) est unanimement considéré comme l’hyperparamètre le plus important. Il contrôle la taille du pas que l’optimiseur effectue à chaque mise à jour des poids. Trop élevé : le modèle oscille autour du minimum et ne converge jamais (voire diverge). Trop bas : la convergence est excessivement lente et le modèle peut rester piégé dans un minimum local.
Pour les LLM, les learning rates typiques sont de l’ordre de 1e-4 à 6e-4 pour le pré-entraînement, et 1e-5 à 5e-5 pour le fine-tuning. Le learning rate est presque toujours combiné avec un schedule (warmup linéaire + décroissance cosinus) plutôt qu’une valeur fixe.
Batch Size (taille de lot)
Le batch size détermine combien d’échantillons sont traités avant chaque mise à jour des poids. Il influence la stabilité des gradients, la vitesse d’entraînement et la généralisation du modèle.
Petit batch (1-32) : gradients bruités, bonne régularisation implicite, convergence vers des minima « plats » (meilleure généralisation), mais lent et sous-utilise le GPU. Grand batch (256-4096+) : gradients stables, vitesse maximale sur GPU, mais peut converger vers des minima « pointus » (moins bonne généralisation) et nécessite un ajustement du learning rate.
Pour les LLM, le batch size est souvent dicté par les scaling laws et exprimé en tokens (ex. 4M tokens par step pour Llama 2). Le gradient accumulation permet de simuler un grand batch avec des micro-batches plus petits quand la mémoire est limitée.
Nombre d’Epochs
Une epoch correspond à un passage complet sur l’ensemble du dataset d’entraînement. Le nombre d’epochs contrôle la durée totale de l’entraînement. Trop peu : underfitting (le modèle n’a pas assez appris). Trop d’epochs : overfitting (le modèle mémorise les données au lieu de généraliser).
Pour les LLM modernes, on ne raisonne plus en epochs mais en tokens vus. Llama 2 a été entraîné sur 2T tokens, DeepSeek V3 sur 14,8T tokens. Les données ne sont vues qu’une seule fois (1 epoch) ou un petit nombre de fois, car les datasets sont suffisamment grands.
Choix de l’optimiseur
L’optimiseur (SGD, Adam, AdamW, LAMB) est un hyperparamètre structurel qui détermine comment les gradients sont utilisés pour mettre à jour les poids. AdamW est le standard pour les LLM. Chaque optimiseur a ses propres hyperparamètres internes : les betas d’Adam (β1=0.9, β2=0.95 pour les LLM), le momentum de SGD, etc.
Weight Decay (régularisation L2)
Le weight decay pénalise les poids de grande magnitude pour prévenir l’overfitting. C’est un hyperparamètre de régularisation. Pour les LLM, des valeurs de 0.01 à 0.1 sont courantes. En AdamW, le weight decay est découplé de la mise à jour des gradients (contrairement au L2 classique dans Adam), ce qui est important pour le comportement correct de la régularisation.
Dropout
Le dropout désactive aléatoirement un pourcentage de neurones pendant l’entraînement. Le taux de dropout (0 à 1) est un hyperparamètre de régularisation. Valeurs typiques : 0.1 à 0.3. Les LLM modernes utilisent souvent un dropout de 0 pendant le pré-entraînement (la taille du dataset suffit comme régulariseur) et un léger dropout pendant le fine-tuning.
Warmup Steps
Le nombre de steps pendant lesquels le learning rate augmente linéairement de 0 à sa valeur maximale. Le warmup stabilise les premières étapes d’entraînement, quand les gradients sont les plus instables (les poids sont initialisés aléatoirement). Pour les LLM, un warmup de 1000 à 2000 steps est courant.
Hyperparamètres architecturaux
Le nombre de couches, la dimension cachée, le nombre de têtes d’attention, la taille du vocabulaire, la longueur de séquence maximale : ce sont des hyperparamètres qui définissent l’architecture du modèle. Ils ne changent pas pendant l’entraînement mais déterminent la capacité du modèle. Pour les LLM, ces choix sont guidés par les scaling laws plutôt que par un tuning empirique.
Techniques de tuning d’hyperparamètres
Grid Search (recherche en grille)
On définit une grille de valeurs pour chaque hyperparamètre et on teste toutes les combinaisons. Exhaustif mais exponentiellement coûteux : si vous avez 5 valeurs de learning rate × 4 batch sizes × 3 valeurs de dropout = 60 entraînements. Impraticable pour plus de 2-3 hyperparamètres.
Random Search (recherche aléatoire)
On tire des valeurs aléatoires dans un espace continu pour chaque hyperparamètre. L’article de Bergstra & Bengio (2012) a démontré que la random search est plus efficace que la grid search, car elle explore mieux les dimensions les plus importantes de l’espace. En pratique, 50 à 100 essais aléatoires suffisent souvent pour trouver une bonne configuration.
Bayesian Optimization
L’optimisation bayésienne construit un modèle probabiliste (souvent un processus gaussien) de la relation entre les hyperparamètres et la performance. Chaque essai est choisi pour maximiser le gain d’information attendu (exploration) ou la performance prédite (exploitation). C’est la méthode la plus sample-efficient : elle trouve de bonnes configurations avec moins d’essais que la random search.
Hyperband / ASHA
Hyperband combine la random search avec l’early stopping. Il lance de nombreux essais avec peu de ressources (peu d’epochs), élimine les moins prometteurs, et alloue plus de ressources aux survivants. ASHA (Asynchronous Successive Halving Algorithm) est la version parallèle. C’est l’approche la plus pratique pour le deep learning car elle évite de gaspiller du GPU sur des configurations manifestement mauvaises.
Population Based Training (PBT)
Développé par DeepMind, PBT entraîne une population de modèles en parallèle. Périodiquement, les modèles les moins performants « copient » les poids et hyperparamètres des meilleurs, avec une perturbation aléatoire. C’est une forme de tuning en ligne qui peut changer les hyperparamètres pendant l’entraînement, pas seulement avant.
Outils de tuning
| Outil | Algorithmes | Intégration | Particularité |
|---|---|---|---|
| Optuna | Bayesian (TPE), CMA-ES, Hyperband | PyTorch, TF, Hugging Face | API Python élégante, pruning intégré |
| Ray Tune | Tous (PBT, ASHA, Bayesian, etc.) | PyTorch, TF, Hugging Face | Distribué nativement, scheduling avancé |
| W&B Sweeps | Bayesian, Grid, Random | Weights & Biases | Visualisation intégrée, collaboration |
| Keras Tuner | Bayesian, Hyperband, Random | TF/Keras | Simple pour les utilisateurs Keras |
| NNI | Tous (y compris NAS) | PyTorch, TF | Combine HPO et NAS (Microsoft) |
Hyperparamètres typiques des LLM
Pour le pré-entraînement d’un LLM de type Transformer decoder-only, voici les hyperparamètres standard (valeurs indicatives basées sur les reports techniques de Llama 2, DeepSeek V3, etc.) :
| Hyperparamètre | Valeur typique (7B) | Valeur typique (70B) |
|---|---|---|
| Learning rate max | 3e-4 | 1.5e-4 |
| Warmup steps | 2000 | 2000 |
| LR schedule | Cosine decay | Cosine decay |
| Batch size (tokens) | ~4M | ~4M |
| Optimiseur | AdamW | AdamW |
| Adam β1 / β2 | 0.9 / 0.95 | 0.9 / 0.95 |
| Weight decay | 0.1 | 0.1 |
| Gradient clipping | 1.0 | 1.0 |
| Dropout | 0.0 | 0.0 |
| Précision | BF16 | BF16 |
Ces valeurs sont remarquablement stables entre les différents LLM. Les scaling laws prédisent que le learning rate optimal diminue avec la taille du modèle (un modèle plus grand a besoin d’un pas plus petit). Le batch size en tokens est souvent le même quelle que soit la taille du modèle, car il est dicté par les propriétés de convergence du language modeling.
Bonnes pratiques
Commencez par les valeurs par défaut. Pour le fine-tuning de LLM, lr=2e-5, batch=32, warmup=10%, cosine schedule, AdamW avec weight_decay=0.01 est un excellent point de départ. Ne tunez que si les résultats sont insatisfaisants.
Tunez le learning rate en premier. C’est l’hyperparamètre avec le plus grand impact. Une grille de [1e-5, 2e-5, 5e-5, 1e-4] pour le fine-tuning couvre la plupart des cas.
Maximisez le batch size. Utilisez le plus grand batch size que votre GPU peut supporter, puis ajustez le learning rate. Le gradient accumulation étend le batch effectif au-delà de la limite mémoire.
Utilisez l’early stopping. L’early stopping surveille la performance sur le validation set et arrête l’entraînement quand elle cesse de s’améliorer. C’est le meilleur « tuning » du nombre d’epochs : laissez le modèle décider quand il a assez appris.
Loggez tout. Utilisez Weights & Biases, MLflow ou TensorBoard pour tracker chaque run avec ses hyperparamètres et ses métriques. Sans logging systématique, le tuning devient un exercice de mémoire.
Sensibilité et interactions entre hyperparamètres
Les hyperparamètres n’agissent pas de façon indépendante. Le learning rate optimal dépend du batch size (linear scaling rule). Le nombre optimal d’epochs dépend du learning rate schedule. Le weight decay optimal interagit avec le learning rate dans AdamW. Ces interactions rendent le tuning plus complexe qu’un simple balayage paramètre par paramètre.
En pratique, la sensibilité des hyperparamètres suit un ordre approximatif : le learning rate a l’impact le plus fort, suivi du batch size, puis du weight decay, du warmup et du dropout. Pour les LLM, les hyperparamètres architecturaux (nombre de couches, dimension cachée) sont fixés par le budget compute et les scaling laws, pas par du tuning.
Interaction Learning Rate / Batch Size
La « linear scaling rule » de Goyal et al. (2017) stipule que quand on multiplie le batch size par k, on doit multiplier le learning rate par k pour maintenir une convergence équivalente. Cependant, cette règle a ses limites : elle fonctionne bien pour les batch sizes modérés mais peut échouer pour des batch sizes très grands (> 8192 pour ImageNet). Pour les LLM, le batch size en tokens est souvent fixé par la recherche (les papers techniques spécifient le batch optimal), et le learning rate est ajusté en conséquence.
Hyperparamètres spécifiques au fine-tuning
Le fine-tuning de LLM introduit des hyperparamètres supplémentaires. Avec LoRA, il faut choisir le rang r (4 à 64), l’alpha de scaling (souvent 2× le rang), et quelles couches adapter (attention, MLP, ou les deux). Avec le full fine-tuning, le learning rate doit être beaucoup plus bas que pour le pré-entraînement (1e-5 vs 3e-4) pour ne pas « oublier » les connaissances pré-entraînées. Le nombre d’epochs est typiquement 1 à 5 pour le fine-tuning d’instructions.
Un hyperparamètre souvent négligé en fine-tuning est le ratio de données. Combien d’exemples d’instruction utiliser ? Des études montrent que la qualité des données compte plus que la quantité : 1000 exemples de haute qualité peuvent surpasser 100 000 exemples médiocres. C’est un « hyperparamètre » informel mais critique.
Questions fréquentes sur les hyperparamètres
Quel est l’hyperparamètre le plus important en deep learning ?
Le learning rate. C’est le consensus quasi-universel dans la communauté ML. Un mauvais learning rate rend l’entraînement impossible (divergence ou stagnation), tandis que les autres hyperparamètres ont généralement un impact plus graduel sur la performance. Pour le fine-tuning de LLM, un mauvais learning rate est la cause n°1 d’échec.
Faut-il toujours tuner les hyperparamètres ?
Non, pas toujours. Pour le fine-tuning de modèles bien établis (BERT, Llama, etc.), les valeurs par défaut recommandées dans les papers et les documentations fonctionnent très bien dans la majorité des cas. Le tuning devient important quand vous travaillez sur un dataset très spécifique, une architecture non standard, ou quand vous visez les derniers pourcents de performance sur un benchmark. Pour le pré-entraînement de LLM, les hyperparamètres sont bien établis par les scaling laws.
Grid search ou random search ?
Random search dans presque tous les cas. Bergstra & Bengio (2012) ont démontré que la random search est plus efficace car elle explore mieux les dimensions importantes de l’espace. La grid search gaspille des essais sur des dimensions peu influentes. Pour un budget limité (< 50 essais), utilisez la random search. Pour un budget confortable, l'optimisation bayésienne (Optuna) ou Hyperband (Ray Tune) sont encore plus efficaces.
Comment le batch size affecte-t-il la convergence ?
Un batch plus grand produit des estimations de gradient plus stables (moins de bruit) mais réduit la fréquence des mises à jour. La « linear scaling rule » stipule que doubler le batch size nécessite de doubler le learning rate pour maintenir une convergence équivalente, avec un warmup adapté. Cependant, au-delà d’un certain seuil (qui dépend du modèle et des données), augmenter le batch size ne donne plus de gains et peut même dégrader la généralisation. Pour les LLM, le batch size en tokens est déterminé par les scaling laws.
Peut-on changer les hyperparamètres pendant l’entraînement ?
Certains oui, d’autres non. Le learning rate est couramment modifié via un schedule (warmup puis décroissance). Le dropout peut être ajusté entre les phases d’entraînement. Le batch size peut être augmenté progressivement. Cependant, des changements brusques de la plupart des hyperparamètres peuvent déstabiliser l’entraînement. Population Based Training (PBT) de DeepMind est une approche systématique pour modifier les hyperparamètres pendant l’entraînement en s’inspirant de l’évolution darwinienne.