Température, Top-p, Top-k : le guide pratique pour contrôler un LLM

Température, Top-p, Top-k : le guide pratique pour contrôler un LLM
Table des matières

Le problème : « mon LLM répond au hasard »

Quand on utilise un LLM, une même question peut produire des réponses très différentes. Parfois c’est utile (créativité), parfois c’est catastrophique (variabilité, incohérences, hallucinations).

La plupart du temps, la cause n’est pas « le modèle »… mais les paramètres de génération.

Ce billet vous donne une méthode simple et fiable pour régler un LLM (stabilité vs créativité) sans jouer à la loterie.

Si vous voulez aller plus loin (décodage, prompting, KV cache, décodage spéculatif, scripts), mon livre La Mécanique des LLM développe la version complète :

Avant les paramètres : le modèle ne “choisit” pas un mot, il produit une distribution

À chaque étape, le LLM ne propose pas un mot unique : il produit une distribution de probabilités sur tout son vocabulaire. La “personnalité” d’une réponse dépend donc du décodage : la règle qui transforme cette distribution en un prochain token.

Dans le chapitre, je rappelle un point simple : la génération est token par token, et un petit changement au début peut conduire à une trajectoire totalement différente.

Les stratégies de décodage (contexte indispensable)

Avant de parler de température, il faut distinguer trois familles :

1) Greedy (décodage gourmand)

On choisit systématiquement le token le plus probable. C’est stable, mais parfois “myope” : le texte peut devenir répétitif ou passer à côté d’une suite globalement meilleure.

2) Beam search (recherche par faisceau)

On garde plusieurs suites candidates (les K meilleures) pour explorer plusieurs futurs en parallèle, puis on sélectionne la meilleure séquence finale. Souvent utile pour des tâches où la précision prime (p. ex. traduction), mais parfois trop “conventionnel” pour de la conversation.

3) Sampling (échantillonnage)

On tire au sort parmi les candidats en respectant les probabilités (avec des garde-fous comme top-k / top-p). C’est la famille la plus utilisée en assistants conversationnels.

Exemple chiffré (intuitif)

Supposons que le modèle prédise :

token      probabilité
"bonjour"     0.45
"salut"       0.35
"yo"          0.20
  • En greedy, on prend toujours “bonjour”.
  • En sampling, “salut” ou “yo” peuvent sortir : c’est précisément ce qui crée de la variété.

Les trois boutons fondamentaux

1) Température (T)

La température agit sur la « pointiness » de la distribution :

  • T basse (ex. 0.1–0.3) : sorties plus déterministes, plus stables
  • T haute (ex. 0.8–1.2) : sorties plus variées, plus créatives (et plus risquées)

En une ligne : la température aplatisse ou accentue les probabilités.

softmax_temp(i) = exp(z_i / T) / sum_j exp(z_j / T)

Si T augmente, les écarts entre logits sont “écrasés” : davantage de tokens deviennent plausibles. Si T diminue, on accentue les écarts : le meilleur token écrase les autres.

2) Top-k

On ne garde que les k tokens les plus probables, puis on renormalise.

  • utile pour limiter les sorties absurdes
  • mais trop petit peut rendre le texte répétitif

3) Top-p (nucleus sampling)

On garde le plus petit ensemble de tokens dont la probabilité cumulée atteint p (ex. 0.9).

  • souvent plus « adaptatif » que top-k
  • très utilisé en production

Dans le chapitre, je donne l’intuition : top-k fixe une taille, top-p fixe une masse de probabilité. En pratique, top-p est souvent plus robuste car la distribution n’a pas la même “forme” selon le prompt.

Une remarque importante : même à température 0, tout n’est pas toujours parfaitement déterministe

Même si l’algorithme est théoriquement déterministe (greedy), sur GPU, de minuscules variations d’arrondi peuvent apparaître car les opérations flottantes ne sont pas parfaitement associatives. Ces écarts peuvent, rarement, changer le token sélectionné.

Recommandations rapides (pratiques)

  • Q/R factuelles, extraction, conformité : T≈0.1–0.3, top-p≈0.8–0.9
  • Rédaction standard / assistants : T≈0.4–0.7, top-p≈0.9–0.95
  • Idéation / créativité : T≈0.8–1.1, top-p≈0.95–0.98

Astuce d’ingénieur : changez un paramètre à la fois et mesurez (qualité, diversité, taux d’erreur).

Méthode pas-à-pas (pour obtenir un réglage robuste)

Voici une procédure simple que vous pouvez appliquer à n’importe quel assistant.

Étape 1 : clarifier votre objectif

  • Si vous voulez du factuel : privilégiez stabilité et vérifiabilité.
  • Si vous voulez de l’idéation : autorisez plus de diversité.

Étape 2 : partir d’un preset “sûr”

  • Commencez par temperature = 0.2 et top_p = 0.9.
  • Si votre API expose top_k, laissez-le large (ou désactivé) au début.

Étape 3 : ajuster dans le bon ordre

  1. Ajustez d’abord temperature (stabilité ↔ créativité)
  2. Ensuite top_p (couper la longue traîne)
  3. Enfin seulement top_k (si vous observez des sorties rares/bizarres)

Étape 4 : tester sur un mini-jeu de prompts

Prenez 20 à 30 prompts réels (vos cas d’usage) et notez :

  • erreurs factuelles
  • incohérences
  • répétitions
  • style (trop sec / trop bavard)

Le but est d’éviter un réglage “bon” sur un prompt mais mauvais sur la distribution réelle.

Pourquoi ça marche (et pourquoi ça échoue)

Ces paramètres contrôlent le compromis :

  • Exploration (diversité) vs exploitation (stabilité)
  • plus d’exploration = plus de chances de trouver une bonne idée… mais aussi plus de chances de dériver

Erreurs courantes (que je vois très souvent)

  • Monter trop la température ou top_p, puis s’étonner d’obtenir des réponses incohérentes.
  • Utiliser systématiquement beam search pour du texte créatif (brainstorming, rédaction) : on obtient du texte propre… mais stéréotypé.
  • Chercher à “corriger” des hallucinations uniquement par les paramètres : si le prompt est ambigu ou si la tâche exige des sources, il faut aussi travailler le prompting, la structure de réponse, voire du RAG.

Mise en pratique (script du livre)

Pour visualiser l’effet de la température sur la distribution softmax, le livre propose un script dédié :

Mini‑FAQ

“Top‑p ou Top‑k ?”

Si vous devez choisir un seul filtre : commencez par top‑p. Il s’adapte mieux à la forme de la distribution selon le prompt.

“Pourquoi mon modèle répète ?”

Souvent : température trop basse + décodage trop déterministe. Montez légèrement temperature ou ajoutez une contrainte anti‑répétition si votre stack le permet.

“Pourquoi j’ai des hallucinations alors que j’ai baissé la température ?”

Les paramètres ne remplacent pas :

  • une consigne claire (prompting)
  • une structure de réponse
  • des sources (RAG) si la tâche exige d’être ancrée sur des documents

Pour aller plus loin

Si vous voulez la version complète (prompting zero‑shot/few‑shot/CoT, beam vs sampling, KV cache, décodage spéculatif, scripts), le livre va plus loin :

Partager :

Articles similaires