File size: 2,798 Bytes
0be77ef
2ad7d0e
c67165f
0be77ef
 
8450d10
0be77ef
b861e8e
0be77ef
68934cc
b861e8e
0be77ef
 
 
 
 
 
 
 
68934cc
0be77ef
68934cc
 
0be77ef
68934cc
0be77ef
 
 
 
 
68934cc
0be77ef
 
 
 
 
 
b861e8e
0be77ef
 
b861e8e
 
0be77ef
 
 
 
 
68934cc
0be77ef
 
b861e8e
2ad7d0e
0be77ef
 
ce7f881
 
0be77ef
 
6842aeb
0be77ef
 
 
 
76d9193
68934cc
 
0be77ef
 
 
 
68934cc
0be77ef
 
 
76d9193
eeda69b
68934cc
0be77ef
c67165f
0be77ef
 
 
 
68934cc
eeda69b
2ad7d0e
68934cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# app.py
import gradio as gr
import json
import csv
import io
from evo_transformer import EvoTransformer
from plot import plot_radar_chart

# Global instance
evo = EvoTransformer()

def evolve_model(num_generations):
    evo.reset()  # reset before evolution
    evo.evolve(num_generations)
    final_config = evo.config
    history = evo.get_history()
    evaluation = evo.evaluate()

    # Radar Chart
    try:
        radar_img = plot_radar_chart(final_config)
    except Exception as e:
        print("Radar chart error:", e)
        radar_img = None

    # Prepare history display
    history_cards = []
    for i, h in enumerate(history):
        text = f"Gen {i + 1} Config: {h}"
        history_cards.append(text)

    # Prepare CSV and JSON
    csv_file = io.StringIO()
    csv_writer = csv.DictWriter(csv_file, fieldnames=history[0].keys())
    csv_writer.writeheader()
    csv_writer.writerows(history)
    csv_bytes = io.BytesIO(csv_file.getvalue().encode())

    json_file = io.StringIO(json.dumps(history, indent=2))
    json_bytes = io.BytesIO(json_file.getvalue().encode())

    return (
        f"{evaluation['accuracy']:.2f}%",
        f"{evaluation['params']:.2f}M params",
        str(final_config),
        radar_img,
        None,  # placeholder for future diagram
        *history_cards,
        ("evo_history.csv", csv_bytes),
        ("evo_history.json", json_bytes)
    )

with gr.Blocks(title="🧬 EvoTransformer – Evolving Transformer Architectures") as demo:
    gr.Markdown("## 🧬 EvoTransformer – Evolving Transformer Architectures\nSimulate trait mutation and adaptive architecture generation.")

    with gr.Row():
        num_generations = gr.Slider(minimum=1, maximum=10, value=3, label="Number of Generations", step=1)
        evolve_btn = gr.Button("🧬 Evolve Architecture")

    with gr.Row():
        accuracy_text = gr.Textbox(label="Simulated Accuracy")
        param_text = gr.Textbox(label="Estimated Parameters")
        config_text = gr.Textbox(label="Current Config Summary")

    gr.Markdown("## 🧬 Evolution History")

    radar_output = gr.Image(label="Final Generation Trait Radar", type="pil", interactive=False)
    diagram_output = gr.Image(label="Illustrative Transformer Structure", visible=False)

    history_boxes = [gr.Textbox(label=f"Gen {i+1} Config") for i in range(10)]

    with gr.Accordion("Downloadable Files", open=True):
        csv_out = gr.File(label="Download CSV History")
        json_out = gr.File(label="Download JSON History")

    evolve_btn.click(
        fn=evolve_model,
        inputs=[num_generations],
        outputs=[
            accuracy_text, param_text, config_text,
            radar_output, diagram_output,
            *history_boxes,
            csv_out, json_out
        ]
    )

demo.launch()