mmlongbench-doc / app.py
yuhangzang
Add modality/size/open-source filters and new model results
5bda49b
import gradio as gr
import pandas as pd
from pathlib import Path
from src.json_leaderboard import (
create_leaderboard_df,
get_leaderboard_stats,
SIZE_BANDS,
MODALITIES,
)
from src.about import (
CITATION_BUTTON_LABEL,
CITATION_BUTTON_TEXT,
INTRODUCTION_TEXT,
LLM_BENCHMARKS_TEXT,
LINKS_AND_INFO,
TITLE,
)
from src.display.css_html_js import custom_css
JSON_PATH = str(Path(__file__).parent / "leaderboard_data.json")
TABLE_DATATYPES = ["html", "str", "html", "str", "str", "str", "str"]
def filter_leaderboard(open_source_only, size_band, modality):
df = create_leaderboard_df(
JSON_PATH,
open_source_only=open_source_only,
size_band=size_band,
modality=modality,
)
if df.empty:
return pd.DataFrame({"Result": ["No models match the selected filters."]})
return df
def get_stats_display():
"""Get formatted statistics for display"""
stats = get_leaderboard_stats(JSON_PATH)
if not stats:
return "No statistics available"
return f"""
### πŸ“Š Leaderboard Statistics
- **Total Models**: {stats['total_models']}
- **Best Score**: {stats['max_acc']:.1f}
- **Lowest Score**: {stats['min_acc']:.1f}
"""
# Create the Gradio interface
demo = gr.Blocks(css=custom_css, title="MMLongBench-Doc Leaderboard")
with demo:
gr.HTML(TITLE)
gr.HTML(LINKS_AND_INFO)
gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text")
with gr.Tabs(elem_classes="tab-buttons") as tabs:
with gr.TabItem("πŸ… Leaderboard", elem_id="llm-benchmark-tab-table", id=0):
stats_display = gr.Markdown(get_stats_display())
with gr.Row():
open_source_filter = gr.Checkbox(
label="Open-source only",
value=False,
)
size_filter = gr.Dropdown(
choices=SIZE_BANDS,
value="All",
label="Model size (activated params)",
)
modality_filter = gr.Radio(
choices=MODALITIES,
value="All",
label="Modality",
)
leaderboard_table = gr.Dataframe(
value=filter_leaderboard(False, "All", "All"),
datatype=TABLE_DATATYPES,
interactive=False,
wrap=True,
)
for control in (open_source_filter, size_filter, modality_filter):
control.change(
fn=filter_leaderboard,
inputs=[open_source_filter, size_filter, modality_filter],
outputs=leaderboard_table,
)
with gr.Row():
with gr.Column():
gr.Markdown("## πŸ“™ Citation")
gr.Markdown("If you use [MMLongBench-Doc](https://arxiv.org/abs/2407.01523) in your research, please cite our work:")
citation_textbox = gr.Textbox(
value=CITATION_BUTTON_TEXT,
elem_id="citation-textbox",
show_label=False,
interactive=False,
lines=8,
show_copy_button=True
)
if __name__ == "__main__":
demo.launch()