🔎 DĂ©codage du pipeline LLM – Étape 1: Traitement des entrĂ©es et tokenisation

 🔎 DĂ©codage du pipeline LLM – Étape 1: Traitement des entrĂ©es et tokenisation

Auteur (s): Ecem Karaman

PubliĂ© Ă  l’origine sur Vers l’IA.

🔎 DĂ©codage du pipeline LLM – Étape 1: Traitement des entrĂ©es et tokenisation

đŸ”č Du texte brut Ă  l’entrĂ©e prĂȘt pour le modĂšle

Dans mon post prĂ©cĂ©dent, j’ai amĂ©nagĂ© le Pipeline LLM en 8 Ă©tapesdĂ©coder comment ModĂšles de grande langue (LLMS) traiter la langue dans les coulisses. Maintenant, faisons un zoom avant – en commençant par Étape 1: traitement des entrĂ©es.

Dans cet article, je vais explorer exactement comment le texte brut se transforme en entrĂ©es numĂ©riques structurĂ©es que les LLM peuvent comprendre, plonger en nettoyage de texte, mĂ©thodes de tokenisation, codage numĂ©rique et structuration de chat. Cette Ă©tape est souvent nĂ©gligĂ©e, mais elle est cruciale car la qualitĂ© du codage d’entrĂ©e affecte directement la sortie du modĂšle.

đŸ§© 1. Nettoyage et normalisation du texte (texte brut → texte prĂ©traitĂ©)

But: EntrĂ©e de l’utilisateur brut → Texte standardisĂ© et nettoyant pour une tokenisation prĂ©cise.

📌 Pourquoi le nettoyage et la normalisation de texte?

  • Texte d’entrĂ©e brut → Souvent dĂ©sordonnĂ© (fautes de frappe, boĂźtier, ponctuation, emojis) → La normalisation garantit cohĂ©rence.
  • Étape de prĂ©paration essentielle → rĂ©duit les erreurs de tokenisationassurer de meilleures performances en aval.
  • Compromis de normalisation: Les modĂšles GPT prĂ©servent le formatage et les nuances (plus de complexitĂ© de jetons); Bert nettoie agressivement le texte → les jetons plus simples, les nuances rĂ©duites, idĂ©ales pour les tĂąches structurĂ©es.

🔍 DĂ©tails techniques (en coulisses)

  • Normalisation Unicode (NFKC / NFC) → Standardalise les personnages (Ă© contre É).
  • Pliage de cas (LowerCasing) → RĂ©duit la taille du vocabulaire, standardalise la reprĂ©sentation.
  • Normalisation des espaces → Supprime les espaces inutiles, les onglets, les pauses de ligne.
  • Normalisation de ponctuation (utilisation cohĂ©rente de ponctuation).
  • Manipulation de la contraction («Ne pas» → «ne pas» ou maintenu intact en fonction des exigences du modĂšle). GPT prĂ©serve gĂ©nĂ©ralement les contractions, les modĂšles basĂ©s sur Bert peuvent se sĂ©parer.
  • Manipulation spĂ©ciale des personnages (emojis, accents, ponctuation).
import unicodedata
import re

def clean_text(text):
text = text.lower() # Lowercasing
text = unicodedata.normalize("NFKC", text) # Unicode normalization
text = re.sub(r"\s+", " ", text).strip() # Remove extra spaces
return text

raw_text = "Hello! How’s it going? 😊"
cleaned_text = clean_text(raw_text)
print(cleaned_text) # hello! how’s it going?

🔡 2. Tokenisation (texte prĂ©traitĂ© → jetons)

But: Texte brut → jetons (sous-mots, mots ou caractùres).

La tokenisation a un impact direct sur la qualitĂ© et l’efficacitĂ© du modĂšle.

📌 Pourquoi la tokenisation?

  • ModĂšles Impossible de lire directement le texte brut → Doit se convertir en unitĂ©s discrĂštes (jetons).
  • Jetons: UnitĂ© fondamentale que les rĂ©seaux de neurones traitent.

Exemple: «intĂ©ressant» → («intĂ©rĂȘt», «ing»)

🔍 Dans les coulisses

La tokenisation implique:

  • Texte de cartographie → jetons basĂ© sur un vocabulaire prĂ©dĂ©fini.
  • Espace blanc et normalisation de ponctuation (par exemple, espaces → marqueurs spĂ©ciaux comme Ä ).
  • Segmenter les mots inconnus en sous-mots connus.
  • Équilibrage de la taille du vocabulaire et de l’efficacitĂ© de calcul.
  • Peut ĂȘtre dĂ©terministe (rĂšgles fixes) ou probabilistes (segmentation adaptative)

