Clemylia commited on
Commit
b37bdb0
·
verified ·
1 Parent(s): 528a6d7

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +87 -1
README.md CHANGED
@@ -65,4 +65,90 @@ tokenizer = AutoTokenizer.from_pretrained("Clemylia/Melta")
65
  **⚠️ 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.
66
 
67
  toujours utilisé :
68
- Question: Votre entrée\nRéponse
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  **⚠️ 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.
66
 
67
  toujours utilisé :
68
+ Question: Votre entrée\nRéponse
69
+
70
+ utilisation :
71
+
72
+ ```
73
+ import torch
74
+ from transformers import (
75
+ AutoTokenizer,
76
+ LlamaForCausalLM,
77
+ )
78
+
79
+ # --- CONFIGURATION D'INFÉRENCE ---
80
+ # Remplacé par le dépôt Hugging Face
81
+ MODEL_REPO = "Clemylia/Melta"
82
+
83
+ def load_model_and_tokenizer(repo_id):
84
+ """Charge le modèle LLaMA entraîné et son Tokenizer depuis Hugging Face."""
85
+ print(f"Chargement du modèle et du tokenizer depuis Hugging Face : {repo_id}...")
86
+
87
+ try:
88
+ # 1. Charger le Tokenizer
89
+ tokenizer = AutoTokenizer.from_pretrained(repo_id, trust_remote_code=True)
90
+ # S'assurer que le pad_token_id est correctement défini si le modèle en a besoin
91
+ if tokenizer.pad_token_id is None:
92
+ if tokenizer.pad_token is None:
93
+ # Le modèle LLaMA entraîné from scratch aura besoin de cette configuration
94
+ tokenizer.add_special_tokens({'pad_token': '[PAD]'})
95
+ tokenizer.pad_token_id = tokenizer.convert_tokens_to_ids(tokenizer.pad_token)
96
+
97
+
98
+ # 2. Charger le Modèle LLaMA
99
+ # LlamaForCausalLM charge le modèle et sa configuration depuis le dépôt HF
100
+ model = LlamaForCausalLM.from_pretrained(repo_id)
101
+
102
+ except Exception as e:
103
+ print(f"❌ Erreur lors du chargement depuis Hugging Face. Le dépôt '{repo_id}' existe-t-il ? : {e}")
104
+ return None, None
105
+
106
+ return model, tokenizer
107
+
108
+ def run_inference(model, tokenizer):
109
+ """Effectue l'inférence (génération de texte) avec le modèle chargé."""
110
+ print("\n--- TEST D'INFÉRENCE ---")
111
+
112
+ # 0. Vérification de l'environnement
113
+ # Utiliser la carte graphique si elle est disponible
114
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
115
+ model.to(device)
116
+ model.eval()
117
+
118
+ # 1. Définir le prompt
119
+ prompt = "Question: Qui est Clem ?\nRéponse:"
120
+ print(f"Prompt d'entrée : {prompt}")
121
+
122
+ # 2. Tokenisation
123
+ inputs = tokenizer(prompt, return_tensors="pt").to(device)
124
+
125
+ # 3. Génération de la réponse
126
+ with torch.no_grad():
127
+ output_tokens = model.generate(
128
+ **inputs,
129
+ max_length=150, # Limite de longueur de la réponse
130
+ num_return_sequences=1,
131
+ do_sample=True,
132
+ top_k=50,
133
+ top_p=0.95,
134
+ temperature=0.7,
135
+ pad_token_id=tokenizer.pad_token_id
136
+ )
137
+
138
+ # 4. Décodage et affichage
139
+ # skip_special_tokens=False pour voir les balises de fin de séquence (</s>)
140
+ response = tokenizer.decode(output_tokens[0], skip_special_tokens=False)
141
+ print(f"\nRéponse générée :\n{response}")
142
+ print("-------------------------")
143
+
144
+
145
+ # --- EXECUTION PRINCIPALE ---
146
+ if __name__ == "__main__":
147
+ model, tokenizer = load_model_and_tokenizer(MODEL_REPO)
148
+
149
+ if model and tokenizer:
150
+ run_inference(model, tokenizer)
151
+ print("\n✅ Test d'inférence terminé.")
152
+ else:
153
+ print("\n❌ Impossible de lancer l'inférence. Vérifiez le nom du dépôt Hugging Face.")
154
+ ```