Rajut commited on
Commit
6dd6063
·
verified ·
1 Parent(s): 208accd

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +10 -20
app.py CHANGED
@@ -5,39 +5,35 @@ import torch
5
  import os
6
  import gradio as gr
7
 
8
- # Load pre-trained GPT-2 model and tokenizer
 
9
  model_name = "gpt2"
10
  model = GPT2LMHeadModel.from_pretrained(model_name)
11
  tokenizer = GPT2Tokenizer.from_pretrained(model_name)
12
 
13
- # Load your preprocessed data
14
  with open("normans_wikipedia.txt", "r", encoding="utf-8") as file:
15
  data = file.read()
16
 
17
- # Specify the output directory for fine-tuned model
18
  output_dir = "./normans_fine-tuned"
19
  os.makedirs(output_dir, exist_ok=True)
20
 
21
- # Tokenize and encode the data
22
- input_ids = tokenizer.encode(data, return_tensors="pt")
23
 
24
- # Create a dataset and data collator
25
  dataset = TextDataset(
26
  tokenizer=tokenizer,
27
  file_path="normans_wikipedia.txt",
28
- block_size=512, # Adjust this value based on your requirements
29
  )
30
  data_collator = DataCollatorForLanguageModeling(
31
  tokenizer=tokenizer,
32
  mlm=False
33
  )
34
 
35
- # Fine-tune the model
36
- # Fine-tune the model
37
  training_args = TrainingArguments(
38
  output_dir=output_dir,
39
  overwrite_output_dir=True,
40
- num_train_epochs=10,
41
  per_device_train_batch_size=2,
42
  save_steps=10_000,
43
  save_total_limit=2,
@@ -54,25 +50,21 @@ trainer = Trainer(
54
  train_dataset=dataset,
55
  )
56
 
57
- # Training loop
58
  try:
59
  trainer.train()
60
  except KeyboardInterrupt:
61
  print("Training interrupted by user.")
62
 
63
- # Save the fine-tuned model
64
  model.save_pretrained(output_dir)
65
  tokenizer.save_pretrained(output_dir)
66
-
67
- # Load the fine-tuned model
68
  fine_tuned_model = GPT2LMHeadModel.from_pretrained(output_dir)
69
 
70
- # Function to generate responses from the fine-tuned model
71
  def generate_response(user_input):
72
- # Tokenize and encode user input
73
  user_input_ids = tokenizer.encode(user_input, return_tensors="pt")
74
 
75
- # Generate response from the fine-tuned model
76
  generated_output = fine_tuned_model.generate(
77
  user_input_ids,
78
  max_length=100,
@@ -83,12 +75,11 @@ def generate_response(user_input):
83
  temperature=0.9
84
  )
85
 
86
- # Decode and return the generated response
87
  chatbot_response = tokenizer.decode(
88
  generated_output[0], skip_special_tokens=True)
89
  return "Chatbot: " + chatbot_response
90
 
91
- # Create a Gradio interface
92
  iface = gr.Interface(
93
  fn=generate_response,
94
  inputs="text",
@@ -96,5 +87,4 @@ iface = gr.Interface(
96
  live=True
97
  )
98
 
99
- # Launch the Gradio interface
100
  iface.launch()
 
5
  import os
6
  import gradio as gr
7
 
8
+
9
+
10
  model_name = "gpt2"
11
  model = GPT2LMHeadModel.from_pretrained(model_name)
12
  tokenizer = GPT2Tokenizer.from_pretrained(model_name)
13
 
14
+
15
  with open("normans_wikipedia.txt", "r", encoding="utf-8") as file:
16
  data = file.read()
17
 
 
18
  output_dir = "./normans_fine-tuned"
19
  os.makedirs(output_dir, exist_ok=True)
20
 
 
 
21
 
22
+ input_ids = tokenizer.encode(data, return_tensors="pt")
23
  dataset = TextDataset(
24
  tokenizer=tokenizer,
25
  file_path="normans_wikipedia.txt",
26
+ block_size=512,
27
  )
28
  data_collator = DataCollatorForLanguageModeling(
29
  tokenizer=tokenizer,
30
  mlm=False
31
  )
32
 
 
 
33
  training_args = TrainingArguments(
34
  output_dir=output_dir,
35
  overwrite_output_dir=True,
36
+ num_train_epochs=20,
37
  per_device_train_batch_size=2,
38
  save_steps=10_000,
39
  save_total_limit=2,
 
50
  train_dataset=dataset,
51
  )
52
 
53
+
54
  try:
55
  trainer.train()
56
  except KeyboardInterrupt:
57
  print("Training interrupted by user.")
58
 
59
+
60
  model.save_pretrained(output_dir)
61
  tokenizer.save_pretrained(output_dir)
 
 
62
  fine_tuned_model = GPT2LMHeadModel.from_pretrained(output_dir)
63
 
64
+
65
  def generate_response(user_input):
 
66
  user_input_ids = tokenizer.encode(user_input, return_tensors="pt")
67
 
 
68
  generated_output = fine_tuned_model.generate(
69
  user_input_ids,
70
  max_length=100,
 
75
  temperature=0.9
76
  )
77
 
 
78
  chatbot_response = tokenizer.decode(
79
  generated_output[0], skip_special_tokens=True)
80
  return "Chatbot: " + chatbot_response
81
 
82
+
83
  iface = gr.Interface(
84
  fn=generate_response,
85
  inputs="text",
 
87
  live=True
88
  )
89
 
 
90
  iface.launch()