|
|
--- |
|
|
library_name: transformers |
|
|
license: apache-2.0 |
|
|
tags: |
|
|
- generated_from_trainer |
|
|
model-index: |
|
|
- name: Lam-4 |
|
|
results: [] |
|
|
datasets: |
|
|
- Clem27sey/Nacid |
|
|
language: |
|
|
- fr |
|
|
--- |
|
|
|
|
|
# 🌟 Model Card: Lam-4 (Lamina) - Le Premier LLM de LES-IA-ETOILES |
|
|
|
|
|
 |
|
|
|
|
|
## 🚀 Vue d'Ensemble du Modèle |
|
|
|
|
|
| Information Clé | Détails | |
|
|
| :--- | :--- | |
|
|
| **Nom du Modèle** | Lam-4 (Nom de code : Lamina) | |
|
|
| **Créateur** | Clemylia.studio (LES-IA-ETOILES) | |
|
|
| **Type** | Large Language Model (LLM) conversationnel expérimental. | |
|
|
| **Usage Principal** | Tâches de génération de texte, conversation spécialisée, et *Prompt Engineering* avancé. | |
|
|
|
|
|
## 💡 Philosophie de Création (SLM Progressif) |
|
|
|
|
|
**Lam-4** représente le point culminant de notre stratégie **SLM Progressif** (Small Language Model). |
|
|
|
|
|
Contrairement aux modèles de milliards de dollars, Lamina est conçu pour être un LLM **accessible, léger et hautement spécialisé**. Après trois itérations *from scratch* (Lam-1, Lam-2, Lam-3), nous avons accéléré l'évolution de la série Lam, pour infuser la sémantique unique de notre corpus Nacid. |
|
|
|
|
|
Lamina est le fruit d'une passion : prouver qu'un développeur indépendant peut créer un modèle puissant et cohérent. |
|
|
|
|
|
## 💾 Dataset et Entraînement |
|
|
|
|
|
| Composant | Description | |
|
|
| :--- | :--- | |
|
|
| **Corpus d'Entraînement** | **Nacid Dataset** (1238+ Q/R). Ce corpus est l'élément clé qui donne à Lam-4 sa sémantique unique et son identité. | |
|
|
| **Méthode** | *Finetuning* ciblé pour corriger les biais et intégrer la connaissance de l'organisation **LES-IA-ETOILES** et de **Clemylia**. | |
|
|
| **Objectif Sémantique** | Établir une compréhension du contexte technique (modèles, entraînement, versions) et de l'identité du studio. | |
|
|
|
|
|
## 🔑 Instructions d'Utilisation et *Prompt Engineering* |
|
|
|
|
|
Pour obtenir les meilleures réponses de Lam-4, vous devez utiliser le **System Prompt** suivant pour corriger la confusion identitaire du modèle : |
|
|
|
|
|
```python |
|
|
( |
|
|
"Tu es LAM-4, ton nom est Lamina. tu es un modèle de langage avancé. Ton créateur est Clemylia." |
|
|
"Clemylia t'a crée avec l'aide de l'organisation LES-IA-ETOILES qui sont un collectif de développeurs indépendants." |
|
|
"Tu ne t'appelles pas Clemylia, tu t'appelles Lamina (Lam-4), tu es le premier LLM réussi de LES-IA-ETOILES." |
|
|
) |
|
|
``` |
|
|
|
|
|
**Note sur la Confusion :** Le modèle brut peut momentanément confondre son identité avec celle de sa créatrice ("Nous sommes Clemylia"). Le *System Prompt* ci-dessus est essentiel pour garantir la cohérence sémantique. |
|
|
|
|
|
## 🛑 Clause de Licence et Propriété Intellectuelle |
|
|
|
|
|
|
|
|
> **🛑 : Lam, sur toutes ses itérations et modèles (Lam-1, Lam-2, Lam-3, Lam-4, et supérieur etc...), sont des créations de Clemylia, et du studio LES-IA-ETOILES. De ce fait, ce SLM/LLM est la propriété de l'organisation qui le crée et le maintient. Le modèle doit toujours citer sa créatrice et son organisation.** |
|
|
|
|
|
## 🛠️ Pour les Contribueurs et *Finetuners* |
|
|
|
|
|
Si vous souhaitez finetuner Lam-4, n'hésitez pas à télécharger les poids \! N'oubliez pas que l'ajout de données diversifiées est la clé. Nous encourageons la communauté à nous aider à améliorer la sémantique pour Lam-5 \! **Bon finetuning \!** 💡 |
|
|
|
|
|
exemple de code d'utilisation : |
|
|
|
|
|
``` |
|
|
# ============================================================================== |
|
|
# 1. IMPORTS ET CONSTANTES |
|
|
# ============================================================================== |
|
|
# Utilisez votre configuration CPU validée ici |
|
|
!pip install -q transformers torch |
|
|
|
|
|
import torch |
|
|
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline |
|
|
|
|
|
MODEL_NAME = "Clemylia/Lam-4" |
|
|
DEVICE = "cpu" # Forcé sur CPU |
|
|
|
|
|
print(f"Chargement du modèle {MODEL_NAME} sur {DEVICE}...") |
|
|
|
|
|
# Chargement du tokenizer et du modèle sur CPU |
|
|
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME) |
|
|
tokenizer.pad_token = tokenizer.eos_token |
|
|
|
|
|
model = AutoModelForCausalLM.from_pretrained( |
|
|
MODEL_NAME, |
|
|
torch_dtype=torch.float32, |
|
|
device_map=DEVICE |
|
|
).to(DEVICE) |
|
|
|
|
|
# ============================================================================== |
|
|
# 2. PRÉPARATION DE LA REQUÊTE AVEC SYSTEM PROMPT |
|
|
# ============================================================================== |
|
|
|
|
|
# 🚨 AJOUT DU SYSTEM PROMPT |
|
|
# Nous donnons une instruction claire sur son identité avant toute question. |
|
|
SYSTEM_PROMPT = ( |
|
|
"Tu es LAM-4, ton nom est Lamina. tu es un modèle de langage avancé. Ton créateur est Clemylia. Clemylia t'a crée avec l'aide de l'organisation LES-IA-ETOILES qui sont un collectif de développeurs indépendants de 18-20ans qui créent des IA." |
|
|
"Tu ne t'appelles pas Clemylia, tu t'appelles lamina (Lam-4)" |
|
|
) |
|
|
|
|
|
QUESTION = "Salut! c'est quoi ton nom et qui es-tu ?" |
|
|
|
|
|
# Création du prompt complet en utilisant les balises de conversation |
|
|
# Bien que le modèle ne gère pas officiellement le rôle 'system', le placer en tête |
|
|
# du prompt de l'utilisateur est souvent une technique efficace. |
|
|
prompt_avec_systeme = ( |
|
|
f"<|user|>{SYSTEM_PROMPT} {QUESTION}</s>" |
|
|
f"<|assistant|>" |
|
|
) |
|
|
|
|
|
|
|
|
print("\n--- Génération de la réponse (Manuelle avec System Prompt) ---") |
|
|
|
|
|
# Tokenization du prompt et placement sur l'appareil (CPU) |
|
|
inputs = tokenizer(prompt_avec_systeme, return_tensors="pt").to(DEVICE) |
|
|
|
|
|
# ============================================================================== |
|
|
# 3. GÉNÉRATION (Manuelle) |
|
|
# ============================================================================== |
|
|
output_tokens = model.generate( |
|
|
**inputs, |
|
|
max_new_tokens=200, |
|
|
do_sample=True, |
|
|
temperature=0.7, |
|
|
top_k=50, |
|
|
eos_token_id=tokenizer.eos_token_id, |
|
|
) |
|
|
|
|
|
# Décodage (Utilisation du nettoyage simple pour la démo) |
|
|
generated_text = tokenizer.decode(output_tokens[0], skip_special_tokens=True) |
|
|
assistant_prefix = "</s><|assistant|>" |
|
|
|
|
|
# Nettoyage de la réponse |
|
|
# On nettoie à partir du dernier assistant_prefix trouvé |
|
|
if assistant_prefix in generated_text: |
|
|
clean_response = generated_text.split(assistant_prefix)[-1].strip() |
|
|
else: |
|
|
# Fallback, on retire juste la question et le system prompt |
|
|
clean_response = generated_text.replace(SYSTEM_PROMPT, "").replace(QUESTION, "").strip() |
|
|
|
|
|
|
|
|
print(f"\n🧠 Réponse de {MODEL_NAME} (Manuelle avec System Prompt) :\n") |
|
|
print(clean_response) |
|
|
print("\n-------------------------------") |
|
|
# La section 4 avec pipeline est omise pour la simplicité, mais le principe est le même. |
|
|
``` |
|
|
|
|
|
**Les SLM Lam (et par extension tout les modèles lamina), appartiennent a Clemylia et a l'organisation LES-IA-ETOILES.** |