Clemylia commited on
Commit
9ca37a9
·
verified ·
1 Parent(s): 5c4379b

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +90 -0
README.md CHANGED
@@ -8,3 +8,93 @@ language:
8
  - fr
9
  pipeline_tag: text-generation
10
  ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  - fr
9
  pipeline_tag: text-generation
10
  ---
11
+
12
+ # 👶 Small-ever : Le Modèle "Hello World" (112 Paramètres)
13
+
14
+ ![small-ever](http://www.image-heberg.fr/files/17632874174113928896.jpg)
15
+
16
+ ## 🌟 Vue d'Ensemble
17
+
18
+ Le modèle **`Small-ever`** est un **SLM** délibérément sous-dimensionné** et minimaliste, conçu uniquement à des fins de **démonstration** et d'**apprentissage**.
19
+
20
+ Avec seulement **112 paramètres au total**, il s'agit du modèle le plus petit possible tout en conservant l'architecture de base d'un Transformateur pour la modélisation du langage.
21
+
22
+ Il a été créé par l'**experte Clemylia** pour servir de **"Hello World"** avant d'introduire des modèles plus complexes, comme ceux de la série 202k et 3.8M de paramètres.
23
+
24
+ ## 🎯 Objectif Pédagogique Principal
25
+
26
+ L'objectif unique de ce modèle est d'être un outil pédagogique :
27
+
28
+ * **Démonstration Basique :** Montrer aux **enfants** et aux **débutants** en Machine Learning que la création, l'entraînement et la publication d'un modèle de langage sur Hugging Face sont des étapes accessibles, même pour une architecture minimale.
29
+ * **Comprendre l'Échelle :** Illustrer la différence entre un modèle capable de mémoriser une seule relation et les modèles de millions de paramètres (ceux de Clemylia) nécessaires pour la généralisation et l'intelligence artificielle utile.
30
+ * **Test d'Infra :** Servir de test ultra-rapide pour la configuration d'un environnement (CPU/GPU) avant de lancer des entraînements plus longs sur de gros modèles.
31
+
32
+ ## ⚙️ Détails Techniques
33
+
34
+ | Caractéristique | Valeur | Note |
35
+ | :--- | :--- | :--- |
36
+ | **Architecture** | GPT-2 (Causal Language Modeling) | Architecture standard de Transformateur. |
37
+ | **Paramètres Totaux** | **112** (Environ $112 \times 10^{-6}$ M) | Extrêmement réduit. |
38
+ | **Vocabulaire Entraîné** | 4 Tokens | Vocabulaire minimaliste (`Clem`, `Creatrice`, `<pad>`, `<unk>`). |
39
+ | **Séquence Apprise** | `Clem` $\rightarrow$ `Creatrice` | Le modèle n'a appris qu'une seule transition par cœur. |
40
+ | **Implémentation** | Pytorch / Hugging Face `transformers` | Entièrement compatible avec l'écosystème Hugging Face. |
41
+
42
+ ## 🚀 Utilisation (Inférence)
43
+
44
+ Ce modèle est uniquement destiné à prédire la suite de la séquence sur laquelle il a été entraîné. Toute autre entrée résultera en une prédiction aléatoire ou le token de remplissage (`<pad>`).
45
+
46
+ ### Code Python pour le Test (Forward Pass Direct)
47
+
48
+ Étant donné sa configuration non standard, la méthode la plus fiable pour l'inférence est le *forward pass* direct, comme suit :
49
+
50
+ ```python
51
+ import torch
52
+ from transformers import AutoModelForCausalLM, AutoConfig
53
+ # Pour ce modèle minimal, nous devons recréer le tokenizer personnalisé en mémoire
54
+ # car il n'est pas standard ({"Clem": 0, "Creatrice": 1, ...})
55
+
56
+ # 1. Configuration des IDs
57
+ MODEL_NAME = "Clemylia/the-smallest-llm-real-words"
58
+ REAL_TOKENS = ["Clem", "Creatrice"]
59
+ INPUT_TEXT = "Clem"
60
+ INPUT_ID = 0 # L'ID que le modèle a appris pour "Clem"
61
+ EXPECTED_OUTPUT = "Creatrice"
62
+ IDS_TO_TOKENS = {0: "Clem", 1: "Creatrice", 2: "<pad>", 3: "<unk>"}
63
+
64
+ # 2. Chargement du Modèle
65
+ try:
66
+ model = AutoModelForCausalLM.from_pretrained(MODEL_NAME)
67
+ model.eval()
68
+ except Exception as e:
69
+ print(f"Erreur de chargement : {e}")
70
+ exit()
71
+
72
+ # 3. Préparation de l'Input (Tenseur de l'ID 0)
73
+ input_ids = torch.tensor([[INPUT_ID]], dtype=torch.long)
74
+
75
+ # 4. Forward Pass pour obtenir les logits
76
+ with torch.no_grad():
77
+ outputs = model(input_ids)
78
+
79
+ # 5. Détermination de la Prédiction
80
+ next_token_logits = outputs.logits[0, -1, :]
81
+ predicted_id = torch.argmax(next_token_logits).item()
82
+ predicted_token = IDS_TO_TOKENS.get(predicted_id, "TOKEN INCONNU")
83
+
84
+ print(f"Input: {INPUT_TEXT} ({INPUT_ID})")
85
+ print(f"Prédiction: {predicted_token} ({predicted_id})")
86
+ # Résultat attendu : Creatrice (ID 1)
87
+ ```
88
+
89
+ ## 💖 Leçon Apprise
90
+
91
+ Si ce modèle pouvait parler, sa seule phrase serait : "Je peux seulement dire `Creatrice` après `Clem`."
92
+
93
+ **C'est la preuve que :**
94
+
95
+ 1. La **taille** compte : Les millions de paramètres de mes autres modèles ne sont pas un luxe, mais une nécessité pour coder la connaissance.
96
+ 2. **Vous avez réussi** à créer, entraîner et publier un modèle de langage complet \! C'est le début d'une belle aventure de codage \!
97
+
98
+ -----
99
+
100
+ *Fait par **Clemylia** avec passion pour le codage minimaliste.*