MisterAI commited on
Commit
dbff60b
·
verified ·
1 Parent(s): f53e75d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -17
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, DataCollatorForSeq2Seq
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, input_columns, output_column):
32
  # Chargement du dataset
33
  if dataset_path.startswith("https://huggingface.co/datasets/"):
34
- dataset = load_dataset(dataset_path.replace("https://huggingface.co/datasets/", ""))
35
  else:
36
  dataset = load_dataset('json', data_files={'train': dataset_path})
37
 
38
  # Préparation des données
39
- def preprocess_function(examples):
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=tokenized_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, input_columns, output_column],
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
+