Top-p sampling (FR)

From Systems analysis Wiki
Jump to navigation Jump to search

L'échantillonnage Top-p, également connu sous le nom d' échantillonnage par noyau (en anglais Nucleus Sampling), est une méthode de décodage stochastique utilisée dans les grands modèles de langage (LLM) pour la génération de texte. La méthode a été proposée en 2019 par Ari Holtzman et ses co-auteurs comme une alternative améliorée à l'échantillonnage Top-k fixe. Son principe consiste à sélectionner dynamiquement un ensemble de candidats à chaque étape de la génération en fonction d'un seuil de probabilité cumulative p.[1]

Concept

L'idée principale du Top-p est de sélectionner à chaque étape le plus petit ensemble de jetons les plus probables dont la probabilité totale est supérieure ou égale à un seuil donné p (le noyau, en anglais nucleus). Mathématiquement, pour une distribution conditionnelle P(xx1:i1) sur un vocabulaire V, le noyau V(p) peut être défini comme suit :

xV(p)P(xx1:i1)petSV(p): xSP(xx1:i1)<p.

Une formulation équivalente consiste à trier les jetons par ordre décroissant de P(xx1:i1) et à prendre le plus court préfixe dont la masse cumulative est ≥ p.[1]

Une fois le noyau défini, les probabilités des jetons en dehors de V(p) sont mises à zéro, et celles à l'intérieur du noyau sont normalisées (leur somme devient égale à 1). Le jeton suivant est ensuite échantillonné à partir de cette distribution tronquée.

Adaptation dynamique

  • Pour une distribution « pointue » (le modèle est confiant), le noyau est petit : quelques jetons suffisent pour atteindre une masse ≥ p, ce qui augmente la cohérence.
  • Pour une distribution « plate » (de nombreuses suites sont plausibles), le noyau est grand : le choix est élargi, ce qui augmente la diversité.[1]

Comparaison avec d'autres méthodes de décodage

Top-p vs. Top-k

  • Le Top-k sélectionne toujours parmi un nombre fixe k de jetons les plus probables. Dans les distributions « pointues », cela peut ajouter des options superflues et peu probables « pour faire le nombre », tandis que dans les distributions « plates », cela peut au contraire écarter des suites raisonnables qui ne figurent pas dans le top k.
  • Le Top-p ajuste la taille de l'ensemble de candidats en fonction des données de l'étape, ce qui rend son comportement plus flexible et plus stable sur différents types de distributions.[1]

Top-p vs. Température

  • La température (temperature) remodèle la forme entière de la distribution (la rendant plus pointue ou plus lisse), mais n'écarte pas les jetons : même les options peu probables conservent une chance non nulle.[2]
  • Le Top-p introduit une troncation stricte de la queue de la distribution — les jetons à faible probabilité sont complètement exclus de l'échantillonnage, ce qui aide à prévenir les suites manifestement inappropriées.[1]

Conseil pratique des fournisseurs : pour ajuster le style ou le caractère aléatoire, on modifie généralement soit la `temperature`, soit le `top_p`, mais pas les deux simultanément, afin d'éviter un double impact sur la distribution et de simplifier le diagnostic.[3]

Application pratique et recommandations

Le Top-p est largement utilisé dans les LLM modernes en raison de sa combinaison de flexibilité et de contrôlabilité.

  • Plage de valeurs typique. En pratique, on utilise souvent p0.900.95 (voir les guides et exemples dans Transformers ; dans de nombreux SDK, la valeur 0.95 est utilisée comme valeur par défaut ou recommandée dans les exemples).[2][4]
    • Des valeurs proches de 1.0 (par exemple, 0.98–0.99) augmentent la diversité : le noyau inclut plus de jetons.
    • Des valeurs plus faibles (par exemple, 0.80–0.90) augmentent le déterminisme et la « retenue » de la sortie.
    • À p=1, la troncation disparaît : la sélection se fait sur l'ensemble du vocabulaire (en tenant compte de la température).[2]
  • Compatibilité avec les bibliothèques et les API.
    • Dans Transformers, le TopPLogitsWarper est implémenté, qui utilise également un seuil `min_tokens_to_keep` (généralement ≥1) pour empêcher le noyau de devenir vide avec des valeurs de p très faibles et des distributions « pointues ».[5]
    • Dans plusieurs API, le paramètre `top_p` est disponible, alors que `top_k` peut être absent ; la prise en charge des paramètres et leur sémantique dépendent du modèle/fournisseur spécifique (par exemple, certains modèles de raisonnement peuvent limiter les réglages de stochasticité). Consultez les documentations officielles d'OpenAI/Azure/Google.[6][3][4]
  • Textes longs et répétitivité. Une série d'expériences a montré que l'échantillonnage par noyau réduit la tendance à la dégénérescence (répétitions, phrases clichées) par rapport aux méthodes greedy/beam et au Top-k fixe, en particulier sur les longues séquences.[1][7]

Voir aussi

Bibliographie

  • Holtzman, A. et al. (2020). The Curious Case of Neural Text Degeneration. arXiv:1904.09751.
  • Fan, A. et al. (2018). Hierarchical Neural Story Generation. arXiv:1805.04833.
  • Meister, C. et al. (2023). Locally Typical Sampling. arXiv:2202.00666.
  • Su, Y.; Collier, N. (2022). Contrastive Search Is What You Need for Neural Text Generation. arXiv:2210.14140.
  • O’Brien, S.; Lewis, M. (2023). Contrastive Decoding Improves Reasoning in Large Language Models. arXiv:2309.09117.
  • Yu, S. et al. (2023). Conformal Nucleus Sampling. ACL Findings 2023.
  • Tan, Q. et al. (2024). A Thorough Examination of Decoding Methods in the Era of Large Language Models. arXiv:2402.06925.
  • Finlayson, M. et al. (2024). Basis‑Aware Truncation Sampling for Neural Text Generation. arXiv:2412.14352.
  • Chen, S. J. et al. (2025). Decoding Game: On Minimax Optimality of Heuristic Text Generation Methods. arXiv:2410.03968.
  • Sen, J. et al. (2025). Advancing Decoding Strategies: Enhancements in Locally Typical Sampling for LLMs. arXiv:2506.05387.

Références

  1. 1.0 1.1 1.2 1.3 1.4 1.5 Holtzman, A., Buys, J., Du, L., Forbes, M., & Choi, Y. (2019). The Curious Case of Neural Text Degeneration. arXiv:1904.09751. [1]
  2. 2.0 2.1 2.2 Hugging Face Transformers. Generation strategies (top‑k, top‑p, temperature). [2]
  3. 3.0 3.1 Microsoft Learn (Azure OpenAI). Text/Chat Completions — parameters. Recommandation de « modifier la température ou top_p, mais pas les deux simultanément ». [3]
  4. 4.0 4.1 Google AI / Vertex AI. Generation parameters (topP/topK) for text/Gemini. Exemples avec topP≈0.95. [4] [5]
  5. Transformers API. TopPLogitsWarper (paramètres et comportement, y compris `min_tokens_to_keep`). [6]
  6. OpenAI API Reference. top_p. [7]
  7. Tan, Q. et al. (2024). A Thorough Examination of Decoding Methods in the Era of Large Language Models. arXiv:2402.06925. [8]