|
|
--- |
|
|
library_name: transformers |
|
|
license: other |
|
|
datasets: Clemylia/Loo-token |
|
|
language: |
|
|
- fr |
|
|
pipeline_tag: text-generation |
|
|
--- |
|
|
|
|
|
# 📖 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 : |
|
|
|
|
|
```bash |
|
|
pip install transformers |
|
|
``` |
|
|
|
|
|
### Chargement en Python |
|
|
|
|
|
```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|>` | **End-Of-Sequence (EOS)** : Marque la fin d'une séquence. **C'est le token crucial** pour indiquer à Loo qu'il doit arrêter la génération. | |
|
|
| `[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 : |
|
|
|
|
|
$$ |
|
|
\text{`prompt: [Votre Requête] send: [La Réponse Souhaitée]`} <|endoftext|> |
|
|
$$**Exemple de tokenization d'un prompt :** |
|
|
|
|
|
```python |
|
|
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=True` pour 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 :** |
|
|
|
|
|
```python |
|
|
# 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 \! 💻 |
|
|
$$ |