Spaces:
Sleeping
Sleeping
| # 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() | |