Clemylia commited on
Commit
c4df24d
·
verified ·
1 Parent(s): fd05b71

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +119 -1
README.md CHANGED
@@ -86,4 +86,122 @@ Pour explorer le Nekolien, il est crucial de jouer avec les paramètres :
86
  Nelya-v1 a été entièrement créé par **Clemylia** dans le cadre de la recherche personnelle et du développement de LLM.
87
 
88
  * **Soutien :** Veuillez adresser toute question technique ou demande de licence explicite directement à l'équipe de Clemylia.
89
- * **Encouragements :** Merci de respecter l'investissement et l'innovation derrière ce projet ! 💖
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  Nelya-v1 a été entièrement créé par **Clemylia** dans le cadre de la recherche personnelle et du développement de LLM.
87
 
88
  * **Soutien :** Veuillez adresser toute question technique ou demande de licence explicite directement à l'équipe de Clemylia.
89
+ * **Encouragements :** Merci de respecter l'investissement et l'innovation derrière ce projet ! 💖
90
+
91
+ # 🩷 Inférence et Utilisation 🌸
92
+
93
+ **Exemple de code d'inférence fonctionnel** :
94
+
95
+ ```
96
+ # ==============================================================================
97
+ # 1. INSTALLATION ET IMPORTS
98
+ # ==============================================================================
99
+ # Nous n'avons besoin que des bibliothèques de base pour l'inférence
100
+ !pip install -q transformers torch
101
+
102
+ import torch
103
+ from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
104
+
105
+ # ==============================================================================
106
+ # 2. DÉFINITION DES CONSTANTES ET CHARGEMENT
107
+ # ==============================================================================
108
+ MODEL_NAME = "Clemylia/Nelya-v1" # Votre modèle finetuné
109
+ # Utiliser "auto" pour charger le modèle sur le GPU si disponible, sinon sur CPU
110
+ DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
111
+
112
+ print(f"Chargement du modèle {MODEL_NAME} sur {DEVICE}...")
113
+
114
+ # Chargement du tokenizer
115
+ tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
116
+
117
+ # Chargement du modèle. Utiliser torch_dtype=torch.bfloat16 si votre environnement
118
+ # (GPU T4) le supporte et que le modèle a été entraîné ou sauvegardé dans ce format.
119
+ model = AutoModelForCausalLM.from_pretrained(
120
+ MODEL_NAME,
121
+ torch_dtype=torch.bfloat16 if DEVICE == "cuda" else None,
122
+ device_map="auto"
123
+ )
124
+
125
+ # ==============================================================================
126
+ # 3. PRÉPARATION DE LA REQUÊTE ET GÉNÉRATION
127
+ # ==============================================================================
128
+
129
+ # La question simple génerique (nous utilisons le format Chat utilisé lors du fine-tuning)
130
+ QUESTION = "Ti eta ?"
131
+
132
+ # Formatage de la question dans le format de conversation attendu par le modèle
133
+ # <|user|>...</s><|assistant|>
134
+ prompt = f"<|user|>{QUESTION}</s><|assistant|>"
135
+
136
+ # Tokenization du prompt
137
+ inputs = tokenizer(prompt, return_tensors="pt").to(DEVICE)
138
+
139
+ # Génération de la réponse
140
+ print("\n--- Génération de la réponse ---")
141
+
142
+ # Paramètres de génération standard
143
+ output_tokens = model.generate(
144
+ **inputs,
145
+ max_new_tokens=150, # Limite la longueur de la réponse
146
+ do_sample=True, # Utiliser l'échantillonnage pour une réponse plus créative
147
+ temperature=0.7, # Contrôle le caractère aléatoire
148
+ top_k=50,
149
+ eos_token_id=tokenizer.eos_token_id, # Arrêt à la fin de séquence
150
+ )
151
+
152
+ # ==============================================================================
153
+ # 4. DÉCODAGE ET AFFICHAGE DU RÉSULTAT
154
+ # ==============================================================================
155
+ # Décoder le résultat, en ignorant le prompt initial et le token de padding/spécial
156
+ generated_text = tokenizer.decode(output_tokens[0], skip_special_tokens=True)
157
+
158
+ # Nettoyage pour n'afficher que la réponse de l'assistant
159
+ # On cherche le début de la réponse de l'assistant après le prompt formaté
160
+ assistant_prefix = "</s><|assistant|>"
161
+ if assistant_prefix in generated_text:
162
+ # Retirer le prompt initial et les balises de fin
163
+ clean_response = generated_text.split(assistant_prefix)[-1].strip()
164
+ else:
165
+ # Si le formatage n'a pas été parfait (ce qui arrive)
166
+ clean_response = generated_text.replace(QUESTION, "").strip()
167
+
168
+
169
+ print(f"\n🧠 Réponse de {MODEL_NAME} :\n")
170
+ print(clean_response)
171
+ print("\n-------------------------------")
172
+
173
+ # ==============================================================================
174
+ # 5. UTILISATION OPTIONNELLE DE PIPELINE (plus simple)
175
+ # ==============================================================================
176
+ print("\nTest rapide avec le pipeline (méthode simplifiée) :")
177
+
178
+ generator = pipeline(
179
+ "text-generation",
180
+ model=model,
181
+ tokenizer=tokenizer
182
+ # device=0 if DEVICE == "cuda" else -1 # REMOVED: Conflicts with device_map="auto"
183
+ )
184
+
185
+ # Le pipeline gère souvent bien le formatage par défaut pour les modèles Chat/Instruction
186
+ # On utilise la même question, sans le formatage manuel
187
+ result = generator(
188
+ QUESTION,
189
+ max_new_tokens=150,
190
+ do_sample=True,
191
+ temperature=0.7
192
+ )
193
+ print(result[0]['generated_text'])
194
+ ```
195
+
196
+ **Reponses renvoyés (exemples)** :
197
+
198
+ 1) La pus grana avst ecrita avst ecrita *La annia la Jalla.
199
+
200
+ 2) Quelia eta la monetallia di la miel ? La symbolia di la mondia di la roallia eta la mondia
201
+
202
+ 3) La collora di la humia apstournia.
203
+
204
+ 4) Quelia eta la fruica di la e la e la e?
205
+ La collora di la mondia eta la poteé la pi poteé la l'éiella la roria
206
+
207
+ ----