| import gradio as gr |
| from gradio_leaderboard import Leaderboard, ColumnFilter, SelectColumns |
| import pandas as pd |
| from apscheduler.schedulers.background import BackgroundScheduler |
| from huggingface_hub import snapshot_download |
|
|
| from src.about import ( |
| CITATION_BUTTON_LABEL, |
| CITATION_BUTTON_TEXT, |
| EVALUATION_QUEUE_TEXT, |
| INTRODUCTION_TEXT, |
| LLM_BENCHMARKS_TEXT, |
| TITLE, |
| ) |
| from src.display.css_html_js import custom_css, get_window_url_params |
| from src.display.utils import ( |
| COLUMNS, |
| COLS, |
| BENCHMARK_COLS, |
| EVAL_COLS, |
| EVAL_TYPES, |
| ModelType, |
| WeightType, |
| Precision |
| ) |
|
|
| 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 |
| from src.submission.submit import add_new_eval |
|
|
| def restart_space(): |
| API.restart_space(repo_id=REPO_ID) |
|
|
| |
| 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() |
|
|
| |
| LEADERBOARD_DF = get_leaderboard_df(EVAL_RESULTS_PATH, EVAL_REQUESTS_PATH, COLS, BENCHMARK_COLS) |
| print("LEADERBOARD_DF Shape:", LEADERBOARD_DF.shape) |
| print("LEADERBOARD_DF Columns:", LEADERBOARD_DF.columns.tolist()) |
|
|
| |
| finished_eval_queue_df, running_eval_queue_df, pending_eval_queue_df = get_evaluation_queue_df(EVAL_REQUESTS_PATH, EVAL_COLS) |
|
|
| demo = gr.Blocks(css=custom_css + """ |
| /* Column selection improvements */ |
| .select-columns-container label { |
| display: inline-block; |
| width: 24%; |
| font-size: 0.9em; |
| padding: 2px 5px; |
| margin: 2px 0; |
| vertical-align: top; |
| } |
| |
| /* Make column section more compact */ |
| .select-columns-section { |
| max-height: 300px; |
| overflow-y: auto; |
| padding: 0 !important; |
| } |
| |
| /* Add category headers */ |
| .column-category { |
| font-weight: bold; |
| margin-top: 10px; |
| margin-bottom: 5px; |
| border-bottom: 1px solid #eee; |
| padding-bottom: 3px; |
| } |
| """) |
|
|
| with demo: |
| gr.HTML(TITLE) |
| gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text") |
|
|
| with gr.Tabs(elem_classes="tab-buttons") as tabs: |
| with gr.TabItem("๐
LLM Benchmark", elem_id="llm-benchmark-tab-table", id=0): |
| if LEADERBOARD_DF.empty: |
| gr.Markdown("No evaluations have been performed yet. The leaderboard is currently empty.") |
| else: |
| default_selection = [col.name for col in COLUMNS if col.displayed_by_default] |
| print("Default Selection before ensuring 'model_name':", default_selection) |
|
|
| |
| if "model_name" not in default_selection: |
| default_selection.insert(0, "model_name") |
| print("Default Selection after ensuring 'model_name':", default_selection) |
|
|
| |
| with gr.Accordion("๐ Select Columns to Display", open=False): |
| |
| gr.HTML("<div class='column-category'>Keep using the checkboxes below to select columns.</div>") |
| |
| |
| leaderboard = Leaderboard( |
| value=LEADERBOARD_DF, |
| datatype=[col.type for col in COLUMNS], |
| select_columns=SelectColumns( |
| default_selection=default_selection, |
| cant_deselect=[col.name for col in COLUMNS if col.never_hidden], |
| label="Select Columns to Display:", |
| ), |
| search_columns=[col.name for col in COLUMNS if col.name in ["model_name", "license"]], |
| hide_columns=[col.name for col in COLUMNS if col.hidden], |
| filter_columns=[ |
| ColumnFilter("model_type", type="checkboxgroup", label="Model types"), |
| ColumnFilter("precision", type="checkboxgroup", label="Precision"), |
| ColumnFilter( |
| "still_on_hub", type="boolean", label="Deleted/incomplete", default=True |
| ), |
| ], |
| bool_checkboxgroup_label="Hide models", |
| interactive=False, |
| ) |
|
|
| with gr.TabItem("๐ About", elem_id="llm-benchmark-tab-table", id=2): |
| gr.Markdown(LLM_BENCHMARKS_TEXT, elem_classes="markdown-text") |
|
|
| with gr.TabItem("๐ Submit here! ", elem_id="llm-benchmark-tab-table", id=3): |
| with gr.Column(): |
| with gr.Row(): |
| gr.Markdown(EVALUATION_QUEUE_TEXT, elem_classes="markdown-text") |
|
|
| |
| with gr.Column(): |
| gr.Markdown("Evaluations are performed immediately upon submission. There are no pending or running evaluations.") |
|
|
| with gr.Row(): |
| gr.Markdown("# โ๏ธโจ Submit your model here!", elem_classes="markdown-text") |
|
|
| with gr.Row(): |
| with gr.Column(): |
| model_name_textbox = gr.Textbox(label="Model name") |
| revision_name_textbox = gr.Textbox(label="Revision commit", placeholder="main") |
| model_type = gr.Dropdown( |
| choices=[t.to_str(" : ") for t in ModelType if t != ModelType.Unknown], |
| label="Model type", |
| multiselect=False, |
| value=None, |
| interactive=True, |
| ) |
|
|
| with gr.Column(): |
| precision = gr.Dropdown( |
| choices=[i.value for i in Precision if i != Precision.Unknown], |
| label="Precision", |
| multiselect=False, |
| value="float16", |
| interactive=True, |
| ) |
| weight_type = gr.Dropdown( |
| choices=[i.value for i in WeightType], |
| label="Weights type", |
| multiselect=False, |
| value="Original", |
| interactive=True, |
| ) |
| base_model_name_textbox = gr.Textbox(label="Base model (for delta or adapter weights)") |
|
|
| submit_button = gr.Button("Submit Eval") |
| submission_result = gr.Markdown() |
| submit_button.click( |
| add_new_eval, |
| [ |
| model_name_textbox, |
| base_model_name_textbox, |
| revision_name_textbox, |
| precision, |
| weight_type, |
| model_type, |
| ], |
| submission_result, |
| ) |
|
|
| with gr.Row(): |
| with gr.Accordion("๐ Citation", open=False): |
| citation_button = gr.Textbox( |
| value=CITATION_BUTTON_TEXT, |
| label=CITATION_BUTTON_LABEL, |
| lines=20, |
| elem_id="citation-button", |
| show_copy_button=True, |
| ) |
|
|
| scheduler = BackgroundScheduler() |
| scheduler.add_job(restart_space, "interval", seconds=1800) |
| scheduler.start() |
| demo.queue(default_concurrency_limit=40).launch() |