====== Tokens, modèles de langage et taille des données ====== {{ :ia:e656a6e4-d292-4f8a-bfd7-95407d8bcce5.jpg?400 |}} Les **tokens** sont l'unité de base utilisée par les modèles de langage pour diviser et analyser le texte. Leur compréhension est essentielle pour optimiser l'utilisation des LLM, estimer les coûts et adapter les prompts. Cet article explique leur fonctionnement, leur lien avec la taille des données, et leur impact sur les performances des modèles comme Llama, GPT-4 ou Mistral. **⭐ Difficulté : ★★☆☆☆ (2/5)** >✅ **Accessible** : Exemples concrets, comparaisons visuelles. >⚠️ **Technique** : Notions de tokenisation et d'encodage à assimiler. >🔍 **Vocabulaire** : Token, vocabulaire, contexte, limite de tokens. **📚 Prérequis recommandés** >💻 **Notions de base en informatique** (octets, UTF-8). >📊 **Introduction au NLP** (traitement automatique du langage naturel). >🤖 **Familiarité avec les LLM** (ex : GPT, Llama). >🇬🇧 **Anglais technique** basique (certains termes ne sont pas traduits). ---- ===== 1. Qu’est-ce qu’un token ? ====== ==== 1.1. Définition et exemples ==== * Un **token** est l’unité de base de traitement du texte par un LLM. * Il ne correspond pas toujours à un mot entier, mais peut être : * Une partie de mot (*"aim"*, *"er"*). * Un caractère (*"!"*, *"?"*). * Un espace ou une ponctuation. * **Exemple** pour la phrase *« J’aime Yaoundé ! »* : * **Llama 3.2** : `["▁J'", "’aime", "▁Yaoundé", "▁!"]` (4 tokens). * **GPT-4** : `["J'", "’aime", " Yaoundé", "!"]` (4 tokens, encodage différent). ==== 1.2. Pourquoi la tokenisation varie selon les modèles ? ==== Chaque modèle utilise un **vocabulaire** (liste de tokens connus) et des règles de découpage propres. * Exemple : Les apostrophes (J’aime) sont souvent divisées en : J, ’aime. **Conséquence** : Le même texte peut générer un nombre différent de tokens selon le modèle. ===== 2. Lien entre tokens, mots, phrases et taille ====== ==== 2.1. Token ↔ Mot/Phrase ==== * **1 mot simple** = 1 à 3 tokens (ex : *"chat"* = 1 token, *"chats"* = 2 tokens). * **1 phrase courte** = 10 à 20 tokens. * **1 paragraphe** = 100 à 500 tokens. * **Comparatif** pour *« Les modèles de langage transforment le texte en tokens. »* : ^ Modèle ^ Nombre de tokens ^ Détails ^ | Llama 3.2 | 12 | Vocabulaire optimisé pour anglais/français. | | Mistral | 11 | Gestion efficace des apostrophes. | | GPT-4 | 13 | Tokenisation fine des caractères spéciaux. | | Gemini | 10 | Compact pour les langues romanes. | ==== 2.2. Token ↔ Taille en Mo ==== * **1 token ≈ 4 octets** (en UTF-8). * **1 Mo = 1 000 000 octets ≈ 250 000 tokens**. * **Exemples** : ^ Élément ^ Tokens (exemple) ^ Taille (octets) ^ Taille (Mo) ^ | Mot simple | 1–3 | 4–12 | ~0,000004–0,000012 | | Phrase courte | 10–20 | 40–80 | ~0,00004–0,00008 | | Paragraphe | 100–500 | 400–2 000 | ~0,0004–0,002 | | 1 Mo | 250 000 | 1 000 000 | 1 | ===== 3. Impact sur les modèles de langage ====== ==== 3.1. Limites de contexte ==== * Chaque modèle a une **limite maximale de tokens** par requête : ^ Modèle ^ Limite (tokens) ^ Équivalent en Mo ^ | Llama 3.2 | 8 000–128 000 | 0,03–0,5 Mo | | GPT-4 | 128 000 | 0,5 Mo | | Mistral | 32 000 | 0,13 Mo | | Gemini | 32 000–128 000 | 0,13–0,5 Mo | * **Conséquence** : Un texte dépassant ces limites doit être **tronçonné** ou **résumé**. ==== 3.2. Coût et performance ==== * **Facturation** : Les API facturent au token (ex : 0,001 $/1 000 tokens). * **1 Mo de texte (250 000 tokens) ≈ 0,25 $** sur certaines plateformes. * **Vitesse** : Plus le nombre de tokens est élevé, plus le traitement est lent. ^ Modèle ^ Coût/1M tokens ^ Temps de traitement ^ | Llama 3.2 | ~0,10 $ | Rapide | | GPT-4 | ~0,30 $ | Modéré | | Mistral | ~0,15 $ | Très rapide | | Gemini | ~0,20 $ | Variable | ===== 4. Outils pour visualiser la tokenisation ====== ==== 4.1. Démonstrations en ligne ==== * [[https://platform.openai.com/tokenizer|Tokenizer Openai]] : Visualisez la tokenisation pour GPT. * [[https://eu.jotform.com/fr/ai/token-calculator/|Calculateur de tokens]] : Outil interactif pour Gemini et OpenAI. ==== 4.2. Code Python ==== Exemple de code Python afin d'estimer la tokenisation avec le LLM Mistral : from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("mistralai/Mistral-7B-v0.1") tokens = tokenizer("Ton texte ici") print(f"Nombre de tokens : {len(tokens['input_ids'])}") ===== 5. Bonnes pratiques ====== - **Optimiser les prompts** : Éviter les répétitions et les phrases trop longues. - **Compresser les données** : Supprimer les espaces ou mots inutiles pour réduire le nombre de tokens. - **Choisir le bon modèle** : * **Llama 3.2** : Équilibre performance/coût. * **GPT-4** : Pour des contextes très longs (mais plus cher). * **Mistral** : Efficace pour le français et les tâches courtes. ===== 6. Exemple concret : tokenisation d’un paragraphe ====== **Texte** : « Les tokens sont essentiels pour comprendre comment les modèles de langage comme Llama 3.2, Mistral ou GPT-4 traitent le texte. Chaque modèle a sa propre méthode de tokenisation, ce qui influence le nombre de tokens générés et donc le coût de traitement. » ^ Modèle ^ Nombre de tokens ^ Coût estimé (pour 1 000 tokens) ^ | Llama 3.2 | 42 | 0,0042 $ | | Mistral | 39 | 0,00585 $ | | GPT-4 | 45 | 0,0135 $ | ---- ===== 🔑 Points clés à retenir ===== - **1 token ≠ 1 mot** : Tout dépend du modèle et de la langue. - **1 Mo ≈ 250 000 tokens** : Utile pour estimer les coûts et les limites. - **Choix du modèle** : À adapter selon la taille du texte, le budget et la langue. La tokenisation est le pont invisible entre le langage humain et la compréhension machine. Bien la maîtriser, c’est optimiser chaque interaction avec un LLM. ---- ===== 📚 Sources ====== * [[https://arxiv.org/abs/1706.03762|Attention Is All You Need – Vaswani et al. (2017)]] * [[https://huggingface.co/docs/transformers/main_classes/tokenizer|Hugging Face – Tokenizers]] * [[https://platform.openai.com/docs/guides/tokenization|OpenAI – Tokenization Guide]] * [[https://ai.meta.com/blog/llama-3/|Llama 3.2 Technical Report – Meta AI (2024)]] * [[https://mistral.ai/news/mistral-7b/|Mistral 7B Announcement – Mistral AI (2023)]] ----