File size: 6,190 Bytes
09a2ee6 7172771 5558ed2 c9109e1 569a36d c9109e1 a71e13e b37bdb0 |
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 |
---
library_name: transformers
license: apache-2.0
datasets:
- Clemylia/Melta-revive
language:
- fr
pipeline_tag: text-generation
---
# 🚀 Melta-82M : Le LLM Fonctionnel et Efficace
## 💡 Présentation Générale
| Caractéristique | Détail |
| :--- | :--- |
| **Nom du Modèle** | **Melta-82M** (Basé sur le projet Melta-revive) |
| **Créateur** | Clemylia / LES-IA-ETOILES |
| **Architecture** | **Transformer Llama** (Initialisé *from scratch*) |
| **Taille (Paramètres)** | **82 millions** |
| **Objectif** | Servir de modèle de fondation (**LLM Fonctionnel à Faible Paramètre**) pour le *Fine-Tuning* d'assistants spécialisés (comme Malya 🎶 ou Charlotte 💖). |
| **Langue** | Français |
Melta-82M représente la première tentative réussie de Clemylia d'entraîner une architecture Llama *from scratch*. Il est conçu pour prouver que l'efficacité de l'apprentissage des Transformers peut être atteinte avec un nombre de paramètres relativement faible, défiant la nécessité de modèles de plusieurs milliards.
## ⚙️ Détails Techniques de l'Architecture
Melta-82M est basé sur une configuration Llama optimisée pour la vitesse d'entraînement :
| Hyperparamètre | Valeur | Rôle dans l'Efficacité |
| :--- | :--- | :--- |
| **`hidden_size`** | 512 | Définit la dimension cachée du modèle. Gardé faible pour minimiser le coût de calcul. |
| **`num_hidden_layers`** | 12 | Nombre de blocs Transformer. Un bon équilibre pour capturer la complexité du langage sans alourdir le modèle. |
| **`num_attention_heads`**| 12 | Nombre de têtes d'attention. Permet au modèle d'analyser différentes facettes de la séquence simultanément. |
| **`vocab_size`** | \~32 000 | Taille du vocabulaire (ajustée après l'ajout du jeton `[PAD]`). Utilise un *tokenizer* sub-mot standard. |
| **`max_position_embeddings`**| 600 | Longueur maximale des séquences que le modèle peut traiter. |
## 🧪 Statut et Utilisation Actuelle
### 🚧 Statut de l'Entraînement
Melta-82M est actuellement dans une **phase de pré-apprentissage précoce** :
* **Données d'Entraînement :** Entraîné initialement sur seulement 650 lignes de paires Questions/Réponses (`Clemylia/Melta-revive`).
### 🎯 Prochaine Étape : Le Fine-Tuning
Ce modèle est prêt pour :
1. **L'augmentation massive du *dataset* :** Il nécessite un entraînement sur des millions de *tokens* pour atteindre une cohérence factuelle et sémantique.
2. **L'Affinement d'Instruction (Fine-Tuning) :** Une fois la cohérence atteinte, il pourra être affiné
## ⬇️ Comment Utiliser Melta-82M
Vous pouvez charger ce modèle directement via la bibliothèque **Hugging Face Transformers** pour l'inférence :
```python
from transformers import AutoTokenizer, LlamaForCausalLM
# Le modèle Llama 82M est chargé avec ses poids entraînés
model = LlamaForCausalLM.from_pretrained("Clemylia/Melta")
tokenizer = AutoTokenizer.from_pretrained("Clemylia/Melta")
```
**⚠️ Note :** En raison de son statut d'entraînement précoce, les utilisateurs sont invités à effectuer des Fine-Tuning supplémentaires avant toute utilisation en production.
toujours utilisé :
Question: Votre entrée\nRéponse
utilisation :
```
import torch
from transformers import (
AutoTokenizer,
LlamaForCausalLM,
)
# --- CONFIGURATION D'INFÉRENCE ---
# Remplacé par le dépôt Hugging Face
MODEL_REPO = "Clemylia/Melta"
def load_model_and_tokenizer(repo_id):
"""Charge le modèle LLaMA entraîné et son Tokenizer depuis Hugging Face."""
print(f"Chargement du modèle et du tokenizer depuis Hugging Face : {repo_id}...")
try:
# 1. Charger le Tokenizer
tokenizer = AutoTokenizer.from_pretrained(repo_id, trust_remote_code=True)
# S'assurer que le pad_token_id est correctement défini si le modèle en a besoin
if tokenizer.pad_token_id is None:
if tokenizer.pad_token is None:
# Le modèle LLaMA entraîné from scratch aura besoin de cette configuration
tokenizer.add_special_tokens({'pad_token': '[PAD]'})
tokenizer.pad_token_id = tokenizer.convert_tokens_to_ids(tokenizer.pad_token)
# 2. Charger le Modèle LLaMA
# LlamaForCausalLM charge le modèle et sa configuration depuis le dépôt HF
model = LlamaForCausalLM.from_pretrained(repo_id)
except Exception as e:
print(f"❌ Erreur lors du chargement depuis Hugging Face. Le dépôt '{repo_id}' existe-t-il ? : {e}")
return None, None
return model, tokenizer
def run_inference(model, tokenizer):
"""Effectue l'inférence (génération de texte) avec le modèle chargé."""
print("\n--- TEST D'INFÉRENCE ---")
# 0. Vérification de l'environnement
# Utiliser la carte graphique si elle est disponible
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)
model.eval()
# 1. Définir le prompt
prompt = "Question: Qui est Clem ?\nRéponse:"
print(f"Prompt d'entrée : {prompt}")
# 2. Tokenisation
inputs = tokenizer(prompt, return_tensors="pt").to(device)
# 3. Génération de la réponse
with torch.no_grad():
output_tokens = model.generate(
**inputs,
max_length=150, # Limite de longueur de la réponse
num_return_sequences=1,
do_sample=True,
top_k=50,
top_p=0.95,
temperature=0.7,
pad_token_id=tokenizer.pad_token_id
)
# 4. Décodage et affichage
# skip_special_tokens=False pour voir les balises de fin de séquence (</s>)
response = tokenizer.decode(output_tokens[0], skip_special_tokens=False)
print(f"\nRéponse générée :\n{response}")
print("-------------------------")
# --- EXECUTION PRINCIPALE ---
if __name__ == "__main__":
model, tokenizer = load_model_and_tokenizer(MODEL_REPO)
if model and tokenizer:
run_inference(model, tokenizer)
print("\n✅ Test d'inférence terminé.")
else:
print("\n❌ Impossible de lancer l'inférence. Vérifiez le nom du dépôt Hugging Face.")
``` |