HemanM commited on
Commit
b861e8e
·
verified ·
1 Parent(s): fe5756c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +58 -98
app.py CHANGED
@@ -1,115 +1,75 @@
1
  import gradio as gr
2
- from evo_transformer import EvoTransformer
3
- import pandas as pd
4
  import json
5
- import tempfile
6
- import matplotlib.pyplot as plt
7
- import numpy as np
8
-
9
- model = EvoTransformer()
10
-
11
- def plot_radar(history):
12
- traits = ["layers", "attention_heads", "ffn_dim", "dropout"]
13
- labels = traits
14
- last = history[-1]
15
- values = [
16
- last["layers"] / 12,
17
- last["attention_heads"] / 12,
18
- last["ffn_dim"] / 2048,
19
- last["dropout"] / 0.5,
20
- ]
21
- angles = np.linspace(0, 2 * np.pi, len(traits), endpoint=False).tolist()
22
- values += values[:1]
23
- angles += angles[:1]
24
-
25
- fig, ax = plt.subplots(figsize=(5,5), subplot_kw=dict(polar=True))
26
- ax.plot(angles, values, "o-", linewidth=2)
27
- ax.fill(angles, values, alpha=0.25)
28
- ax.set_thetagrids(np.degrees(angles[:-1]), labels)
29
- ax.set_title("Final Generation Trait Radar")
30
- ax.grid(True)
31
-
32
- img_path = tempfile.NamedTemporaryFile(suffix=".png", delete=False).name
33
- plt.savefig(img_path)
34
- plt.close(fig)
35
- return img_path
36
-
37
- def evolve_and_display(gens):
38
- try:
39
- model.evolve(generations=gens)
40
- history = model.get_history()
41
- eval_result = model.evaluate()
42
-
43
- summary = "\n".join([f"{k}: {v}" for k, v in history[-1].items()])
44
- history_txt = [json.dumps(h, indent=2) for h in history]
45
- while len(history_txt) < 10:
46
- history_txt.append("")
47
-
48
- # Save CSV and JSON
49
- df = pd.DataFrame(history)
50
- csv_path = tempfile.NamedTemporaryFile(suffix=".csv", delete=False).name
51
- json_path = tempfile.NamedTemporaryFile(suffix=".json", delete=False).name
52
- df.to_csv(csv_path, index=False)
53
- with open(json_path, "w") as jf:
54
- json.dump(history, jf, indent=2)
55
-
56
- radar_img = plot_radar(history)
57
-
58
- return (
59
- f"{eval_result['accuracy']*100:.2f}%",
60
- f"{eval_result['params']:.2f}M params",
61
- summary,
62
- *history_txt,
63
- radar_img,
64
- csv_path,
65
- json_path,
66
- )
67
- except Exception as e:
68
- print("🚨 ERROR during evolution:", str(e))
69
- import traceback
70
- traceback.print_exc()
71
-
72
- return (
73
- "Error", "Error", "Error",
74
- *["Error"] * 10,
75
- None, None, None
76
- )
77
 
78
- with gr.Blocks() as demo:
79
- gr.Markdown("# 🧬 EvoTransformer – Evolving Transformer Architectures")
80
- gr.Markdown("Simulate trait mutation and adaptive architecture generation.")
 
 
 
81
 
82
  with gr.Row():
83
- generations = gr.Slider(1, 10, value=3, step=1, label="Number of Generations")
84
- evolve_btn = gr.Button("🧬 Evolve Architecture")
85
 
86
  with gr.Row():
87
- acc_out = gr.Text(label="Simulated Accuracy")
88
- param_out = gr.Text(label="Estimated Parameters")
89
 
90
  summary_out = gr.Textbox(label="Current Config Summary", lines=5)
91
 
92
- with gr.Accordion("🧬 Evolution History", open=False):
93
- hist_outputs = [gr.Textbox(label=f"Gen {i+1} Config", lines=4) for i in range(10)]
 
94
 
95
- radar_plot = gr.Image(label="Final Generation Trait Radar")
 
96
 
97
  with gr.Row():
98
- csv_out = gr.File(label="Download CSV History")
99
- json_out = gr.File(label="Download JSON History")
100
 
101
  evolve_btn.click(
102
- evolve_and_display,
103
- inputs=[generations],
104
- outputs=[
105
- acc_out,
106
- param_out,
107
- summary_out,
108
- *hist_outputs,
109
- radar_plot,
110
- csv_out,
111
- json_out
112
- ],
113
  )
114
 
115
- demo.launch()
 
 
1
  import gradio as gr
 
 
2
  import json
3
+ import pandas as pd
4
+ from evo_transformer import EvoTransformer
5
+ from plots import plot_radar
6
+ from diagrams import draw_transformer_diagram
7
+
8
+ # Initialize EvoTransformer
9
+ evo = EvoTransformer()
10
+
11
+ def evolve_transformer(generations):
12
+ evo = EvoTransformer()
13
+ evo.evolve(generations)
14
+ history = evo.get_history()
15
+ final_config = history[-1]
16
+ eval_result = evo.evaluate()
17
+
18
+ radar_path = plot_radar(final_config)
19
+ diagram_path = draw_transformer_diagram()
20
+
21
+ csv_path = "history.csv"
22
+ json_path = "history.json"
23
+ pd.DataFrame(history).to_csv(csv_path, index=False)
24
+ with open(json_path, "w") as f:
25
+ json.dump(history, f, indent=2)
26
+
27
+ # Format config display
28
+ summary = "\n".join(f"{k}: {v}" for k, v in final_config.items())
29
+
30
+ return (
31
+ f"{eval_result['accuracy']*100:.2f}%",
32
+ f"{eval_result['params']:.2f}M params",
33
+ summary,
34
+ radar_path,
35
+ diagram_path,
36
+ csv_path,
37
+ json_path
38
+ )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
 
40
+ # Gradio Interface
41
+ with gr.Blocks(theme=gr.themes.Monochrome()) as demo:
42
+ gr.Markdown("""
43
+ # 🧬 EvoTransformer – Evolving Transformer Architectures
44
+ Simulate trait mutation and adaptive architecture generation.
45
+ """)
46
 
47
  with gr.Row():
48
+ gens = gr.Slider(1, 10, value=3, step=1, label="Number of Generations")
49
+ evolve_btn = gr.Button("\ud83e\uddec Evolve Architecture")
50
 
51
  with gr.Row():
52
+ acc_out = gr.Textbox(label="Simulated Accuracy")
53
+ param_out = gr.Textbox(label="Estimated Parameters")
54
 
55
  summary_out = gr.Textbox(label="Current Config Summary", lines=5)
56
 
57
+ gr.Markdown("""
58
+ ## 🧬 Evolution History
59
+ """)
60
 
61
+ radar_img = gr.Image(label="Final Generation Trait Radar")
62
+ diagram_img = gr.Image(label="Transformer Architecture")
63
 
64
  with gr.Row():
65
+ csv_dl = gr.File(label="Download CSV History")
66
+ json_dl = gr.File(label="Download JSON History")
67
 
68
  evolve_btn.click(
69
+ fn=evolve_transformer,
70
+ inputs=[gens],
71
+ outputs=[acc_out, param_out, summary_out, radar_img, diagram_img, csv_dl, json_dl]
 
 
 
 
 
 
 
 
72
  )
73
 
74
+ if __name__ == "__main__":
75
+ demo.launch()