udaypratap commited on
Commit
49884e0
·
verified ·
1 Parent(s): 79a77a1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +10 -6
app.py CHANGED
@@ -2,20 +2,21 @@ import gradio as gr
2
  import torch
3
  import torch.nn.functional as F
4
  from transformers import AutoTokenizer, AutoModelForMultipleChoice
 
5
 
6
- # 1. Load fine-tuned model and tokenizer from Hugging Face Hub
7
  MODEL_ID = "udaypratap/smart-mcq-solver"
8
 
9
  tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
10
  model = AutoModelForMultipleChoice.from_pretrained(MODEL_ID)
11
  model.eval()
12
 
13
- # 2. Define prediction function
 
14
  def predict_mcq(prompt, option_a, option_b, option_c, option_d, option_e):
15
  options = [option_a, option_b, option_c, option_d, option_e]
16
  labels = ["A", "B", "C", "D", "E"]
17
 
18
- # Format inputs for AutoModelForMultipleChoice
19
  first_sentences = [prompt] * 5
20
  second_sentences = options
21
 
@@ -28,7 +29,11 @@ def predict_mcq(prompt, option_a, option_b, option_c, option_d, option_e):
28
  return_tensors="pt"
29
  )
30
 
31
- # Reshape input tensors for multiple choice model: (batch_size=1, num_choices=5, seq_len)
 
 
 
 
32
  input_ids = inputs["input_ids"].unsqueeze(0)
33
  attention_mask = inputs["attention_mask"].unsqueeze(0)
34
 
@@ -37,13 +42,12 @@ def predict_mcq(prompt, option_a, option_b, option_c, option_d, option_e):
37
  logits = outputs.logits.squeeze(0)
38
  probs = F.softmax(logits, dim=-1)
39
 
40
- # Get top 3 predicted choices
41
  top3_indices = torch.topk(probs, k=3).indices.tolist()
42
  top3_choices = [f"{labels[idx]} ({probs[idx].item():.2%})" for idx in top3_indices]
43
 
44
  return f"Top 3 Predicted Answers: {', '.join(top3_choices)}"
45
 
46
- # 3. Create Gradio Interface
47
  demo = gr.Interface(
48
  fn=predict_mcq,
49
  inputs=[
 
2
  import torch
3
  import torch.nn.functional as F
4
  from transformers import AutoTokenizer, AutoModelForMultipleChoice
5
+ import spaces # <--- Added spaces import
6
 
7
+ # Load fine-tuned model and tokenizer from Hugging Face Hub
8
  MODEL_ID = "udaypratap/smart-mcq-solver"
9
 
10
  tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
11
  model = AutoModelForMultipleChoice.from_pretrained(MODEL_ID)
12
  model.eval()
13
 
14
+ # Add the @spaces.GPU decorator right here
15
+ @spaces.GPU
16
  def predict_mcq(prompt, option_a, option_b, option_c, option_d, option_e):
17
  options = [option_a, option_b, option_c, option_d, option_e]
18
  labels = ["A", "B", "C", "D", "E"]
19
 
 
20
  first_sentences = [prompt] * 5
21
  second_sentences = options
22
 
 
29
  return_tensors="pt"
30
  )
31
 
32
+ # Move inputs and model to the GPU
33
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
34
+ model.to(device)
35
+ inputs = {k: v.to(device) for k, v in inputs.items()}
36
+
37
  input_ids = inputs["input_ids"].unsqueeze(0)
38
  attention_mask = inputs["attention_mask"].unsqueeze(0)
39
 
 
42
  logits = outputs.logits.squeeze(0)
43
  probs = F.softmax(logits, dim=-1)
44
 
 
45
  top3_indices = torch.topk(probs, k=3).indices.tolist()
46
  top3_choices = [f"{labels[idx]} ({probs[idx].item():.2%})" for idx in top3_indices]
47
 
48
  return f"Top 3 Predicted Answers: {', '.join(top3_choices)}"
49
 
50
+ # Create Gradio Interface
51
  demo = gr.Interface(
52
  fn=predict_mcq,
53
  inputs=[