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 = "

" + datetime.now().strftime( 'Last updated at %Y-%m-%d %H:%m:%S') + "

" 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()