Température, top-p, top-k : les paramètres
Le top-p (nucleus sampling) ne garde que les tokens les plus probables dont la probabilité cumulée atteint p, par exemple 0,9. Le top-k garde un nombre fixe de candidats, par exemple 40. La température règle le hasard du tirage : proche de 0, le modèle choisit presque toujours le token le plus probable. Ollama démarre à température 0,8, top-k 40 et top-p 0,9.
Trois nombres reviennent dans tous les réglages d'un modèle local : la température, le top-p et le top-k. Ce guide explique ce que chacun retire ou déplace dans la liste des mots possibles, avec un exemple chiffré, les valeurs par défaut d'Ollama et de llama.cpp, les recommandations publiées par les éditeurs de modèles, et la façon de les appliquer.
#Top-p, top-k, température : la définition en un tableau
À chaque mot produit, un modèle calcule une probabilité pour chacun des tokens de son vocabulaire. Les paramètres d'échantillonnage décident ensuite lequel tirer. Top-p et top-k réduisent la liste des candidats ; la température modifie l'écart entre les probables et les improbables. Aucun n'ajoute de connaissance au modèle : ils règlent seulement la variété et le risque.
| Paramètre | Ce qu'il agit sur | Valeur basse | Valeur haute | Défaut Ollama |
|---|---|---|---|---|
| temperature | Écart entre tokens probables et improbables | Réponses plus déterministes | Plus de variété, plus d'erreurs | 0,8 |
| top_p | Taille de la liste, définie par la probabilité cumulée | Liste courte, sortie conservatrice | Liste large, plus de diversité | 0,9 |
| top_k | Nombre maximal de candidats | Peu de candidats | Beaucoup de candidats | 40 |
| min_p | Seuil relatif à la meilleure probabilité | Filtrage léger | Filtrage fort | 0,0 (désactivé) |
| repeat_penalty | Pénalité sur les tokens récemment utilisés | Plus de répétitions | Moins de répétitions, risque d'étrangeté | 1,0 (désactivé) |
Ces défauts viennent de la référence du Modelfile d'Ollama. Beaucoup de modèles fournissent leurs propres valeurs dans leur fichier de configuration, qui remplacent alors ces défauts : d'où l'intérêt de lire la fiche du modèle, comme on le verra plus bas.
#Comment un LLM choisit le prochain mot
Ton ChatGPT privé et gratuit sur ta machine en 1 heure — LM Studio, Ollama, Open WebUI, tes documents, sans cloud.
- Espace en ligne à vie
- PDF + fichiers
- Mises à jour à vie
Le modèle produit, pour chaque position, une distribution de probabilités sur tout son vocabulaire. Choisir toujours le token le plus probable, dit décodage glouton, donne des textes plats, répétitifs et parfois bloqués dans une boucle. On introduit donc un tirage aléatoire, encadré par les paramètres d'échantillonnage. Une graine fixe (seed) rend ce tirage reproductible : la documentation Ollama précise qu'une graine donnée produit le même texte pour la même invite.
L'ordre dans lequel les filtres s'appliquent compte. Dans llama.cpp, le moteur d'inférence GGUF utilisé notamment par LM Studio, l'ordre par défaut est : pénalités, DRY, top-n sigma, top-k, typical-p, top-p, min-p, XTC, puis température en dernier. Autrement dit, top-k et top-p opèrent sur les probabilités d'origine, et la température ne sert qu'à tirer dans ce qui reste. Beaucoup de tutoriels annoncent l'inverse ; l'ordre réel peut différer d'un moteur à l'autre, et se règle dans llama.cpp par le paramètre --samplers.
#Un exemple chiffré : ce que retient chaque réglage
Prenons sept candidats pour le mot suivant, avec leurs probabilités : 0,45 ; 0,25 ; 0,12 ; 0,08 ; 0,05 ; 0,03 ; 0,02. Ce tableau est un calcul illustratif, pas une mesure sur un modèle réel.
| Filtre | Règle | Candidats conservés | Probabilité couverte |
|---|---|---|---|
| Aucun | Tout le vocabulaire | 7 | 100 % |
| top_k = 3 | Les 3 meilleurs | 3 | 82 % |
| top_p = 0,9 | On s'arrête quand le cumul atteint 0,90 | 4 (0,45 + 0,25 + 0,12 + 0,08) | 90 % |
| top_p = 0,7 | Cumul de 0,70 | 2 | 70 % |
| min_p = 0,1 | Garder les tokens à plus de 10 % du meilleur, soit un seuil de 0,045 | 5 | 95 % |
Le point à retenir : top-k garde toujours le même nombre de candidats, quelle que soit la situation ; top-p et min-p s'adaptent. Quand le modèle est très sûr de lui (un token à 0,95), top-p ne garde peut-être qu'un ou deux candidats ; quand il hésite entre dix mots, il en garde davantage. C'est pourquoi top-p est souvent préféré à top-k.
#1. Température : le bouton du hasard
Avant le tirage, la température divise les logits du modèle. À température basse, l'écart entre les tokens s'accroît : le plus probable écrase les autres. À température haute, l'écart se réduit. À 0, le modèle choisit toujours le token le plus probable et produit des sorties identiques à chaque essai, ce que la documentation de llama.cpp confirme.
| Candidat | Probabilité d'origine | T = 0,5 | T = 1,5 |
|---|---|---|---|
| 1er | 45 % | 70 % | 34 % |
| 2e | 25 % | 22 % | 23 % |
| 3e | 12 % | 5 % | 14 % |
| 4e | 8 % | 2 % | 11 % |
| 5e à 7e | 10 % au total | 1,3 % | 17,8 % |
- 0 à 0,3
- Extraction, classification, résumé fidèle : vous voulez la même réponse à chaque essai.
- 0,4 à 0,7
- Rédaction technique, traduction, support : de la variété sans dérive.
- 0,8
- Valeur par défaut d'Ollama et de llama.cpp : conversation générale.
- 1 et plus
- Créativité, brainstorming ; plus de risques d'erreurs et de digressions.
#2. Top-p : le filtre adaptatif
Top-p, ou nucleus sampling, retient les tokens les plus probables jusqu'à ce que leur probabilité cumulée atteigne p. Avec 0,9, on jette la queue de 10 % de probabilité ; avec 1,0, on ne filtre rien. La documentation d'Ollama rappelle qu'une valeur plus haute, par exemple 0,95, donne un texte plus varié, et une plus basse, par exemple 0,5, un texte plus ciblé et conservateur.
- 0,5 à 0,7
- Très conservateur : réponses sûres, parfois monotones.
- 0,9
- Défaut d'Ollama : coupe la queue sans étouffer la variété.
- 0,95
- Valeur par défaut de llama-server, et valeur recommandée par plusieurs fiches de modèles.
- 1,0
- Filtre désactivé : la température reste seule à agir.
#3. Top-k : le plafond fixe
Top-k ne conserve que les k tokens les plus probables. La documentation d'Ollama décrit ce paramètre comme un moyen de réduire la probabilité de produire du non-sens : plus haut (100), réponses plus diverses ; plus bas (10), plus conservatrices. Son défaut est 40, comme dans llama.cpp, où 0 le désactive.
| Filtre | Avantage | Limite | Quand l'utiliser |
|---|---|---|---|
| top_k | Simple, borne le calcul | Ignore la forme de la distribution : trop de candidats quand le modèle est sûr, pas assez quand il hésite | Garde-fou large (20 à 100) |
| top_p | S'adapte à la confiance du modèle | Peut laisser passer une longue queue si la distribution est plate | Réglage principal de la diversité |
| min_p | Seuil relatif à la meilleure probabilité, stable même à température élevée | Moins connu, non actif par défaut dans Ollama | Alternative à top_p, souvent avec température plus haute |
Pour la requête « top p vs top k » : utilisez top-p comme réglage principal, gardez top-k comme garde-fou, et n'ajustez pas les deux dans le même essai, sinon vous ne saurez pas lequel a produit la différence.
#Valeurs par défaut et recommandations des éditeurs
Les défauts d'un moteur sont un compromis générique. Les éditeurs de modèles publient souvent des valeurs adaptées à leurs modèles, et elles peuvent s'écarter des défauts. Voici ce que la fiche de Qwen3.5 recommande pour ses modèles, à comparer aux défauts d'Ollama (température 0,8, top-p 0,9, top-k 40).
| Mode | Température | top_p | top_k | presence_penalty |
|---|---|---|---|---|
| Raisonnement, tâches générales | 1,0 | 0,95 | 20 | 1,5 |
| Raisonnement, code précis | 0,6 | 0,95 | 20 | 0,0 |
| Sans raisonnement, tâches générales | 0,7 | 0,8 | 20 | 1,5 |
Ces valeurs valent pour cette famille de modèles, pas pour tous. Les fiches d'autres éditeurs donnent d'autres valeurs : cherchez la section sur les paramètres d'échantillonnage recommandés dans la fiche Hugging Face ou sur la page du modèle dans la bibliothèque Ollama. La fiche de Qwen précise aussi que la prise en charge de ces paramètres varie selon le moteur d'inférence.
#Pénalités : répétition, fréquence, présence
Les modèles locaux, surtout petits ou fortement quantifiés, bouclent parfois sur les mêmes phrases. Les pénalités sont le remède, mais leurs défauts sont souvent mal connus. Dans Ollama, repeat_penalty vaut 1,0 par défaut, donc désactivée ; la documentation donne 1,5 comme exemple d'une valeur qui pénalise plus fortement. La valeur 1,1 souvent citée est un choix à faire, pas un défaut.
- repeat_penalty
- Pénalise les tokens vus récemment ; repeat_last_n (64 par défaut) fixe la fenêtre regardée.
- frequency_penalty
- Pénalité proportionnelle au nombre d'occurrences, pour les longues générations.
- presence_penalty
- Pénalité dès qu'un token est apparu, pour encourager un vocabulaire plus varié ; Qwen recommande 1,5 dans plusieurs de ses modes, avec le risque de mélange de langues si la valeur est trop haute.
#Appliquer ces réglages dans Ollama
Il existe deux méthodes : un Modelfile, qui fixe des valeurs pour un modèle nommé, ou le champ options d'une requête API, qui accepte les mêmes paramètres que le Modelfile. Le Modelfile est adapté à un usage quotidien, l'API à un programme.
Pour aller plus loin sur les Modelfile (system prompt, contexte, gabarit), consultez le guide de personnalisation. Pour LM Studio et Jan, les mêmes paramètres se règlent dans le panneau de configuration du modèle.
#Modèles à raisonnement : ne pas tout régler par la température
Les modèles à raisonnement produisent d'abord une trace de réflexion avant leur réponse. Sur Ollama, ces modèles exposent un champ de réflexion séparé, et les commandes disponibles varient selon le modèle : la documentation invite à interroger l'API show pour connaître les valeurs acceptées et la valeur par défaut. Pour gpt-oss, par exemple, les niveaux sont low, medium et high, avec medium par défaut.
Pour réduire les jetés inutiles sur une question simple, agissez d'abord sur ce niveau de réflexion, quand il existe, plutôt que sur la température. La température, elle, doit suivre la fiche du modèle : un raisonnement trop froid peut se figer, un raisonnement trop chaud peut se disperser.
#Presets de départ par usage
| Usage | Température | top_p | Autres réglages |
|---|---|---|---|
| Extraction, classification, JSON | 0 à 0,2 | 0,9 | Format strict demandé dans le prompt |
| Résumé fidèle | 0,2 à 0,3 | 0,9 | repeat_penalty légèrement au-dessus de 1 |
| Conversation générale | 0,7 à 0,8 | 0,9 | Défauts du moteur |
| Rédaction, idées | 0,8 à 1,0 | 0,95 | presence_penalty modérée |
| Fiction, créativité | 1,0 | 0,95 | Contrôler les digressions |
Ces presets sont des points de départ, pas des mesures. Changez un paramètre à la fois, relancez trois fois la même invite et comparez : si trois essais donnent la même réponse alors que vous attendez de la variété, la température est trop basse ou la graine est fixée.
#Symptômes et réglages à essayer
- Le modèle répète la même phrase
- Activez repeat_penalty vers 1,1 ou presence_penalty, ou raccourcissez la génération avec num_predict.
- Réponses plates et génériques
- Montez la température d'un pas (0,7 vers 0,9) ou relâchez top_p.
- Le modèle invente des faits
- Baissez la température, mais sachez que ce n'est pas suffisant : voir le guide sur les hallucinations.
- JSON cassé
- Température basse et format demandé explicitement ; utilisez le mode de sortie structurée d'Ollama quand il existe.
- Mélange de langues ou mots étranges
- Baissez presence_penalty ou repeat_penalty, ou montez légèrement la quantification du modèle.
C'est quoi le top-p dans un LLM ?+
Quelle est la différence entre top-p et top-k ?+
Faut-il régler la température et le top-p en même temps ?+
Quelle température pour du code ?+
Quelles sont les valeurs par défaut dans Ollama ?+
Qu'est-ce que min-p et faut-il l'utiliser ?+
- Ollama Modelfile : personnaliser un modèle
- Les bases du prompting
- Maîtriser les system prompts
- Comprendre la fenêtre de contexte
- Limiter les hallucinations d'un LLM local
- Source : référence du Modelfile Ollama
- Source : fiche Qwen3.5-9B
- Source : llama.cpp, options de llama-server
- Source : Ollama, modèles à réflexion
Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.