File size: 5,197 Bytes
4a78d34 f4ed2d4 4a78d34 c8da037 4a78d34 c8da037 4a78d34 8471f6d 4a78d34 8ad1a09 1d1f5e9 4a78d34 ed6229f 4a78d34 8ad1a09 4a78d34 f4ed2d4 7564219 4a78d34 aa87c61 d201228 b1accaf d201228 1f6d554 d201228 4410a31 f4ed2d4 7564219 f4ed2d4 4410a31 7564219 bb10943 11c3aa7 4a78d34 853a51e 4a78d34 d5a5b95 8471f6d d5a5b95 4a78d34 6fa5c81 d5a5b95 c8da037 d5a5b95 66f1c0c 6fa5c81 5cff478 4a78d34 66f1c0c c8da037 9c55d6d 8ad1a09 c8da037 ed6229f 4a78d34 d5a5b95 a2bb1ef c8da037 5cff478 4a78d34 853a51e 4a78d34 853a51e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
import gradio as gr
from apscheduler.schedulers.background import BackgroundScheduler
from huggingface_hub import snapshot_download
import pandas as pd
from src.about import (
REPRODUCIBILITY_TEXT,
INTRODUCTION_TEXT,
ABOUT_TEXT,
TITLE,
)
from src.display.css_html_js import custom_css, custom_js
from src.display.utils import (
COLS,
ST_BENCHMARK_COLS,
AGENTIC_BENCHMARK_COLS,
EVAL_COLS,
AutoEvalColumn,
fields,
)
from src.envs import API, EVAL_REQUESTS_PATH, EVAL_RESULTS_PATH, QUEUE_REPO, REPO_ID, RESULTS_REPO, TOKEN
from src.populate import get_evaluation_queue_df, get_leaderboard_df, TASK_NAME_INVERSE_MAP
from src.submission.submit import add_new_eval
def restart_space():
API.restart_space(repo_id=REPO_ID)
### Space initialisation
try:
print(EVAL_REQUESTS_PATH)
snapshot_download(
repo_id=QUEUE_REPO, local_dir=EVAL_REQUESTS_PATH, repo_type="dataset", tqdm_class=None, etag_timeout=30, token=TOKEN
)
except Exception:
restart_space()
try:
print(EVAL_RESULTS_PATH)
snapshot_download(
repo_id=RESULTS_REPO, local_dir=EVAL_RESULTS_PATH, repo_type="dataset", tqdm_class=None, etag_timeout=30, token=TOKEN
)
except Exception:
restart_space()
ST_LEADERBOARD_DF = get_leaderboard_df(EVAL_RESULTS_PATH, EVAL_REQUESTS_PATH, COLS, ST_BENCHMARK_COLS)
AGENTIC_LEADERBOARD_DF = get_leaderboard_df(EVAL_RESULTS_PATH, EVAL_REQUESTS_PATH, COLS, AGENTIC_BENCHMARK_COLS)
(
finished_eval_queue_df,
running_eval_queue_df,
pending_eval_queue_df,
) = get_evaluation_queue_df(EVAL_REQUESTS_PATH, EVAL_COLS)
def bold_max(s):
is_max = s == s.max() # Boolean Series: True for the max value(s)
return ['font-weight: bold' if v else '' for v in is_max]
def init_leaderboard(df, benchmark_type):
if df is None or df.empty:
raise ValueError("Leaderboard DataFrame is empty or None.")
non_task_cols = ["Model"]
if benchmark_type == "agentic":
# Include agent column
non_task_cols.append("Agent")
elif benchmark_type == "base":
# Drop agent column
dataframe = dataframe.drop(columns=["Agent"])
AutoEvalColumnSubset = [c for c in fields(AutoEvalColumn) if ((c.name in non_task_cols) or (TASK_NAME_INVERSE_MAP.get(c.name, dict()).get("type", "")==benchmark_type))]
# styler = dataframe.style.apply(bold_max, subset=pd.IndexSlice[:, dataframe.columns[1:]])
# df.style.set_table_styles([
# {'selector': 'th', 'props': [('text-align', 'center')]},
# {'selector': 'td', 'props': [('text-align', 'center')]}
# ])
# Define a common tooltip text
# tooltip_text = "This is the common tooltip"
# # Create a tooltip DataFrame with the same shape as df,
# # filled with the same tooltip text for each cell.
# tooltips = pd.DataFrame(tooltip_text, index=df.index, columns=df.columns)
# # Apply the tooltips to the DataFrame
# styled_df = df.style.set_tooltips(tooltips)
return gr.components.Dataframe(
value=df,
datatype=[c.type for c in AutoEvalColumnSubset],
column_widths=["150px" if c.name != "Model" else "250px" for c in AutoEvalColumnSubset],
wrap=False,
)
black_logo_path = "src/assets/logo-icon-black.png"
white_logo_path = "src/assets/logo-icon-white.png"
demo = gr.Blocks(
css=custom_css,
js=custom_js,
theme=gr.themes.Default(primary_hue=gr.themes.colors.pink),
fill_height=True,
fill_width=True,
)
with demo:
gr.HTML(f"""
<div id="page-header">
<div id="header-container">
<div id="left-container">
<img id="black-logo" src="/gradio_api/file={black_logo_path}">
<img id="white-logo" src="/gradio_api/file={white_logo_path}">
</div>
<div id="centre-container">
<h1 style="margin-bottom: 0.25rem;">{TITLE}</h1>
<p style="color:#eb088a; margin:0; font-size:1.2rem;">Explore Interactive Results & Traces</p>
</div>
<div id="right-container">
</div>
</div>
</div>
""")
gr.Markdown(INTRODUCTION_TEXT, elem_classes="intro-text", sanitize_html=False)
with gr.Tabs(elem_classes=["leaderboard-table", "tab-buttons"]) as tabs:
with gr.TabItem("Base Benchmarks", elem_classes="llm-benchmark-tab-table", id=0):
leaderboard = init_leaderboard(ST_LEADERBOARD_DF, "base")
with gr.TabItem("Agentic Benchmarks", elem_classes="llm-benchmark-tab-table", id=1):
leaderboard = init_leaderboard(AGENTIC_LEADERBOARD_DF, "agentic")
with gr.TabItem("About", elem_classes="llm-benchmark-tab-table", id=2):
gr.Markdown(ABOUT_TEXT, elem_classes="markdown-text", sanitize_html=False)
with gr.TabItem("Reproducibility", elem_classes="llm-benchmark-tab-table", id=3):
gr.Markdown(REPRODUCIBILITY_TEXT, elem_classes="markdown-text", sanitize_html=False)
assets = [black_logo_path, white_logo_path]
scheduler = BackgroundScheduler()
scheduler.add_job(restart_space, "interval", seconds=1800)
scheduler.start()
demo.queue(default_concurrency_limit=40).launch(allowed_paths=assets) |