Update app.py
Browse files
app.py
CHANGED
@@ -3,6 +3,7 @@ os.system("pip install gradio==4.31.5 pydantic==2.7.1 gradio_modal==0.0.3")
|
|
3 |
|
4 |
import gradio as gr
|
5 |
import pandas as pd
|
|
|
6 |
from apscheduler.schedulers.background import BackgroundScheduler
|
7 |
from huggingface_hub import snapshot_download
|
8 |
from gradio_space_ci import enable_space_ci
|
@@ -49,6 +50,7 @@ from gradio_modal import Modal
|
|
49 |
import plotly.graph_objects as go
|
50 |
|
51 |
selected_indices = []
|
|
|
52 |
|
53 |
# Start ephemeral Spaces on PRs (see config in README.md)
|
54 |
#enable_space_ci()
|
@@ -111,6 +113,7 @@ def restart_space():
|
|
111 |
|
112 |
|
113 |
def init_space(full_init: bool = True):
|
|
|
114 |
if full_init:
|
115 |
try:
|
116 |
branch = REPO.active_branch.name
|
@@ -284,19 +287,44 @@ def filter_models(
|
|
284 |
|
285 |
def select(df, data: gr.SelectData):
|
286 |
global selected_indices
|
287 |
-
|
288 |
|
|
|
289 |
if selected_index in selected_indices:
|
290 |
-
selected_indices.remove(selected_index)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
291 |
else:
|
292 |
-
selected_indices.append(selected_index)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
293 |
|
294 |
fig = go.Figure()
|
295 |
-
for
|
296 |
-
row = df.iloc[i, :]
|
297 |
fig.add_trace(go.Scatterpolar(
|
298 |
r=[row['Average ⬆️'], row['ARC-c'], row['ARC-e'], row['Boolq'], row['HellaSwag'], row['Lambada'], row['MMLU'], row['Openbookqa'], row['Piqa'], row['Truthfulqa'], row['Winogrande']],
|
299 |
-
theta=['Average ⬆️', 'ARC-c', 'ARC-e', 'Boolq', 'HellaSwag', 'Lambada', 'MMLU', 'Openbookqa', 'Piqa', 'Truthfulqa', 'Winogrande'
|
300 |
fill='toself',
|
301 |
name=str(row['Model'])
|
302 |
))
|
@@ -308,7 +336,6 @@ def select(df, data: gr.SelectData):
|
|
308 |
showlegend=True
|
309 |
)
|
310 |
|
311 |
-
|
312 |
return fig
|
313 |
|
314 |
leaderboard_df = filter_models(
|
@@ -396,7 +423,11 @@ with demo:
|
|
396 |
filter_columns_weightDtype = gr.Dropdown(choices=[i.value.name for i in WeightDtype], label="Weight Dtype", multiselect=False, value="All", interactive=True,)
|
397 |
filter_columns_doubleQuant = gr.Dropdown(choices=["True", "False"], label="Double Quant", multiselect=False, value="False", interactive=True)
|
398 |
filter_columns_groupDtype = gr.Dropdown(choices=[i.value.name for i in GroupDtype], label="Group Size", multiselect=False, value="All", interactive=True,)
|
399 |
-
|
|
|
|
|
|
|
|
|
400 |
|
401 |
leaderboard_table = gr.components.Dataframe(
|
402 |
value=leaderboard_df[
|
@@ -415,8 +446,9 @@ with demo:
|
|
415 |
with Modal(visible=False) as modal:
|
416 |
map = gr.Plot()
|
417 |
|
418 |
-
leaderboard_table.select(select, leaderboard_table,
|
419 |
-
|
|
|
420 |
|
421 |
# Dummy leaderboard for handling the case when the user uses backspace key
|
422 |
hidden_leaderboard_table_for_search = gr.components.Dataframe(
|
@@ -455,9 +487,7 @@ with demo:
|
|
455 |
)
|
456 |
|
457 |
"""
|
458 |
-
|
459 |
|
460 |
-
|
461 |
# Define a hidden component that will trigger a reload only if a query parameter has been set
|
462 |
hidden_search_bar = gr.Textbox(value="", visible=False)
|
463 |
hidden_search_bar.change(
|
@@ -473,7 +503,6 @@ with demo:
|
|
473 |
],
|
474 |
leaderboard_table,
|
475 |
)
|
476 |
-
|
477 |
# Check query parameter once at startup and update search bar + hidden component
|
478 |
demo.load(load_query, inputs=[], outputs=[search_bar, hidden_search_bar])
|
479 |
|
|
|
3 |
|
4 |
import gradio as gr
|
5 |
import pandas as pd
|
6 |
+
import re
|
7 |
from apscheduler.schedulers.background import BackgroundScheduler
|
8 |
from huggingface_hub import snapshot_download
|
9 |
from gradio_space_ci import enable_space_ci
|
|
|
50 |
import plotly.graph_objects as go
|
51 |
|
52 |
selected_indices = []
|
53 |
+
selected_values = {}
|
54 |
|
55 |
# Start ephemeral Spaces on PRs (see config in README.md)
|
56 |
#enable_space_ci()
|
|
|
113 |
|
114 |
|
115 |
def init_space(full_init: bool = True):
|
116 |
+
|
117 |
if full_init:
|
118 |
try:
|
119 |
branch = REPO.active_branch.name
|
|
|
287 |
|
288 |
def select(df, data: gr.SelectData):
|
289 |
global selected_indices
|
290 |
+
global selected_values
|
291 |
|
292 |
+
selected_index = data.index[0]
|
293 |
if selected_index in selected_indices:
|
294 |
+
selected_indices.remove(selected_index)
|
295 |
+
|
296 |
+
value = df.iloc[selected_index].iloc[1]
|
297 |
+
pattern = r'<a[^>]+>([^<]+)</a>'
|
298 |
+
match = re.search(pattern, value)
|
299 |
+
if match:
|
300 |
+
text_content = match.group(1)
|
301 |
+
if text_content in selected_values:
|
302 |
+
del selected_values[text_content]
|
303 |
else:
|
304 |
+
selected_indices.append(selected_index)
|
305 |
+
|
306 |
+
value = df.iloc[selected_index].iloc[1]
|
307 |
+
pattern = r'<a[^>]+>([^<]+)</a>'
|
308 |
+
match = re.search(pattern, value)
|
309 |
+
if match:
|
310 |
+
text_content = match.group(1)
|
311 |
+
selected_values[text_content] = value
|
312 |
+
|
313 |
+
print('selected_values', selected_values, selected_indices)
|
314 |
+
return gr.CheckboxGroup(list(selected_values.keys()))
|
315 |
+
|
316 |
+
def generate_spider_chart(df, selected_keys):
|
317 |
+
global selected_values
|
318 |
+
print('generate_spider_chart', selected_values, selected_keys)
|
319 |
+
current_selected_values = [selected_values[key] for key in selected_keys if key in selected_values]
|
320 |
+
selected_rows = df[df.iloc[:, 1].isin(current_selected_values)]
|
321 |
+
|
322 |
|
323 |
fig = go.Figure()
|
324 |
+
for _, row in selected_rows.iterrows():
|
|
|
325 |
fig.add_trace(go.Scatterpolar(
|
326 |
r=[row['Average ⬆️'], row['ARC-c'], row['ARC-e'], row['Boolq'], row['HellaSwag'], row['Lambada'], row['MMLU'], row['Openbookqa'], row['Piqa'], row['Truthfulqa'], row['Winogrande']],
|
327 |
+
theta=['Average ⬆️', 'ARC-c', 'ARC-e', 'Boolq', 'HellaSwag', 'Lambada', 'MMLU', 'Openbookqa', 'Piqa', 'Truthfulqa', 'Winogrande'],
|
328 |
fill='toself',
|
329 |
name=str(row['Model'])
|
330 |
))
|
|
|
336 |
showlegend=True
|
337 |
)
|
338 |
|
|
|
339 |
return fig
|
340 |
|
341 |
leaderboard_df = filter_models(
|
|
|
423 |
filter_columns_weightDtype = gr.Dropdown(choices=[i.value.name for i in WeightDtype], label="Weight Dtype", multiselect=False, value="All", interactive=True,)
|
424 |
filter_columns_doubleQuant = gr.Dropdown(choices=["True", "False"], label="Double Quant", multiselect=False, value="False", interactive=True)
|
425 |
filter_columns_groupDtype = gr.Dropdown(choices=[i.value.name for i in GroupDtype], label="Group Size", multiselect=False, value="All", interactive=True,)
|
426 |
+
|
427 |
+
with gr.Row():
|
428 |
+
model_comparison = gr.CheckboxGroup(label="Spider Chart Model Comparison(Select a model from the table)", choices=list(selected_values.keys()), value=[], interactive=True, elem_id="model_comparison")
|
429 |
+
with gr.Row():
|
430 |
+
spider_btn = gr.Button("Model Comparison")
|
431 |
|
432 |
leaderboard_table = gr.components.Dataframe(
|
433 |
value=leaderboard_df[
|
|
|
446 |
with Modal(visible=False) as modal:
|
447 |
map = gr.Plot()
|
448 |
|
449 |
+
leaderboard_table.select(select, leaderboard_table, model_comparison)
|
450 |
+
spider_btn.click(generate_spider_chart, [leaderboard_table, model_comparison], map)
|
451 |
+
spider_btn.click(lambda: Modal(visible=True), None, modal)
|
452 |
|
453 |
# Dummy leaderboard for handling the case when the user uses backspace key
|
454 |
hidden_leaderboard_table_for_search = gr.components.Dataframe(
|
|
|
487 |
)
|
488 |
|
489 |
"""
|
|
|
490 |
|
|
|
491 |
# Define a hidden component that will trigger a reload only if a query parameter has been set
|
492 |
hidden_search_bar = gr.Textbox(value="", visible=False)
|
493 |
hidden_search_bar.change(
|
|
|
503 |
],
|
504 |
leaderboard_table,
|
505 |
)
|
|
|
506 |
# Check query parameter once at startup and update search bar + hidden component
|
507 |
demo.load(load_query, inputs=[], outputs=[search_bar, hidden_search_bar])
|
508 |
|