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 |
|