zhwang4ai's picture
fix
c8f6405
Raw
History Blame Contribute Delete
9.82 kB
import json
from pathlib import Path
import gradio as gr
import pandas as pd
from texts import TITLE, DESCRIPTION, ABOUT
from process_data import load_average_data, load_hard_data, load_easy_data, load_detailed_success_rate_data, load_detailed_action_counts_data
from display import custom_css
BENCHMARKS_TO_SKIP = []
color_map = {
"Pretrained": "#7497db",
"RL": "#E8ECF2",
"Finetuned": "#ffcd75",
# "DPO": "#75809c",
}
model_name_map = {
"qwen2.5-3b-instruct": "Qwen/Qwen2.5-3B-Instruct",
"qwen2.5-7b-instruct": "Qwen/Qwen2.5-7B-Instruct",
"qwen2.5-14b-instruct": "Qwen/Qwen2.5-14B-Instruct",
"qwen2.5-32b-instruct": "Qwen/Qwen2.5-32B-Instruct",
"qwen2.5-72b-instruct": "Qwen/Qwen2.5-72B-Instruct",
"llama-3.1-8b-instruct": "Meta-Llama/Llama-3.1-8B-Instruct",
"llama-3.1-70b-instruct": "Meta-Llama/Llama-3.1-70B-Instruct",
"llama-3.2-3b-instruct": "Meta-Llama/Llama-3.2-3B-Instruct",
"llama-3.3-70b-instruct": "Meta-Llama/Llama-3.3-70B-Instruct",
"mistral-large-instruct-2411": "Mistral/Mistral-Large-2411",
"gemma-2-27b-it": "google/gemma-2-27b-it",
"gemma-2-9b-it": "google/gemma-2-9b-it",
"deepseek-v3": "deepseek-ai/DeepSeek-V3",
"deepseek-r1": "deepseek-ai/DeepSeek-R1",
"qwq-32b": "Qwen/QwQ-32B",
"yi-lightning": "Yi/Yi-Lightning",
'gpt-3.5-turbo': "openai/gpt-3.5-turbo",
'gpt-4o': "openai/gpt-4o",
'gpt-4o-mini': "openai/gpt-4o-mini",
'o1-mini': "openai/o1-mini",
'claude-3.5-haiku': "anthropic/claude-3.5-haiku",
'claude-3.5-sonnet': "anthropic/claude-3.5-sonnet",
}
def map_model_name(model_id):
if model_id not in model_name_map.keys():
return model_id
else:
return model_name_map[model_id]
# ๅฎšไน‰ๅ‡ฝๆ•ฐ๏ผŒๅฐ†ๆจกๅž‹ๅ็งฐ่ฝฌๆขไธบๅธฆๆœ‰้“พๆŽฅ็š„ HTML ๆ ผๅผ
def model_hyperlink(link, model_name):
# return f'<a target="_blank" href="{link}" style="color: var(--link-text-color); text-decoration: underline;text-decoration-style: dotted;">{model_name}</a>'
return f"[{model_name}]({link})"
def make_clickable_model(model_name):
link = f"https://huggingface.co/{model_name}"
return model_hyperlink(link, model_name)
rl_models = ['deepseek-r1', 'o1-mini']
def map_model_type(model_name):
if model_name in rl_models:
return "RL"
else:
return "Pretrained"
def prep_leaderboard_df():
average_df = load_average_data()
hard_df = load_hard_data()
easy_df = load_easy_data()
df = pd.concat([easy_df, hard_df, average_df], axis=1)
# insert a column named "Model" at the first position
df.insert(0, "Model", [map_model_name(idx) for idx in df.index])
df.insert(1, "Model Type", [map_model_type(idx) for idx in df.index])
# ๅฏน Model ๅˆ—ๅบ”็”จๅ‡ฝๆ•ฐ๏ผŒๅฐ†ๆจกๅž‹ๅ็งฐ่ฝฌๆขไธบ้“พๆŽฅๅฝขๅผ
# df['Model'] = df['Model'].apply(make_clickable_model)
df = df.round(2)
return df
def prep_detailed_success_rate_df():
df = load_detailed_success_rate_data()
# df = df.T # ่ฝฌ็ฝฎไธบ model ๆ˜ฏ่กŒ๏ผŒๆŒ‡ๆ ‡ๆ˜ฏๅˆ—
df.insert(0, "Model", [map_model_name(idx) for idx in df.index])
df.insert(1, "Model Type", [map_model_type(idx) for idx in df.index])
df = df.round(2)
return df
def prep_detailed_action_counts_df():
df = load_detailed_action_counts_data()
# df = df.T # ่ฝฌ็ฝฎไธบ model ๆ˜ฏ่กŒ๏ผŒๆŒ‡ๆ ‡ๆ˜ฏๅˆ—
df.insert(0, "Model", [map_model_name(idx) for idx in df.index])
df.insert(1, "Model Type", [map_model_type(idx) for idx in df.index])
df = df.round(2)
return df
leaderboard_df = prep_leaderboard_df()
detailed_success_rate_df = prep_detailed_success_rate_df()
detailed_action_counts_df = prep_detailed_action_counts_df()
# Function to update the table based on search query
def filter_and_search_success_rate(cols: list[str], search_query: str, agg: str,):
# print("filter")
df = detailed_success_rate_df
search_terms = "Model"
if len(search_query) > 0:
search_terms = search_query.split(";")
search_terms = [term.strip().lower() for term in search_terms]
pattern = "|".join(search_terms)
df = df[df["Model"].str.lower().str.contains(pattern, regex=True)]
# Drop any columns which are all NaN
df = df.dropna(how="all", axis=1)
if len(cols) > 0:
index_cols = list(leaderboard_df.columns[:1])
new_cols = index_cols + cols
df = df.copy()[new_cols]
df = df.copy().dropna(how="all", axis=0, subset=[c for c in df.columns if c in cols])
df[cols] = df[cols].apply(pd.to_numeric, errors='coerce')
df = df.sort_values(by=cols, ascending=False, na_position='last')
df[cols] = df[cols].astype(str)
return df
# Function to update the table based on search query
def filter_and_search_action_counts(cols: list[str], search_query: str, agg: str,):
# print("filter")
df = detailed_action_counts_df
search_terms = "Model"
if len(search_query) > 0:
search_terms = search_query.split(";")
search_terms = [term.strip().lower() for term in search_terms]
pattern = "|".join(search_terms)
df = df[df["Model"].str.lower().str.contains(pattern, regex=True)]
# Drop any columns which are all NaN
df = df.dropna(how="all", axis=1)
if len(cols) > 0:
index_cols = list(leaderboard_df.columns[:1])
new_cols = index_cols + cols
df = df.copy()[new_cols]
df = df.copy().dropna(how="all", axis=0, subset=[c for c in df.columns if c in cols])
df[cols] = df[cols].apply(pd.to_numeric, errors='coerce')
df = df.sort_values(by=cols, ascending=False, na_position='last')
df[cols] = df[cols].astype(str)
return df
demo = gr.Blocks(css=custom_css)
with demo:
gr.HTML(TITLE)
with gr.Row():
with gr.Column():
gr.Markdown(DESCRIPTION, elem_classes="markdown-text")
with gr.Tabs(elem_classes="tab-buttons") as tabs:
with gr.TabItem("๐Ÿ† Leaderboard"):
with gr.Row():
# search_bar = gr.Textbox(placeholder="Search for your model...", show_label=False)
# cols_bar = gr.CheckboxGroup(
# choices=[c for c in leaderboard_df.columns[1:] if c != "Average"],
# show_label=False,
# # info="Select columns to display",
# )
with gr.Group():
leaderboard_table = gr.Dataframe(
value=leaderboard_df,
wrap=True,
column_widths=[250, 120] + [(60 + len(c)) for c in leaderboard_df.columns[2:]],
)
#cols_bar.change(filter_and_search, inputs=[cols_bar, search_bar], outputs=[leaderboard_table])
# search_bar.submit(filter_and_search, inputs=[cols_bar, search_bar], outputs=[leaderboard_table])
with gr.TabItem("Success Rates - Detailed"):
with gr.Column():
with gr.Row():
search_bar = gr.Textbox(placeholder="Search for your model...", show_label=False)
with gr.Row():
cols_bar = gr.CheckboxGroup(
choices=[c for c in detailed_success_rate_df.columns[2:] if c != "Average"],
show_label=False,
# info="Select columns to display",
)
detailed_success_rate_table = gr.Dataframe(
value=detailed_success_rate_df,
wrap=True,
column_widths=[350, 120] + [(150 + len(c)) for c in detailed_success_rate_df.columns[2:]],
)
cols_bar.change(filter_and_search_success_rate, inputs=[cols_bar, search_bar], outputs=[detailed_success_rate_table])
search_bar.submit(filter_and_search_success_rate, inputs=[cols_bar, search_bar], outputs=[detailed_success_rate_table])
with gr.TabItem("Action Counts - Detailed"):
with gr.Column():
with gr.Row():
search_bar_1 = gr.Textbox(placeholder="Search for your model...", show_label=False)
with gr.Row():
cols_bar_1 = gr.CheckboxGroup(
choices=[c for c in detailed_action_counts_df.columns[2:] if c != "Average"],
show_label=False,
# info="Select columns to display",
)
detailed_action_counts_table = gr.Dataframe(
value=detailed_action_counts_df,
wrap=True,
column_widths=[350, 120] + [(100 + len(c)) for c in detailed_action_counts_df.columns[2:]],
)
cols_bar_1.change(filter_and_search_action_counts, inputs=[cols_bar_1, search_bar_1], outputs=[detailed_action_counts_table])
search_bar_1.submit(filter_and_search_action_counts, inputs=[cols_bar_1, search_bar_1], outputs=[detailed_action_counts_table])
with gr.TabItem("About"):
gr.Markdown(ABOUT)
with gr.Row():
with gr.Accordion("๐Ÿ“š Citation", open=False):
citation_button = gr.Textbox(
value=r"""@article{lin2025generative,
title={Generative Evaluation of Complex Reasoning in Large Language Models},
author={Lin, Haowei and Wang, Xiangyu and Yan, Ruilin and Huang, Baizhou and Ye, Haotian and Zhu, Jianhua and Wang, Zihao and Zou, James and Ma, Jianzhu and Liang, Yitao},
journal={arXiv preprint arXiv:2504.02810},
year={2025}
}""",
lines=7,
label="Copy the following to cite these results.",
elem_id="citation-button",
show_copy_button=True,
)
demo.launch()