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 os def restart_space(): HfApi().restart_space( repo_id="https://huggingface.co/spaces/IlyasMoutawwakil/llm-bar-race", token=os.environ.get("HF_TOKEN", None), ) # read in the data 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): fig, ax = plt.subplots(figsize=(12, 6)) ax.set_xlim(0, 100) 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, n_bars=10, fixed_max=True, period_length=1000, steps_per_period=20, end_period_pause=100, bar_texttemplate="{x:.2f}", filter_column_colors=True, fig=fig, ) gr.HTML(fig.data) # Demo interface demo = gr.Blocks() with demo: # leaderboard title gr.HTML("

Open-LLM Race 🏃‍♂️

") with gr.Tabs(): with gr.TabItem(label="Pretrained Models"): get_bar_chart(ModelType.PT.name) with gr.TabItem(label="Instructions Finetuend Models"): get_bar_chart(ModelType.IFT.name) with gr.TabItem(label="RLHF Models"): get_bar_chart(ModelType.RL.name) # Restart space every hour scheduler = BackgroundScheduler() scheduler.add_job( func=restart_space, trigger="interval", seconds=3600, ) scheduler.start() demo.queue(concurrency_count=10).launch()