Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -1,10 +1,11 @@
|
|
1 |
#testing bloom1b training
|
2 |
|
|
|
3 |
import gradio as gr
|
4 |
import os
|
5 |
-
from transformers import AutoModelForCausalLM, AutoTokenizer, Trainer, TrainingArguments,
|
6 |
from datasets import load_dataset
|
7 |
-
from huggingface_hub import HfFolder
|
8 |
|
9 |
# Récupérer le token depuis les variables d'environnement
|
10 |
hf_token = os.getenv("MisterAI_bigscience_bloom_560m")
|
@@ -28,23 +29,15 @@ def generate_response(input_text):
|
|
28 |
return response
|
29 |
|
30 |
# Fonction pour le fine-tuning
|
31 |
-
def fine_tune_model(dataset_path, epochs, batch_size
|
32 |
# Chargement du dataset
|
33 |
if dataset_path.startswith("https://huggingface.co/datasets/"):
|
34 |
-
dataset = load_dataset(
|
35 |
else:
|
36 |
dataset = load_dataset('json', data_files={'train': dataset_path})
|
37 |
|
38 |
# Préparation des données
|
39 |
-
|
40 |
-
inputs = [f"{input_columns[0]}: {examples[input_columns[0]][i]}\n{output_column}: {examples[output_column][i]}" for i in range(len(examples[input_columns[0]]))]
|
41 |
-
model_inputs = tokenizer(inputs, max_length=512, truncation=True, padding="max_length")
|
42 |
-
return model_inputs
|
43 |
-
|
44 |
-
tokenized_dataset = dataset['train'].map(preprocess_function, batched=True)
|
45 |
-
|
46 |
-
# Configuration du Data Collator
|
47 |
-
data_collator = DataCollatorForSeq2Seq(tokenizer=tokenizer, model=model)
|
48 |
|
49 |
# Configuration de l'entraînement
|
50 |
training_args = TrainingArguments(
|
@@ -63,12 +56,24 @@ def fine_tune_model(dataset_path, epochs, batch_size, input_columns, output_colu
|
|
63 |
model=model,
|
64 |
args=training_args,
|
65 |
data_collator=data_collator,
|
66 |
-
train_dataset=
|
67 |
)
|
68 |
|
69 |
# Lancement de l'entraînement
|
70 |
trainer.train()
|
71 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
return "Fine-tuning terminé et modèle sauvegardé."
|
73 |
|
74 |
# Interface Gradio
|
@@ -87,15 +92,13 @@ with gr.Blocks() as demo:
|
|
87 |
dataset_path = gr.Textbox(label="Chemin du dataset")
|
88 |
epochs = gr.Number(label="Nombre d'époques", value=1)
|
89 |
batch_size = gr.Number(label="Taille du batch", value=2)
|
90 |
-
input_columns = gr.Textbox(label="Colonnes d'entrée (séparées par des virgules)", value="question")
|
91 |
-
output_column = gr.Textbox(label="Colonne de sortie", value="chosen")
|
92 |
fine_tune_button = gr.Button("Lancer le Fine-Tuning")
|
93 |
|
94 |
fine_tune_output = gr.Textbox(label="État du Fine-Tuning")
|
95 |
|
96 |
fine_tune_button.click(
|
97 |
fine_tune_model,
|
98 |
-
inputs=[dataset_path, epochs, batch_size
|
99 |
outputs=fine_tune_output
|
100 |
)
|
101 |
|
@@ -103,3 +106,6 @@ with gr.Blocks() as demo:
|
|
103 |
if __name__ == "__main__":
|
104 |
demo.launch()
|
105 |
|
|
|
|
|
|
|
|
1 |
#testing bloom1b training
|
2 |
|
3 |
+
|
4 |
import gradio as gr
|
5 |
import os
|
6 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer, Trainer, TrainingArguments, DataCollatorForLanguageModeling
|
7 |
from datasets import load_dataset
|
8 |
+
from huggingface_hub import HfApi, HfFolder
|
9 |
|
10 |
# Récupérer le token depuis les variables d'environnement
|
11 |
hf_token = os.getenv("MisterAI_bigscience_bloom_560m")
|
|
|
29 |
return response
|
30 |
|
31 |
# Fonction pour le fine-tuning
|
32 |
+
def fine_tune_model(dataset_path, epochs, batch_size):
|
33 |
# Chargement du dataset
|
34 |
if dataset_path.startswith("https://huggingface.co/datasets/"):
|
35 |
+
dataset = load_dataset('json', data_files={'train': dataset_path})
|
36 |
else:
|
37 |
dataset = load_dataset('json', data_files={'train': dataset_path})
|
38 |
|
39 |
# Préparation des données
|
40 |
+
data_collator = DataCollatorForLanguageModeling(tokenizer=tokenizer, mlm=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
|
42 |
# Configuration de l'entraînement
|
43 |
training_args = TrainingArguments(
|
|
|
56 |
model=model,
|
57 |
args=training_args,
|
58 |
data_collator=data_collator,
|
59 |
+
train_dataset=dataset['train'],
|
60 |
)
|
61 |
|
62 |
# Lancement de l'entraînement
|
63 |
trainer.train()
|
64 |
|
65 |
+
# Sauvegarde du modèle avec un préfixe
|
66 |
+
trainer.save_model(f"./FT01_{model_name.split('/')[-1]}")
|
67 |
+
tokenizer.save_pretrained(f"./FT01_{model_name.split('/')[-1]}")
|
68 |
+
|
69 |
+
# Push vers Hugging Face Hub
|
70 |
+
api = HfApi()
|
71 |
+
api.upload_folder(
|
72 |
+
folder_path=f"./FT01_{model_name.split('/')[-1]}",
|
73 |
+
repo_id=model_name,
|
74 |
+
repo_type="model"
|
75 |
+
)
|
76 |
+
|
77 |
return "Fine-tuning terminé et modèle sauvegardé."
|
78 |
|
79 |
# Interface Gradio
|
|
|
92 |
dataset_path = gr.Textbox(label="Chemin du dataset")
|
93 |
epochs = gr.Number(label="Nombre d'époques", value=1)
|
94 |
batch_size = gr.Number(label="Taille du batch", value=2)
|
|
|
|
|
95 |
fine_tune_button = gr.Button("Lancer le Fine-Tuning")
|
96 |
|
97 |
fine_tune_output = gr.Textbox(label="État du Fine-Tuning")
|
98 |
|
99 |
fine_tune_button.click(
|
100 |
fine_tune_model,
|
101 |
+
inputs=[dataset_path, epochs, batch_size],
|
102 |
outputs=fine_tune_output
|
103 |
)
|
104 |
|
|
|
106 |
if __name__ == "__main__":
|
107 |
demo.launch()
|
108 |
|
109 |
+
|
110 |
+
|
111 |
+
|