from apscheduler.schedulers.background import BackgroundScheduler from model_types import MODEL_TYPES, ModelType from huggingface_hub import HfApi import matplotlib.pyplot as plt import bar_chart_race as bcr import pandas as pd import gradio as gr import requests import os def restart_space(): HfApi().restart_space( repo_id="IlyasMoutawwakil/llm-bar-race", token=os.environ.get("HF_TOKEN", None), ) if os.path.exists("open-llm-race-dataset.csv"): open_llm_race_dataset = pd.read_csv("open-llm-race-dataset.csv") else: open_llm_race_dataset = pd.read_csv( "https://huggingface.co/datasets/IlyasMoutawwakil/open-llm-race-dataset/resolve/main/open-llm-race-dataset.csv" ) # resample for ever model to a daily frequency open_llm_race_dataset["date"] = pd.to_datetime(open_llm_race_dataset["date"]) open_llm_race_dataset = ( open_llm_race_dataset.set_index("date", drop=True) .groupby("model", as_index=False) .resample("D", how="last", closed="right", fill_method="ffill") .last() .reset_index(drop=False) ) # filter open_llm_race_dataset["date"] = open_llm_race_dataset["date"].dt.strftime("%Y-%m-%d") open_llm_race_dataset = open_llm_race_dataset[ open_llm_race_dataset["date"] >= "2023-07-10" ] open_llm_race_dataset = open_llm_race_dataset[["date", "score", "model"]] # drop nan values open_llm_race_dataset.dropna(inplace=True) # drop duplicates on model and date open_llm_race_dataset.drop_duplicates(subset=["model", "date"], inplace=True) # add the model type open_llm_race_dataset["type"] = open_llm_race_dataset["model"].apply( lambda x: MODEL_TYPES[x].name if x in MODEL_TYPES else ModelType.Unknown.name ) def get_bar_chart(model_type: str, top_n: int = 10, title: str = ""): fig, ax = plt.subplots(figsize=(12, 6)) ax.set_xlim(0, 100) plt.subplots_adjust(left=0.25) subset = open_llm_race_dataset[open_llm_race_dataset["type"] == model_type] subset = subset.pivot(index="date", columns="model", values="score") subset.fillna(0, inplace=True) fig = bcr.bar_chart_race( subset, title=title, n_bars=top_n, fixed_max=True, period_length=1000, steps_per_period=20, end_period_pause=100, bar_texttemplate="{x:.2f}", filter_column_colors=True, bar_label_font=10, tick_label_font=10, bar_kwargs={"alpha": 0.2, "ec": "black", "lw": 3}, fig=fig, ) return gr.HTML(fig) # Demo interface demo = gr.Blocks() with demo: # leaderboard title gr.HTML("