đŸ”č Types de jetons et diffĂ©rences de base

✅ Tokenisation sous-mots (BPE, piĂšce d’Ă©loge, Unigram) est le plus frĂ©quent dans les LLM modernes en raison de l’efficacitĂ© et de la prĂ©cision Ă©quilibrĂ©es.

Types de tokeniseurs sous-mots:

  • Encodage de paires d’octets (BPE): Merge de maniĂšre itĂ©rative des paires de caractĂšres frĂ©quents (modĂšles GPT).
  • BPE au niveau des octets: BPE, mais opĂšre au niveau des octets, permettant une meilleure tokenisation du texte non anglaise (GPT-4, LLAMA-2/3)
  • PiĂšce de bougie: Optimise les divisions basĂ©es sur la probabilitĂ© dans le corpus d’entraĂźnement (Bert).
  • Unigramme: Supprime les jetons improbables de maniĂšre itĂ©rative, crĂ©ant un ensemble optimal (T5, lama).
  • Piece Ă  la phrase: Prend en charge directement le texte brut; Whitespace-Aware (Deepseek, ModĂšles multilingues).
DiffĂ©rents tokenisers sortent diffĂ©rentes divisions de jetons en fonction de l’algorithme, de la taille du vocabulaire et des rĂšgles de codage.
  • Gpt-4 et GPT-3.5 utiliser BPE – Bon Ă©quilibre entre la taille et la performance du vocabulaire.
  • Bert usages PiĂšce de bouche – Approche de sous-mots plus structurĂ©e; Manipulation lĂ©gĂšrement diffĂ©rente de mots inconnus.

📌 Le noyau Types de jetons sont publics, mais des modĂšles d’IA spĂ©cifiques peuvent en utiliser des versions ajustĂ©es fines (par exemple, le BPE est un algorithme qui dĂ©cide de diviser le texte, mais les modĂšles GPT utilisent une version personnalisĂ©e de BPE). Les personnalisations de jetons spĂ©cifiques au modĂšle optimisent les performances.

# GPT-2 (BPE) Example
from transformers import AutoTokenizer
tokenizer_gpt2 = AutoTokenizer.from_pretrained("gpt2")
tokens = tokenizer_gpt2.tokenize("Let's learn about LLMs!")
print(tokens)
# ('Let', "'s", 'Ä learn', 'Ä about', 'Ä LL', 'Ms', '!')
# Ä  prefix indicates whitespace preceding token
# OpenAI GPT-4 tokenizer example (via tiktoken library)
import tiktoken
encoding = tiktoken.encoding_for_model("gpt-4")
tokens = encoding.encode("Let's learn about LLMs!")
print(tokens) # Numeric IDs of tokens
print(encoding.decode(tokens)) # Decoded text

🔱 3. Encodage numĂ©rique (jetons → ID de jeton)

But: Convertissez les jetons en ID numériques uniques.

  • LLMS Ne traitez pas le texte directement – Ils fonctionnent sur des chiffres. → Les jetons sont toujours des unitĂ©s textuelles
  • Chaque jeton a un reprĂ©sentation entier unique dans le vocabulaire du modĂšle.
  • ID de jeton (entiers) Activer les opĂ©rations et les calculs de tenseur efficaces Ă  l’intĂ©rieur des couches neuronales.

🔍 Dans les coulisses

Les tables de recherche de vocabulaire mappent efficacement les jetons → les entiers uniques (ID de jeton).

  • La taille du vocabulaire dĂ©finit les contraintes du modĂšle (utilisation de la mĂ©moire et performances) (GPT-4: ~ Tokens 50K):

→Petit vocabulaire: Moins de paramĂštres, moins de mĂ©moire, mais plus de jetons.

→Grand vocabulaire: contexte plus riche, prĂ©cision plus Ă©levĂ©e, mais augmentation du coĂ»t de calcul.

  • Les tables de recherche sont des cartes de hachage: Permettre temps constant Conversions token-id (O (1) complexitĂ©).
  • Jetons spĂ©ciaux (par exemple, (PAD), , (CLS)) avoir ID rĂ©servĂ©s → Format d’entrĂ©e standardisĂ©.
from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("gpt2")

tokens = tokenizer.tokenize("LLMs decode text.")
print("Tokens:", tokens) # Tokens: ('LL', 'Ms', 'Ä decode', 'Ä text', '.')

token_ids = tokenizer.convert_tokens_to_ids(tokens)
print("Token IDs:", token_ids) # Token IDs: (28614, 12060, 35120, 1499, 13)

📜 4. EntrĂ©e de formatage pour LLMS (ID de jeton → Templates de chat)

