Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import pandas as pd | |
| import requests | |
| from datetime import datetime | |
| from apscheduler.schedulers.background import BackgroundScheduler | |
| from src.about import ( | |
| INTRODUCTION_TEXT, | |
| LLM_BENCHMARKS_TEXT, | |
| TITLE, | |
| ) | |
| from src.display.css_html_js import custom_css | |
| from huggingface_hub import HfApi | |
| api = HfApi() | |
| last_updated = "---" | |
| def set_last_update(): | |
| global last_updated | |
| last_updated = "<p style='text-align: right; padding-right: 5px;'>" + datetime.now().strftime( | |
| 'Last updated at %Y-%m-%d %H:%m:%S') + "</p>" | |
| def get_evaluation(): | |
| global last_updated | |
| try: | |
| response = requests.get("http://aim100.qinference.com/api/leaderboard/list") | |
| data_json = response.json() | |
| df = pd.DataFrame(data_json) | |
| for col in df.columns: | |
| df.loc[df[col] == 0, col] = '-' | |
| df.insert(0, 'No', df.reset_index().index + 1) | |
| ret = df.drop(columns='nodeSeq').rename(columns={'modelName': 'Model'}) | |
| ret.columns = [x.capitalize() for x in ret.columns] | |
| except ValueError: | |
| ret = default_evaluation() | |
| set_last_update() | |
| return ret | |
| def default_evaluation(): | |
| global last_updated | |
| default_data = [{ | |
| "No": "-", | |
| "Model": "-", | |
| "Total": "-", | |
| "Inference": "-", | |
| "Grammar": "-", | |
| "Understanding": "-", | |
| "Coding": "-", | |
| "Math": "-", | |
| "Writing": "-", | |
| "Etc": "-" | |
| }] | |
| df = pd.DataFrame(default_data) | |
| set_last_update() | |
| return df | |
| # Searching and filtering | |
| def update_table( | |
| hidden_df: pd.DataFrame, | |
| query: str, | |
| ): | |
| filtered_df = hidden_df[hidden_df["Model"].str.contains(query, case=False)] | |
| return filtered_df | |
| original_df = get_evaluation() | |
| leaderboard_df = original_df.copy() | |
| def restart_leaderboard(): | |
| # global original_df, leaderboard_df | |
| # original_df = get_evaluation() | |
| # leaderboard_df = original_df.copy() | |
| repo_id = "qinference/AIM100Leaderboard" | |
| api.pause_space(repo_id=repo_id, repo_type="space") | |
| api.restart_space(repo_id=repo_id, repo_type="space") | |
| set_last_update() | |
| leaderboard = gr.Blocks(css=custom_css) | |
| with leaderboard: | |
| 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): | |
| with gr.Row(): | |
| search_bar = gr.Textbox( | |
| placeholder=" π Search for your model type and press ENTER...", | |
| show_label=False, | |
| elem_id="search-bar", | |
| ) | |
| leaderboard_table = gr.components.Dataframe( | |
| value=leaderboard_df, | |
| elem_id="leaderboard-table", | |
| interactive=False, | |
| visible=True, | |
| ) | |
| # Dummy leaderboard for handling the case when the user uses backspace key | |
| hidden_leaderboard_table_for_search = gr.components.Dataframe( | |
| value=original_df, | |
| visible=False, | |
| ) | |
| search_bar.submit( | |
| update_table, | |
| [ | |
| hidden_leaderboard_table_for_search, | |
| search_bar | |
| ], | |
| leaderboard_table, | |
| ) | |
| scheduler = BackgroundScheduler() | |
| scheduler.add_job(restart_leaderboard, "interval", seconds=1800) | |
| scheduler.start() | |
| with gr.Row(): | |
| gr.HTML(last_updated) | |
| with gr.TabItem("π About", elem_id="llm-benchmark-tab-table", id=2): | |
| gr.Markdown(LLM_BENCHMARKS_TEXT, elem_classes="markdown-text") | |
| leaderboard.queue(default_concurrency_limit=40).launch() | |