MisterAI commited on
Commit
2a3e81b
·
verified ·
1 Parent(s): c7eb30c

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +97 -0
app.py ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #testing bloom1b training
2
+
3
+ import gradio as gr
4
+ import os
5
+ from transformers import AutoModelForCausalLM, AutoTokenizer, Trainer, TrainingArguments, DataCollatorForLanguageModeling
6
+ from datasets import load_dataset
7
+ from huggingface_hub import HfApi, HfFolder
8
+
9
+ # Chargement du modèle et du tokenizer
10
+ model_name = "MisterAI/bigscience_bloom-560m"
11
+ model = AutoModelForCausalLM.from_pretrained(model_name)
12
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
13
+
14
+ # Fonction pour générer une réponse
15
+ def generate_response(input_text):
16
+ inputs = tokenizer(input_text, return_tensors="pt")
17
+ outputs = model.generate(**inputs, max_length=100)
18
+ response = tokenizer.decode(outputs[0], skip_special_tokens=True)
19
+ return response
20
+
21
+ # Fonction pour le fine-tuning
22
+ def fine_tune_model(dataset_path, epochs, batch_size):
23
+ # Chargement du dataset
24
+ if dataset_path.startswith("huggingface://"):
25
+ dataset = load_dataset(dataset_path.replace("huggingface://", ""))
26
+ else:
27
+ dataset = load_dataset('text', data_files={'train': dataset_path})
28
+
29
+ # Préparation des données
30
+ data_collator = DataCollatorForLanguageModeling(tokenizer=tokenizer, mlm=False)
31
+
32
+ # Configuration de l'entraînement
33
+ training_args = TrainingArguments(
34
+ output_dir="./results",
35
+ num_train_epochs=epochs,
36
+ per_device_train_batch_size=batch_size,
37
+ save_steps=10_000,
38
+ save_total_limit=2,
39
+ push_to_hub=True,
40
+ hub_model_id=model_name,
41
+ hub_strategy="checkpoint",
42
+ hub_token=HfFolder.get_token(),
43
+ )
44
+
45
+ trainer = Trainer(
46
+ model=model,
47
+ args=training_args,
48
+ data_collator=data_collator,
49
+ train_dataset=dataset['train'],
50
+ )
51
+
52
+ # Lancement de l'entraînement
53
+ trainer.train()
54
+
55
+ # Sauvegarde du modèle avec un préfixe
56
+ trainer.save_model(f"./FT01_{model_name.split('/')[-1]}")
57
+ tokenizer.save_pretrained(f"./FT01_{model_name.split('/')[-1]}")
58
+
59
+ # Push vers Hugging Face Hub
60
+ api = HfApi()
61
+ api.upload_folder(
62
+ folder_path=f"./FT01_{model_name.split('/')[-1]}",
63
+ repo_id=model_name,
64
+ repo_type="model"
65
+ )
66
+
67
+ return "Fine-tuning terminé et modèle sauvegardé."
68
+
69
+ # Interface Gradio
70
+ with gr.Blocks() as demo:
71
+ with gr.Tab("Chatbot"):
72
+ chat_interface = gr.Interface(
73
+ fn=generate_response,
74
+ inputs="text",
75
+ outputs="text",
76
+ title="Chat avec le modèle",
77
+ description="Entrez votre message pour obtenir une réponse du modèle"
78
+ )
79
+
80
+ with gr.Tab("Fine-Tuning"):
81
+ with gr.Row():
82
+ dataset_path = gr.Textbox(label="Chemin du dataset")
83
+ epochs = gr.Number(label="Nombre d'époques", value=1)
84
+ batch_size = gr.Number(label="Taille du batch", value=2)
85
+ fine_tune_button = gr.Button("Lancer le Fine-Tuning")
86
+
87
+ fine_tune_output = gr.Textbox(label="État du Fine-Tuning")
88
+
89
+ fine_tune_button.click(
90
+ fine_tune_model,
91
+ inputs=[dataset_path, epochs, batch_size],
92
+ outputs=fine_tune_output
93
+ )
94
+
95
+ # Lancement de la démo
96
+ if __name__ == "__main__":
97
+ demo.launch()