HemanM commited on
Commit
0a6b186
Β·
verified Β·
1 Parent(s): 4ecef43

Update inference.py

Browse files
Files changed (1) hide show
  1. inference.py +17 -21
inference.py CHANGED
@@ -1,6 +1,13 @@
1
  # inference.py
2
 
 
 
 
3
  import torch
 
 
 
 
4
  import torch.nn.functional as F
5
  from transformers import AutoTokenizer
6
  from evo_model import EvoTransformerV22
@@ -11,23 +18,16 @@ from evo_architecture import (
11
  save_best_genome,
12
  load_best_genome
13
  )
14
- import random
15
- import csv
16
- import os
17
- import psutil
18
- import platform
19
- import GPUtil
20
  import openai
21
- import pandas as pd
22
 
23
- # πŸ” Load OpenAI key
24
  openai.api_key = os.getenv("OPENAI_API_KEY", "sk-...")
25
 
26
- # βš™οΈ Runtime setup
27
  tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
28
  device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
29
 
30
- # πŸ” Mutable model & config
31
  current_config = load_best_genome()
32
  model = build_model_from_config(current_config).to(device)
33
  model.eval()
@@ -50,7 +50,7 @@ def evo_chat_predict(history, question, options):
50
  "context_used": question
51
  }
52
 
53
- # πŸ€– GPT comparison
54
  def get_gpt_response(prompt):
55
  try:
56
  client = openai.OpenAI()
@@ -62,7 +62,7 @@ def get_gpt_response(prompt):
62
  except Exception as e:
63
  return f"(GPT Error) {e}"
64
 
65
- # πŸ“Š Evo stats
66
  def get_model_config():
67
  return {
68
  "num_layers": current_config.get("num_layers", "?"),
@@ -96,7 +96,7 @@ def get_system_stats():
96
  "platform": platform.platform()
97
  }
98
 
99
- # πŸ” Retrain from feedback
100
  def retrain_from_feedback_csv():
101
  global current_config, model
102
 
@@ -104,16 +104,13 @@ def retrain_from_feedback_csv():
104
  return "⚠️ No feedback log found."
105
 
106
  df = pd.read_csv(FEEDBACK_LOG)
107
-
108
- # Validate votes
109
- if df.empty or "vote" not in df.columns or df["vote"].dropna().empty:
110
  return "⚠️ No usable feedback data. Please vote on Evo or GPT."
111
 
112
  df = df[df["vote"].isin(["Evo", "GPT"])]
113
  if df.empty:
114
  return "⚠️ No usable feedback data. Please vote on Evo or GPT."
115
 
116
- # Prepare training data
117
  data = []
118
  for _, row in df.iterrows():
119
  label = 1 if row["vote"] == "Evo" else 0
@@ -123,13 +120,12 @@ def retrain_from_feedback_csv():
123
  if not data:
124
  return "⚠️ No usable feedback data."
125
 
126
- # Mutate config
127
  new_config = mutate_genome(current_config)
128
  model = build_model_from_config(new_config).to(device)
129
  current_config = new_config
130
  log_genome(new_config)
131
 
132
- # Fine-tune model
133
  model.train()
134
  optimizer = torch.optim.Adam(model.parameters(), lr=1e-4)
135
  for epoch in range(3):
@@ -148,7 +144,7 @@ def retrain_from_feedback_csv():
148
  save_best_genome({**new_config, "accuracy": "Live-Finetuned"})
149
  return f"βœ… Evo retrained on {len(data)} feedback entries."
150
 
151
- # πŸ”„ Reload model
152
  def load_model(force_reload=False):
153
  global model
154
- model.eval()
 
1
  # inference.py
2
 
3
+ import os
4
+ import csv
5
+ import random
6
  import torch
7
+ import pandas as pd
8
+ import psutil
9
+ import platform
10
+ import GPUtil
11
  import torch.nn.functional as F
12
  from transformers import AutoTokenizer
13
  from evo_model import EvoTransformerV22
 
18
  save_best_genome,
19
  load_best_genome
20
  )
 
 
 
 
 
 
21
  import openai
 
22
 
23
+ # πŸ” API Key
24
  openai.api_key = os.getenv("OPENAI_API_KEY", "sk-...")
25
 
26
+ # πŸ“¦ Setup
27
  tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
28
  device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
29
 
30
+ # πŸ” Current genome state
31
  current_config = load_best_genome()
32
  model = build_model_from_config(current_config).to(device)
33
  model.eval()
 
50
  "context_used": question
51
  }
52
 
53
+ # πŸ€– GPT response
54
  def get_gpt_response(prompt):
55
  try:
56
  client = openai.OpenAI()
 
62
  except Exception as e:
63
  return f"(GPT Error) {e}"
64
 
65
+ # πŸ“Š Genome stats
66
  def get_model_config():
67
  return {
68
  "num_layers": current_config.get("num_layers", "?"),
 
96
  "platform": platform.platform()
97
  }
98
 
99
+ # πŸ” Evo retrain logic
100
  def retrain_from_feedback_csv():
101
  global current_config, model
102
 
 
104
  return "⚠️ No feedback log found."
105
 
106
  df = pd.read_csv(FEEDBACK_LOG)
107
+ if df.empty or "vote" not in df.columns:
 
 
108
  return "⚠️ No usable feedback data. Please vote on Evo or GPT."
109
 
110
  df = df[df["vote"].isin(["Evo", "GPT"])]
111
  if df.empty:
112
  return "⚠️ No usable feedback data. Please vote on Evo or GPT."
113
 
 
114
  data = []
115
  for _, row in df.iterrows():
116
  label = 1 if row["vote"] == "Evo" else 0
 
120
  if not data:
121
  return "⚠️ No usable feedback data."
122
 
 
123
  new_config = mutate_genome(current_config)
124
  model = build_model_from_config(new_config).to(device)
125
  current_config = new_config
126
  log_genome(new_config)
127
 
128
+ # πŸ” Fine-tune
129
  model.train()
130
  optimizer = torch.optim.Adam(model.parameters(), lr=1e-4)
131
  for epoch in range(3):
 
144
  save_best_genome({**new_config, "accuracy": "Live-Finetuned"})
145
  return f"βœ… Evo retrained on {len(data)} feedback entries."
146
 
147
+ # πŸ”„ Reload trigger
148
  def load_model(force_reload=False):
149
  global model
150
+ model.eval()