Comment optimiser ses prompts pour réduire le coût des LLMs

Comment optimiser ses prompts pour réduire le coût des LLMs En optimisant un prompt, il est possible de réduire drastiquement le nombre de tokens utilisés par un LLM et par conséquent son coût.

Maîtriser l'art de prompter avec sobriété sera sans aucun doute une compétence clé en 2024. Si l'utilisation de prompts longs et peu efficaces avec ChatGPT n'a aucune conséquence directe sur le prix de l'abonnement, le recours à des systèmes de requêtes par API pour les grands modèles de langage est rapidement onéreux, notamment en production. Pour facturer l'utilisation des modèles, les éditeurs plébiscitent en majorité le coût au token (sauf Google qui facture son modèle Gemini au caractère). En règle générale, le coût au token est plus élevé en sortie (résultat de la production du LLM) qu'en entrée (prompt et ressources associées).

Pour exemple, en janvier 2023, GPT-4 (8K) d'OpenAI affiche le coût au token le plus important des LLMs propriétaires avec un tarif de 30 dollars le million de tokens en entrée et de 60 dollars le million de tokens en sortie. Pour autant, la tarification au token présente un biais majeur : le processus varie d'un modèle à l'autre. En conséquence, un prompt comportera un nombre de tokens différents selon le LLM utilisé.

Comparatif des tarifications au token de chaque LLM. © Philipp Schmid / Hugging Face

A l'origine était la tokenisation

Pour comprendre cette différence, il est nécessaire de comprendre le processus de tokenisation. Lors de la phase d'apprentissage des grands modèles de langage comme ChatGPT, la tokenisation a pour but de découper le texte du corpus d'entraînement en unités, appelées tokens. "GPT 3.5 et 4 utilisent plus de 100 000 tokens uniques pour représenter le vocabulaire. Pour générer cet ensemble de tokens de manière optimale, ChatGPT se base sur les caractères et mots les plus fréquents dans le corpus", explique Nicolas Cavallo, head of generative AI chez Octo Technology. Concrètement, le modèle regarde dans un premier temps les suites de deux caractères les plus récurrentes. "Par exemple, s'il détecte que 'th' est très fréquent, il va ajouter le token 'th'. Puis de façon itérative, il fusionne les tokens les plus probables, comme 'th' et 'e' pour générer le token 'the'", illustre l'expert.

Le processus se répète jusqu'à convergence pour trouver la meilleure façon de découper le corpus en tokens permettant une représentation optimale du texte. L'objectif final étant de maximiser les performances du modèle pour un nombre donné de tokens. Le résultat est une tokenisation sur-mesure basée sur les statistiques du corpus, qui peut varier selon les langues en fonction des fréquences d'apparition des suites de caractères. Bien que la plupart des grands modèles de langage utilisent une approche similaire de tokenisation basée sur les caractères (Byte-Pair Encoding tokenization), il peut exister certaines variations. En effet, chaque modèle entraîne sa propre tokenisation sur son propre corpus d'apprentissage. Selon la taille et la composition du corpus, les statistiques de séquences de caractères fréquentes peuvent donc changer.

La langue, une variable de coût majeure

Chaque LLM ayant son propre découpage de texte, le nombre de tokens sera donc différent. Pour calculer le nombre de tokens plusieurs solutions s'offrent à vous : calculer en utilisant les outils mis à disposition par les éditeurs quand ils existent (Tokenizer chez OpenAI) ou utiliser l'approche itérative en utilisant les retours de paramètres lors des requêtes dans les APIs. Plus qu'une différence entre deux modèles, il existe également un véritable gap entre les langues utilisées avec les LLMs. La surreprésentation de l'anglais dans la majorité des corpus d'entraînement amène à une tokenisation mieux optimisée pour cette langue. "Outre l'encodage utilisé (UTF-8), un texte en français sera tokenisé avec environ 32% de tokens en plus (à caractère égal, ndlr) comparé au même texte en anglais avec le modèle GPT-3.5", assure Nicolas Cavallo. Pour réduire ses coûts de prompting, le conseil est donc de prompter en anglais, même pour générer un texte français. Sur un système en production, la différence de coût peut être importante.

Un autre facteur influençant la tokenisation, bien que plus secondaire mais tout aussi pertinent, réside dans le choix du vocabulaire utilisé. La tokenisation dépendant directement de la régularité des expressions rencontrées dans le dataset par le modèle lors de son apprentissage, une expression plus courante qu'une autre nécessitera en toute logique moins de tokens. "Les résultats montrent que si 'Bonjour' est écrit avec un 'b' majuscule, il ne nécessite qu'un seul token avec GPT-3. En revanche, si 'bonjour' est écrit entièrement en minuscules, il est encodé avec 2 tokens distincts ("bon" et "jour")", démontre Nicolas Cavallo. L'utilisation d'un champ lexical très simple dans le prompt peut donc permettre de réduire encore un peu plus le nombre de tokens utilisés et par conséquent le coût global.

"Bonjour", nécessite un token de moins que 'bonjour". © JDN / OpenAI

Les modèles open source (aussi) concernés

En utilisant un modèle open source en inférence on premise ou dans le cloud, la problématique n'est pas la même. Le coût de prompting ne se mesure pas directement au token mais dépend des ressources nécessaires pour faire tourner le modèle. Pour autant, plus le prompt (ou la sortie) exige de tokens, plus le temps de génération à l'exécution sera important. Par conséquent, les ressources seront utilisées plus longtemps, impactant le coût global de fonctionnement.

A l'heure actuelle, hormis l'emploi de l'anglais et d'un langage plus simple, il existe peu de méthodes réellement efficaces pour diminuer le nombre de tokens. Pour autant, l'état de la science dans le domaine évolue très rapidement et de nouvelles solutions pourraient bientôt voir le jour. Très récemment, Microsoft a par exemple présenté LLMLingua,  un modèle capable d'identifier et de supprimer les tokens non-essentiels dans les prompts. Les chercheurs promettent une compression jusqu'à 20 fois supérieure pour une perte de performance minimale. Des résultats prometteurs qu'il convient de tester et d'adapter à ses cas d'usage.