📖 Documentation du Tokenizer Loo : Clemylia/Loo-tokenizer
Ce document guide les utilisateurs sur la manière de charger et d'utiliser le tokenizer spécialement conçu pour le modèle de génération mathématique Loo.
💡 Objectif du Tokenizer
Le tokenizer Loo est un tokenizer de type Byte-Pair Encoding (BPE) spécialement entraîné sur des requêtes en langage naturel (français) et des séquences de sortie contenant des chiffres, des opérations mathématiques (+, -, *, /) et des séparateurs (virgules, points).
Son but principal est de mapper efficacement les entrées de l'utilisateur (colonne prompt) et les sorties générées par Loo (colonne send) en séquences numériques (IDs de tokens) que le modèle peut traiter.
🛠️ Chargement du Tokenizer
Le tokenizer est publié sur le Hugging Face Hub et peut être chargé facilement en utilisant la classe AutoTokenizer.
Installation
Assurez-vous d'avoir la librairie transformers installée :
pip install transformers
Chargement en Python
from transformers import AutoTokenizer
# Le nom de la ressource publiée sur Hugging Face
TOKENIZER_ID = "Clemylia/Loo-tokenizer"
print(f"Chargement du tokenizer {TOKENIZER_ID}...")
tokenizer_loo = AutoTokenizer.from_pretrained(TOKENIZER_ID)
print("Chargement réussi ! ✅")
🏷️ Tokens Spéciaux
Le tokenizer Loo utilise un ensemble minimal de tokens spéciaux, essentiels pour la structure du modèle génératif de type GPT-2.
| Token | Description |
|---|---|
| `< | endoftext |
[PAD] |
Padding Token : Utilisé pour rendre toutes les séquences de la même longueur dans un batch. |
Note importante : Le token
[PAD]a été ajouté manuellement lors de la création du tokenizer pour garantir le bon fonctionnement du modèle génératif (Causal Language Modeling).
🚀 Utilisation et Flux de Travail
Le tokenizer Loo est conçu pour fonctionner avec un flux de travail spécifique : la concaténation du prompt et de la réponse.
1. Préparation pour l'Entraînement / Génération
Pour que Loo réponde correctement, l'entrée doit toujours suivre le format d'entraînement :
Exemple de tokenization d'un prompt :
prompt_test = "prompt: Donne moi une addition simple send:"
tokens = tokenizer_loo(prompt_test, return_tensors="pt")
print("Tokens IDs:", tokens['input_ids'][0].tolist())
print("Tokens décodés:", tokenizer_loo.convert_ids_to_tokens(tokens['input_ids'][0].tolist()))
2. Décodage (Post-Traitement)
Le tokenizer Loo utilise le ByteLevel post-processor, ce qui signifie que le décodage gère automatiquement les espaces et les caractères accentués français (évitant les Ġ ou les problèmes d'encodage comme é).
Lors du décodage d'une sortie brute du modèle (output):
- Utilisez
skip_special_tokens=Truepour retirer le token<|endoftext|>et[PAD]. - Effectuez une étape de nettoyage pour n'extraire que le contenu après le séparateur
send:.
Exemple de post-traitement de la réponse du modèle :
# Supposons que ceci est la sortie brute (décodée sans nettoyage)
generated_raw = "prompt: Donne moi une addition simple send: 5 + 3<|endoftext|>"
# Décodage propre (retire les tokens spéciaux)
cleaned_text = tokenizer_loo.decode(output_ids, skip_special_tokens=True)
# Extraction de la réponse
response_start = cleaned_text.find("send:") + len("send:")
final_answer = cleaned_text[response_start:].strip()
print(f"Réponse finale de Loo: {final_answer}")
# Sortie: Réponse finale de Loo: 5 + 3
⚙️ Paramètres Clés
| Paramètre du Tokenizer | Valeur | Rôle |
|---|---|---|
max_len |
128 | Longueur maximale des séquences supportée par le tokenizer. |
vocab_size |
1000 | Taille du vocabulaire entraîné (peut être plus grand si des octets spéciaux sont inclus). |
padding_side |
right (par défaut) |
Indique où placer les tokens de padding. |
truncation_side |
right (par défaut) |
Indique où tronquer la séquence si elle dépasse max_len. |
Pour toute question ou contribution au tokenizer Loo, veuillez consulter le dépôt Hugging Face associé ! Bonne utilisation ! 💻 $$
