File size: 9,220 Bytes
4532703 5e435af 26b5603 f814fa6 5e435af f814fa6 5e435af f814fa6 7ebad5c f814fa6 91c0ebe c4df24d 0c77cc5 c4df24d 0c77cc5 c4df24d 1e3b174 afa5d6a 7ebad5c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 | ---
license: other
license_name: nelya-restrictive
license_link: LICENSE
datasets:
- Clemylia/Charlotte-nekolien-SLM
language:
- fr
pipeline_tag: text-generation
tags:
- LLM
- Neko-LLM
- Nekolien
- Créativité
- Nelya
- conlangs
library_name: transformers
---
# 📚 Documentation Modèle : Nelya-v1

## 💎 Introduction
Bienvenue à la documentation technique de **Nelya-v1**, un Large Language Model (LLM) de $\mathbf{2}$ milliards de paramètres. Nelya-v1 est un modèle expérimental et de recherche, spécialisé dans la **génération de texte dans une langue inventée, le Nekolien**. Il est conçu pour explorer les frontières de la linguistique artificielle et de l'apprentissage structurel.
---
## 🛠️ Vue d'Ensemble Technique
Nelya-v1 est le produit d'un entraînement *from scratch* par Clemylia, exploitant les capacités d'accélérateurs de pointe pour valider l'architecture LLM.
### Caractéristiques Principales
| Caractéristique | Valeur | Note Technique |
| :--- | :--- | :--- |
| **Nom Complet** | Nelya-v1 (Base Lamina-large) | Dérivé du *Lamina-large-2b-pretrain*. |
| **Taille** | $\mathbf{2}$ Milliards de Paramètres | Classification **LLM** (Large Language Model). |
| **Architecture** | Transformer Décodeur Seul | Optimisée pour la génération de texte séquentielle. |
| **Langue de Sortie** | **Nekolien** (Langue Inventée) | Le modèle génère du texte selon les règles grammaticales apprises du Nekolien. |
| **Ressources** | Entraîné sur **TPU** (Google Colab Gratuit) | Optimisation maximale des ressources pour l'entraînement à grande échelle. |
### 🔍 Sortie Actuelle du Modèle (État de Recherche)
Les exemples de génération confirment que Nelya-v1 a réussi à apprendre les **suffixes** (`-lia`, `-a`), la **syntaxe de base** (`di la`, `eta`), et les **schémas de répétition/affirmation** propres à son *fine-tuning*.
* **Exemples :** `La capitalia chimica di la mondia eta la mondia.`
* **Observation :** Le modèle excelle dans la création de phrases grammaticalement cohérentes en Nekolien, mais tombe souvent dans des **boucles autoreférentielles** (`...mondia in la mondia...`) ou des **tâches tautologiques** (affirmation d'une vérité vide).
---
## 🔒 Licence et Utilisation (Nelya-Restrictive)
**ATTENTION :** Nelya-v1 n'est **PAS** un modèle *open-source* classique. L'utilisation est régie par la **Licence Nelya-Restrictive** déposée par Clemylia.
| Clause Clé | Interdiction Stricte | Sanction Spécifique |
| :--- | :--- | :--- |
| **Propriété** | Revendiquer la propriété du modèle ou du Nekolien. | Droits d'auteurs artistiques sur le Nekolien. |
| **Redistribution/Copie** | Copie ou distribution non autorisée du modèle. | Amende de $\mathbf{50€}$ à $\mathbf{200€}$ pour malveillance. |
| **Fine-Tuning** | Modification ou *fine-tuning* du modèle (sauf par l'équipe Clemylia). | Interdiction totale. |
**👉 L'utilisation du modèle implique l'acceptation inconditionnelle de la Licence Nelya-Restrictive.**
---
## 🚀 Utilisation et Paramètres de Décodage
Nelya-v1 est destiné à être utilisé comme générateur de texte dans le pipeline standard `transformers`.
### Recommandations de Décodage
Pour explorer le Nekolien, il est crucial de jouer avec les paramètres :
| Paramètre | Recommandation | Objectif |
| :--- | :--- | :--- |
| **`do_sample`** | `True` (Échantillonnage) | Nécessaire pour obtenir des phrases variées en Nekolien. |
| **`temperature` ($\tau$)** | $\mathbf{0.7 \rightarrow 0.9}$ | Une valeur élevée encourage l'originalité et les combinaisons nouvelles, tout en maintenant un semblant de structure (contrairement à Charlotte-2b). |
| **`max_length`** | Court ($\mathbf{< 100}$ tokens) | Le modèle peut tomber dans des boucles de répétition si la longueur est trop grande. |
| **`repetition_penalty`** | $\mathbf{> 1.1}$ | Peut aider à briser les boucles de répétition fréquentes (`...mondia in la mondia...`). |
---
## 👩💻 Support et Contact
Nelya-v1 a été entièrement créé par **Clemylia** dans le cadre de la recherche personnelle et du développement de LLM.
* **Soutien :** Veuillez adresser toute question technique ou demande de licence explicite directement à l'équipe de Clemylia.
* **Encouragements :** Merci de respecter l'investissement et l'innovation derrière ce projet ! 💖
# 🩷 Inférence et Utilisation 🌸
**Exemple de code d'inférence fonctionnel** :
```
# ==============================================================================
# 1. INSTALLATION ET IMPORTS
# ==============================================================================
# Nous n'avons besoin que des bibliothèques de base pour l'inférence
!pip install -q transformers torch
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
# ==============================================================================
# 2. DÉFINITION DES CONSTANTES ET CHARGEMENT
# ==============================================================================
MODEL_NAME = "Clemylia/Nelya-v1" # Votre modèle finetuné
# Utiliser "auto" pour charger le modèle sur le GPU si disponible, sinon sur CPU
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
print(f"Chargement du modèle {MODEL_NAME} sur {DEVICE}...")
# Chargement du tokenizer
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
# Chargement du modèle. Utiliser torch_dtype=torch.bfloat16 si votre environnement
# (GPU T4) le supporte et que le modèle a été entraîné ou sauvegardé dans ce format.
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME,
torch_dtype=torch.bfloat16 if DEVICE == "cuda" else None,
device_map="auto"
)
# ==============================================================================
# 3. PRÉPARATION DE LA REQUÊTE ET GÉNÉRATION
# ==============================================================================
# La question simple génerique (nous utilisons le format Chat utilisé lors du fine-tuning)
QUESTION = "Ti eta ?"
# Formatage de la question dans le format de conversation attendu par le modèle
# <|user|>...</s><|assistant|>
prompt = f""### Instruction:{QUESTION}### Response:"
# Tokenization du prompt
inputs = tokenizer(prompt, return_tensors="pt").to(DEVICE)
# Génération de la réponse
print("\n--- Génération de la réponse ---")
# Paramètres de génération standard
output_tokens = model.generate(
**inputs,
max_new_tokens=150, # Limite la longueur de la réponse
do_sample=True, # Utiliser l'échantillonnage pour une réponse plus créative
temperature=0.7, # Contrôle le caractère aléatoire
top_k=50,
eos_token_id=tokenizer.eos_token_id, # Arrêt à la fin de séquence
)
# ==============================================================================
# 4. DÉCODAGE ET AFFICHAGE DU RÉSULTAT
# ==============================================================================
# Décoder le résultat, en ignorant le prompt initial et le token de padding/spécial
generated_text = tokenizer.decode(output_tokens[0], skip_special_tokens=True)
# Nettoyage pour n'afficher que la réponse de l'assistant
# On cherche le début de la réponse de l'assistant après le prompt formaté
assistant_prefix = "### Response:"
if assistant_prefix in generated_text:
# Retirer le prompt initial et les balises de fin
clean_response = generated_text.split(assistant_prefix)[-1].strip()
else:
# Si le formatage n'a pas été parfait (ce qui arrive)
clean_response = generated_text.replace(QUESTION, "").strip()
print(f"\n🧠 Réponse de {MODEL_NAME} :\n")
print(clean_response)
print("\n-------------------------------")
# ==============================================================================
# 5. UTILISATION OPTIONNELLE DE PIPELINE (plus simple)
# ==============================================================================
print("\nTest rapide avec le pipeline (méthode simplifiée) :")
generator = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer
# device=0 if DEVICE == "cuda" else -1 # REMOVED: Conflicts with device_map="auto"
)
# Le pipeline gère souvent bien le formatage par défaut pour les modèles Chat/Instruction
# On utilise la même question, sans le formatage manuel
result = generator(
QUESTION,
max_new_tokens=150,
do_sample=True,
temperature=0.7
)
print(result[0]['generated_text'])
```
**Reponses renvoyés (exemples)** :
1) La pus grana avst ecrita avst ecrita *La annia la Jalla.
2) Quelia eta la monetallia di la miel ? La symbolia di la mondia di la roallia eta la mondia
3) La collora di la humia apstournia.
4) Quelia eta la fruica di la e la e la e?
La collora di la mondia eta la poteé la pi poteé la l'éiella la roria
----
**Durer d'entraînement d'un LLM de cette envergure** : 300 heure sur TPU + nombreux fine-tuning de plusieurs heures sur GPU t4.
**Variante du nekolien de ce modèle** : Nekolien original/centre.
Nelya-v1 respecte les bases de l'académie nekolienne :
https://neko-lexicon-archives.lovable.app/ |