|
import json |
|
import re |
|
|
|
import gradio as gr |
|
import numpy |
|
import pandas as pd |
|
|
|
from src.display.css_html_js import custom_css |
|
from src.about import ( |
|
INTRODUCTION_TEXT, |
|
TITLE, |
|
AUTHORS, |
|
) |
|
from src.display.formatting import make_clickable_model |
|
from plot_results import create_performance_plot |
|
|
|
demo = gr.Blocks(css=custom_css) |
|
with demo: |
|
gr.HTML(TITLE) |
|
gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text") |
|
|
|
|
|
with open("benchmark_report.json", "r") as f: |
|
json_data = json.load(f) |
|
|
|
|
|
leaderboard_df = pd.DataFrame(json_data) |
|
|
|
|
|
leaderboard_df = leaderboard_df.rename(columns={ |
|
"Model Name": "Model Path", |
|
"Model Size": "Params" |
|
}) |
|
|
|
|
|
leaderboard_df["Avg"] = (leaderboard_df["Avg (object)"] + leaderboard_df["Avg (country)"]) / 2 |
|
|
|
|
|
display_columns = [ |
|
"Model Path", "Params", "Avg", |
|
"Avg (object)", "Avg (country)", |
|
"History (object)", "History (country)", |
|
"Geography (object)", "Geography (country)", |
|
"Art & Entertainment (object)", "Art & Entertainment (country)", |
|
"Culture & Tradition (object)", "Culture & Tradition (country)" |
|
] |
|
|
|
leaderboard_df = leaderboard_df[display_columns] |
|
|
|
|
|
leaderboard_df["Params"] = leaderboard_df["Params"].replace("-", numpy.nan) |
|
|
|
leaderboard_df.loc[leaderboard_df["Params"].notna(), "Params"] = leaderboard_df.loc[leaderboard_df["Params"].notna(), "Params"].astype(float) |
|
|
|
|
|
leaderboard_df = leaderboard_df.sort_values(by=["Avg"], ascending=[False]) |
|
|
|
|
|
print("\n===== MODEL RESULTS =====") |
|
print("Avg is calculated as: (Avg (object) + Avg (country)) / 2") |
|
for index, row in leaderboard_df.iterrows(): |
|
print(f"{row['Model Path']}: {row['Avg']:.2f}") |
|
print("========================\n") |
|
|
|
|
|
leaderboard_df["Model Path"] = leaderboard_df["Model Path"].apply(lambda x: make_clickable_model(x)) |
|
|
|
|
|
leaderboard_df = leaderboard_df.rename(columns={"Model Path": "Model"}) |
|
leaderboard_df.to_csv("output.csv") |
|
|
|
|
|
|
|
leaderboard_df_styled = leaderboard_df.style.background_gradient( |
|
cmap="RdYlGn" |
|
) |
|
leaderboard_df_styled = leaderboard_df_styled.background_gradient( |
|
cmap="RdYlGn_r", |
|
subset=['Params'], |
|
vmax=150 |
|
) |
|
|
|
|
|
rounding = { |
|
"Avg": "{:.2f}", |
|
"Params": "{:.0f}", |
|
"Avg (object)": "{:.2f}", |
|
"Avg (country)": "{:.2f}", |
|
"History (object)": "{:.2f}", |
|
"History (country)": "{:.2f}", |
|
"Geography (object)": "{:.2f}", |
|
"Geography (country)": "{:.2f}", |
|
"Art & Entertainment (object)": "{:.2f}", |
|
"Art & Entertainment (country)": "{:.2f}", |
|
"Culture & Tradition (object)": "{:.2f}", |
|
"Culture & Tradition (country)": "{:.2f}" |
|
} |
|
leaderboard_df_styled = leaderboard_df_styled.format(rounding) |
|
|
|
|
|
datatypes = ['markdown', 'number'] + ['number'] * (len(display_columns) - 1) |
|
|
|
leaderboard_table = gr.components.Dataframe( |
|
value=leaderboard_df_styled, |
|
datatype=datatypes, |
|
elem_id="leaderboard-table", |
|
interactive=False, |
|
visible=True, |
|
) |
|
|
|
|
|
fig = create_performance_plot() |
|
plot = gr.Plot(value=fig, elem_id="performance-plot") |
|
|
|
gr.Markdown(AUTHORS, elem_classes="markdown-text") |
|
|
|
|
|
|
|
demo.queue(default_concurrency_limit=40).launch() |
|
|