Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import torch | |
| from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline | |
| import os | |
| MODEL_DIR = "./mistral-7b-brvm-finetuned" | |
| # Fonction d’entraînement (appelle ton script de fine-tuning) | |
| def train_model(): | |
| os.system("python finetune.py") # tu mets ton code d'entraînement dans finetune.py | |
| return "✅ Entraînement terminé ! Le modèle est sauvegardé dans " + MODEL_DIR | |
| # Chargement du modèle (fine-tuné si dispo, sinon base) | |
| def load_model(): | |
| model_name = MODEL_DIR if os.path.exists(MODEL_DIR) else "mistralai/Mistral-7B-Instruct-v0.3" | |
| tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True) | |
| model = AutoModelForCausalLM.from_pretrained( | |
| model_name, | |
| device_map="auto", | |
| torch_dtype=torch.bfloat16 if torch.cuda.is_available() else torch.float32, | |
| trust_remote_code=True, | |
| ) | |
| pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, device=0 if torch.cuda.is_available() else -1) | |
| return pipe | |
| # On charge le pipeline une fois au démarrage | |
| pipe = load_model() | |
| # Fonction de test du modèle | |
| def chat(prompt): | |
| outputs = pipe(prompt, max_new_tokens=200, do_sample=True, temperature=0.7, top_p=0.9) | |
| return outputs[0]["generated_text"] | |
| # Interface Gradio | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# 🐟 BRVM Finetuner (Mistral-7B)") | |
| with gr.Tab("🚀 Entraînement"): | |
| train_btn = gr.Button("Lancer l’entraînement") | |
| train_output = gr.Textbox(label="Logs") | |
| train_btn.click(fn=train_model, outputs=train_output) | |
| with gr.Tab("💬 Tester le modèle"): | |
| input_text = gr.Textbox(label="Votre question :", placeholder="Posez une question...") | |
| output_text = gr.Textbox(label="Réponse du modèle") | |
| submit_btn = gr.Button("Envoyer") | |
| submit_btn.click(fn=chat, inputs=input_text, outputs=output_text) | |
| demo.launch() | |