File size: 1,601 Bytes
2ad7d0e
 
 
118680e
 
 
 
 
2ad7d0e
118680e
2ad7d0e
118680e
2ad7d0e
118680e
 
 
2ad7d0e
118680e
 
 
 
 
 
 
 
 
 
 
 
 
2ad7d0e
118680e
 
 
 
 
 
 
 
 
 
2ad7d0e
118680e
 
 
 
 
2ad7d0e
118680e
 
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
import gradio as gr
from evo_transformer import EvoTransformer

# Initialize global EvoTransformer object
evo = EvoTransformer()

# Define Gradio functions
def evolve_and_display(generations):
    evo.evolve(generations)
    latest_config = evo.config
    history = evo.get_history()
    evaluation = evo.evaluate()

    history_table = "\n".join(
        [f"Gen {i}: {cfg}" for i, cfg in enumerate(history[-generations:])]
    )

    return (
        f"### Final Evolved Configuration\n"
        f"**Layers**: {latest_config['layers']}  \n"
        f"**Attention Heads**: {latest_config['attention_heads']}  \n"
        f"**FFN Dimension**: {latest_config['ffn_dim']}  \n"
        f"**Dropout**: {latest_config['dropout']}  \n"
        f"**Memory**: {latest_config['memory']}  \n\n"
        f"### Evaluation\n"
        f"**Simulated Accuracy**: {evaluation['accuracy']}  \n"
        f"**Estimated Parameters**: {evaluation['params']}M  \n\n"
        f"### Trait History (last {generations} generations)\n"
        f"```\n{history_table}\n```"
    )

# Build Gradio Interface
with gr.Blocks(title="EvoTransformer Demo") as demo:
    gr.Markdown("# 🧬 EvoTransformer")
    gr.Markdown("Simulate in-training architectural evolution of a Transformer model.")
    
    with gr.Row():
        generations_slider = gr.Slider(1, 10, value=3, label="Generations to Evolve")
        evolve_btn = gr.Button("Evolve")
    
    output_box = gr.Markdown()

    evolve_btn.click(
        evolve_and_display,
        inputs=[generations_slider],
        outputs=[output_box],
    )

# Launch the app
demo.launch()