Update README.md
Browse files
README.md
CHANGED
|
@@ -7,4 +7,117 @@ language:
|
|
| 7 |
pipeline_tag: text-generation
|
| 8 |
---
|
| 9 |
|
| 10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
pipeline_tag: text-generation
|
| 8 |
---
|
| 9 |
|
| 10 |
+
# 📖 Documentation du Tokenizer Loo : `Clemylia/Loo-tokenizer`
|
| 11 |
+
|
| 12 |
+
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**.
|
| 13 |
+
|
| 14 |
+
-----
|
| 15 |
+
|
| 16 |
+
## 💡 Objectif du Tokenizer
|
| 17 |
+
|
| 18 |
+
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).
|
| 19 |
+
|
| 20 |
+
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.
|
| 21 |
+
|
| 22 |
+
-----
|
| 23 |
+
|
| 24 |
+
## 🛠️ Chargement du Tokenizer
|
| 25 |
+
|
| 26 |
+
Le tokenizer est publié sur le Hugging Face Hub et peut être chargé facilement en utilisant la classe `AutoTokenizer`.
|
| 27 |
+
|
| 28 |
+
### Installation
|
| 29 |
+
|
| 30 |
+
Assurez-vous d'avoir la librairie `transformers` installée :
|
| 31 |
+
|
| 32 |
+
```bash
|
| 33 |
+
pip install transformers
|
| 34 |
+
```
|
| 35 |
+
|
| 36 |
+
### Chargement en Python
|
| 37 |
+
|
| 38 |
+
```python
|
| 39 |
+
from transformers import AutoTokenizer
|
| 40 |
+
|
| 41 |
+
# Le nom de la ressource publiée sur Hugging Face
|
| 42 |
+
TOKENIZER_ID = "Clemylia/Loo-tokenizer"
|
| 43 |
+
|
| 44 |
+
print(f"Chargement du tokenizer {TOKENIZER_ID}...")
|
| 45 |
+
tokenizer_loo = AutoTokenizer.from_pretrained(TOKENIZER_ID)
|
| 46 |
+
print("Chargement réussi ! ✅")
|
| 47 |
+
```
|
| 48 |
+
|
| 49 |
+
-----
|
| 50 |
+
|
| 51 |
+
## 🏷️ Tokens Spéciaux
|
| 52 |
+
|
| 53 |
+
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.
|
| 54 |
+
|
| 55 |
+
| Token | Description |
|
| 56 |
+
| :--- | :--- |
|
| 57 |
+
| `<|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. |
|
| 58 |
+
| `[PAD]` | **Padding Token** : Utilisé pour rendre toutes les séquences de la même longueur dans un batch. |
|
| 59 |
+
|
| 60 |
+
> **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).
|
| 61 |
+
|
| 62 |
+
-----
|
| 63 |
+
|
| 64 |
+
## 🚀 Utilisation et Flux de Travail
|
| 65 |
+
|
| 66 |
+
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**.
|
| 67 |
+
|
| 68 |
+
### 1\. Préparation pour l'Entraînement / Génération
|
| 69 |
+
|
| 70 |
+
Pour que Loo réponde correctement, l'entrée doit toujours suivre le format d'entraînement :
|
| 71 |
+
|
| 72 |
+
$$
|
| 73 |
+
\text{`prompt: [Votre Requête] send: [La Réponse Souhaitée]`} <|endoftext|>
|
| 74 |
+
$$**Exemple de tokenization d'un prompt :**
|
| 75 |
+
|
| 76 |
+
```python
|
| 77 |
+
prompt_test = "prompt: Donne moi une addition simple send:"
|
| 78 |
+
|
| 79 |
+
tokens = tokenizer_loo(prompt_test, return_tensors="pt")
|
| 80 |
+
|
| 81 |
+
print("Tokens IDs:", tokens['input_ids'][0].tolist())
|
| 82 |
+
print("Tokens décodés:", tokenizer_loo.convert_ids_to_tokens(tokens['input_ids'][0].tolist()))
|
| 83 |
+
```
|
| 84 |
+
|
| 85 |
+
### 2\. Décodage (Post-Traitement)
|
| 86 |
+
|
| 87 |
+
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 `é`).
|
| 88 |
+
|
| 89 |
+
Lors du décodage d'une sortie brute du modèle (`output`):
|
| 90 |
+
|
| 91 |
+
* Utilisez `skip_special_tokens=True` pour retirer le token `<|endoftext|>` et `[PAD]`.
|
| 92 |
+
* Effectuez une étape de nettoyage pour n'extraire que le contenu après le séparateur `send:`.
|
| 93 |
+
|
| 94 |
+
**Exemple de post-traitement de la réponse du modèle :**
|
| 95 |
+
|
| 96 |
+
```python
|
| 97 |
+
# Supposons que ceci est la sortie brute (décodée sans nettoyage)
|
| 98 |
+
generated_raw = "prompt: Donne moi une addition simple send: 5 + 3<|endoftext|>"
|
| 99 |
+
|
| 100 |
+
# Décodage propre (retire les tokens spéciaux)
|
| 101 |
+
cleaned_text = tokenizer_loo.decode(output_ids, skip_special_tokens=True)
|
| 102 |
+
|
| 103 |
+
# Extraction de la réponse
|
| 104 |
+
response_start = cleaned_text.find("send:") + len("send:")
|
| 105 |
+
final_answer = cleaned_text[response_start:].strip()
|
| 106 |
+
|
| 107 |
+
print(f"Réponse finale de Loo: {final_answer}")
|
| 108 |
+
# Sortie: Réponse finale de Loo: 5 + 3
|
| 109 |
+
```
|
| 110 |
+
|
| 111 |
+
-----
|
| 112 |
+
|
| 113 |
+
## ⚙️ Paramètres Clés
|
| 114 |
+
|
| 115 |
+
| Paramètre du Tokenizer | Valeur | Rôle |
|
| 116 |
+
| :--- | :--- | :--- |
|
| 117 |
+
| `max_len` | 128 | Longueur maximale des séquences supportée par le tokenizer. |
|
| 118 |
+
| `vocab_size` | 1000 | Taille du vocabulaire entraîné (peut être plus grand si des octets spéciaux sont inclus). |
|
| 119 |
+
| `padding_side` | `right` (par défaut) | Indique où placer les tokens de padding. |
|
| 120 |
+
| `truncation_side` | `right` (par défaut) | Indique où tronquer la séquence si elle dépasse `max_len`. |
|
| 121 |
+
|
| 122 |
+
Pour toute question ou contribution au tokenizer Loo, veuillez consulter le dépôt Hugging Face associé \! Bonne utilisation \! 💻
|
| 123 |
+
$$
|