Objectif: Structure Tokenisé Entrée pour les modÚles conversationnels (chat multi-tours)

  • Pourquoi: Les LLM comme GPT-4, Claude, Llama s’attendent Ă  une entrĂ©e structurĂ©e dans rĂŽles (SystĂšme, utilisateur, assistant).
  • En coulisses: Les modĂšles utilisent un formatage spĂ©cifique et des jetons spĂ©ciaux → maintenir le contexte de la conversation et les rĂŽles.

🔍 Dans les coulisses

Les modĂšles de chat fournissent:

  • Identification des rĂŽles: SĂ©pare clairement les instructions du systĂšme, les entrĂ©es des utilisateurs et les rĂ©ponses assistantes.
  • Gestion du contexte: Conserve l’historique des conversations multi-tours → une meilleure cohĂ©rence de rĂ©ponse.
  • EntrĂ©e structurĂ©e: Chaque message enveloppĂ© de jetons spĂ©ciaux ou JSON structurĂ©s → aide Ă  distinguer clairement les entrĂ©es.
  • MĂ©tadonnĂ©es (facultative): Peut inclure des horodatages, des Ă©tiquettes de haut-parleurs ou des comptages de jetons par haut-parleur (pour les modĂšles avancĂ©s).
Comparaison des modĂšles de chat: DiffĂ©rents styles influencent directement l’interprĂ©tation du contexte du modĂšle.

📐 5. Codage d’entrĂ©e du modĂšle (texte structurĂ© → tendeurs)

But: Convertir les ID de jeton numĂ©rique → les tableaux numĂ©riques structurĂ©s (tenseurs) pour GPU– CompatibilitĂ© du calcul neuronal basĂ©.

✅ Pourquoi les tenseurs?

  • Les rĂ©seaux de neurones s’attendent tableaux numĂ©riques (tenseurs) avec des dimensions uniformes (Taille du lot × longueur de sĂ©quence), pas simples listes d’entiers.
  • ID de jeton seul = entiers discrets; Tableaux de tenseur Ajouter une structure et un contexte (rembourrage, masques).
  • Un rembourrage, une troncature, un lot → affecter directement l’efficacitĂ© et les performances du modĂšle.

🔍 DĂ©tails techniques (en coulisses)

  • Rembourrage: Ajoute des jetons spĂ©ciaux (PAD) Ă  des sĂ©quences plus courtes → Formes de tenseur uniformes.
  • Troncature: Supprime les jetons excĂ©dentaires des longues entrĂ©es → assure la compatibilitĂ© avec les fenĂȘtres de contexte fixe (par exemple, GPT-2: 1024 jetons).
  • Masques d’attention: Les tenseurs binaires distinguant les jetons rĂ©els (1) vs jetons de rembourrage (0) → EmpĂȘche le modĂšle d’assister aux jetons de rembourrage pendant le calcul.
  • Toldage du tenseur: Combine plusieurs entrĂ©es dans des lots → un calcul parallĂšle optimisĂ© sur GPU.

🔍 Prise à emporter

✅ Le traitement des entrĂ©es est plus que la simple tokenisation – il comprend Nettoyage de texte, tokenisation, codage numĂ©rique, structuration de chat et formatage d’entrĂ©e du modĂšle final.

✅ Type de jetons → Complotions du modĂšle: BPE (GPT), piĂšce d’Ă©loge (Bert), Unigram (LLAMA) – Le choix affecte la taille du vocabulaire, la vitesse, la complexitĂ©.

✅ Les modĂšles basĂ©s sur le chat s’appuient sur la mise en forme structurĂ©e (ModĂšles de chat) → Affecte directement la cohĂ©rence, la pertinence, le flux de conversation.

✅ ID de jeton → Tenseurs Critique: Assure une compatibilitĂ© numĂ©rique pour un traitement neuronal efficace.

📖 Next Up: Étape 2 – Traitement du rĂ©seau neuronal

Maintenant que nous avons couvert comment Le texte brut devient une entrĂ©e de modĂšle structurĂ©ele prochain post DĂ©composer comment le rĂ©seau neuronal traite cette entrĂ©e pour gĂ©nĂ©rer un sens – couvrant Incorporer les couches, les mĂ©canismes d’attention, et plus encore.

Si vous avez apprécié cet article:

đŸ’» DĂ©couvrez mon Github pour les projets sur Ai /MlCybersecurity et Python
🔗 Connectez-vous avec moi Liendin Pour discuter de tout ce qui

💡 PensĂ©es? Questions? Discutons! 🚀

PubliĂ© via Vers l’IA



Source link

Related post