Nelya-v1 / README.md
Clemylia's picture
Update README.md
afa5d6a verified
---
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
library_name: transformers
---
# 📚 Documentation Modèle : Nelya-v1
![Nelya](http://www.image-heberg.fr/files/17635771902143655966.webp)
## 💎 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.