Allanatrix commited on
Commit
e310d9f
·
verified ·
1 Parent(s): bfbdbf6

Update App.py

Browse files
Files changed (1) hide show
  1. App.py +29 -27
App.py CHANGED
@@ -1,13 +1,11 @@
1
  import gradio as gr
2
  import json
3
  import pandas as pd
4
- import os
5
  from Engine import Engine
6
 
7
  def run_study(mode, benchmark_func, optimizers, dim, dataset, epochs, batch_size, lr, use_sa, sa_temp, sa_cooling_rate):
8
  # Ensure optimizers is a list
9
- if not isinstance(optimizers, list):
10
- optimizers = [optimizers] if optimizers else []
11
 
12
  if not optimizers:
13
  raise gr.Error("Please select at least one optimizer.")
@@ -17,10 +15,10 @@ def run_study(mode, benchmark_func, optimizers, dim, dataset, epochs, batch_size
17
  raise gr.Error("Please select a dataset.")
18
 
19
  config = {
20
- 'mode': 'benchmark' if mode == 'Benchmark Optimization' else 'ml_task',
21
  'benchmark_func': benchmark_func,
22
  'optimizers': optimizers,
23
- 'dim': int(dim),
24
  'dataset': dataset,
25
  'epochs': int(epochs) if epochs else 10,
26
  'batch_size': int(batch_size) if batch_size else 32,
@@ -35,16 +33,17 @@ def run_study(mode, benchmark_func, optimizers, dim, dataset, epochs, batch_size
35
 
36
  if config['mode'] == 'benchmark':
37
  metrics_df = pd.DataFrame(results['metrics'], index=config['optimizers'])
38
- return results['plot'], None, metrics_df, results['metrics'], json.dumps(results, indent=2), "Study completed successfully."
39
  else:
40
  metrics_df = pd.DataFrame(results['metrics'], index=config['optimizers'])
41
- return results['plot_acc'], results['plot_loss'], metrics_df, results['metrics'], json.dumps(results, indent=2), "Study completed successfully."
42
 
43
  def export_results(results_json):
44
- return results_json, "results.json"
 
 
45
 
46
  def toggle_azure_settings(optimizers):
47
- # Handle case where optimizers is a single value or None
48
  optimizers = [optimizers] if isinstance(optimizers, str) else optimizers or []
49
  return gr.update(visible='AzureSky' in optimizers)
50
 
@@ -59,7 +58,7 @@ with gr.Blocks(theme=gr.themes.Soft(), title="Nexa R&D Studio", css="""
59
  Select a mode, configure your study, and analyze results with interactive plots and metrics.
60
  """)
61
 
62
- with gr.Tabs() as tabs:
63
  with gr.TabItem("Study Configuration"):
64
  mode = gr.Radio(
65
  ['Benchmark Optimization', 'ML Task Training'],
@@ -140,28 +139,31 @@ with gr.Blocks(theme=gr.themes.Soft(), title="Nexa R&D Studio", css="""
140
  with gr.Row():
141
  plot1 = gr.Plot(label='Main Plot (Benchmark or Accuracy)')
142
  plot2 = gr.Plot(label='Loss Plot (ML Mode)')
143
- metrics_df = gr.Dataframe(label='Metrics Table', headers=['Optimizer'] + [
144
- 'distance', 'final_loss', 'convergence_rate',
145
- 'final_train_acc', 'final_val_acc', 'generalization_gap',
146
- 'final_train_loss', 'final_val_loss', 'best_epoch'
147
- ])
148
  metrics_json = gr.JSON(label='Detailed Metrics')
149
- export_data = gr.State()
150
  export_button = gr.Button('Export Results as JSON')
151
  export_file = gr.File(label='Download Results')
152
 
153
- def toggle_tabs(mode):
154
- return gr.update(visible=mode == 'Benchmark Optimization'), gr.update(visible=mode == 'ML Task Training')
155
-
156
- mode.change(toggle_tabs, inputs=mode, outputs=[benchmark_tab, ml_task_tab])
157
- optimizers.change(toggle_azure_settings, inputs=optimizers, outputs=azure_settings)
 
 
 
 
 
158
  run_button.click(
159
- run_study,
160
  inputs=[mode, benchmark_func, optimizers, dim, dataset, epochs, batch_size, lr, use_sa, sa_temp, sa_cooling_rate],
161
- outputs=[plot1, plot2, metrics_df, metrics_json, export_data, status_message]
 
 
 
 
 
162
  )
163
- export_button.click(export_results, inputs=[export_data], outputs=[export_file, gr.File()])
164
 
165
- # Configure launch based on environment
166
- is_huggingface = os.getenv("HF_SPACE") is not None
167
- app.launch(share=True, server_name="0.0.0.0" if is_huggingface else None)
 
1
  import gradio as gr
2
  import json
3
  import pandas as pd
 
4
  from Engine import Engine
5
 
6
  def run_study(mode, benchmark_func, optimizers, dim, dataset, epochs, batch_size, lr, use_sa, sa_temp, sa_cooling_rate):
7
  # Ensure optimizers is a list
8
+ optimizers = [optimizers] if isinstance(optimizers, str) else optimizers or []
 
9
 
10
  if not optimizers:
11
  raise gr.Error("Please select at least one optimizer.")
 
15
  raise gr.Error("Please select a dataset.")
16
 
17
  config = {
18
+ 'mode': 'benchmark' if mode == "Benchmark Optimization" else 'ml_task',
19
  'benchmark_func': benchmark_func,
20
  'optimizers': optimizers,
21
+ 'dim': int(dim) if dim else 2,
22
  'dataset': dataset,
23
  'epochs': int(epochs) if epochs else 10,
24
  'batch_size': int(batch_size) if batch_size else 32,
 
33
 
34
  if config['mode'] == 'benchmark':
35
  metrics_df = pd.DataFrame(results['metrics'], index=config['optimizers'])
36
+ return results['plot'], None, metrics_df, json.dumps(results, indent=2), "Study completed successfully."
37
  else:
38
  metrics_df = pd.DataFrame(results['metrics'], index=config['optimizers'])
39
+ return results['plot_acc'], results['plot_loss'], metrics_df, json.dumps(results, indent=2), "Study completed successfully."
40
 
41
  def export_results(results_json):
42
+ with open("results.json", "w") as f:
43
+ f.write(results_json)
44
+ return "results.json"
45
 
46
  def toggle_azure_settings(optimizers):
 
47
  optimizers = [optimizers] if isinstance(optimizers, str) else optimizers or []
48
  return gr.update(visible='AzureSky' in optimizers)
49
 
 
58
  Select a mode, configure your study, and analyze results with interactive plots and metrics.
59
  """)
60
 
61
+ with gr.Tabs():
62
  with gr.TabItem("Study Configuration"):
63
  mode = gr.Radio(
64
  ['Benchmark Optimization', 'ML Task Training'],
 
139
  with gr.Row():
140
  plot1 = gr.Plot(label='Main Plot (Benchmark or Accuracy)')
141
  plot2 = gr.Plot(label='Loss Plot (ML Mode)')
142
+ metrics_df = gr.Dataframe(label='Metrics Table')
 
 
 
 
143
  metrics_json = gr.JSON(label='Detailed Metrics')
 
144
  export_button = gr.Button('Export Results as JSON')
145
  export_file = gr.File(label='Download Results')
146
 
147
+ mode.change(
148
+ fn=toggle_tabs,
149
+ inputs=mode,
150
+ outputs=[benchmark_tab, ml_task_tab]
151
+ )
152
+ optimizers.change(
153
+ fn=toggle_azure_settings,
154
+ inputs=optimizers,
155
+ outputs=azure_settings
156
+ )
157
  run_button.click(
158
+ fn=run_study,
159
  inputs=[mode, benchmark_func, optimizers, dim, dataset, epochs, batch_size, lr, use_sa, sa_temp, sa_cooling_rate],
160
+ outputs=[plot1, plot2, metrics_df, metrics_json, status_message]
161
+ )
162
+ export_button.click(
163
+ fn=export_results,
164
+ inputs=metrics_json,
165
+ outputs=export_file
166
  )
 
167
 
168
+ # Launch without share parameter for Hugging Face Spaces
169
+ app.launch()