--- 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 ![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|>...<|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/