llm-bar-race / app.py
IlyasMoutawwakil's picture
fix
73a04d8
raw history blame
No virus
2.83 kB
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("<h1>Open-LLM Race πŸƒβ€β™‚οΈ</h1>")
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()