đ 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 redef 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).
- 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 AutoTokenizertokenizer = 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).
đ 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
