Spaces:
Running
Running
import json | |
import random | |
from pathlib import Path | |
import gradio as gr | |
import pandas as pd | |
from datasets import load_dataset | |
abs_path = Path(__file__).parent | |
submissions = json.load(open(abs_path / "submissions.json")) | |
TASKS = [("gsm8k", "lighteval|gsm8k|0", "extractive_match")] | |
TYPES = [ | |
"markdown", | |
"markdown", | |
"number", | |
"number", | |
"markdown", | |
] | |
COLUMNS = ["User", "Model Name", "MMLU", "Average ⬆️", "Results"] | |
WIDTHS = ["25%", "25%", "15%", "15%", "10%"] | |
def load_results(dataset): | |
results = [] | |
try: | |
output = dataset["latest"]["results"] | |
output = output[-1] | |
except KeyError as e: | |
raise ValueError("Cannot find 'latest' key in the dataset") | |
try: | |
output = json.loads(output) | |
except ValueError as e: | |
raise ValueError("Cannot parse the output as JSON") | |
for name, task, metric in TASKS: | |
try: | |
output = output[task] | |
except KeyError as e: | |
raise ValueError(f"Cannot find '{task}' key in the dataset") | |
try: | |
output = (name, output[metric]) | |
except KeyError as e: | |
raise ValueError("Cannot find 'extractive_match' key in the dataset") | |
results.append(output) | |
return results | |
def load_submissions(): | |
leaderboard = [] | |
for submission in submissions["submissions"]: | |
ds = load_dataset(submission["results-dataset"], "results") | |
try: | |
results = load_results(ds) | |
except ValueError as e: | |
raise ValueError(f"Cannot load results for {ds['results-dataset']}") from e | |
leaderboard_row = {} | |
leaderboard_row["username"] = ( | |
f"[{submission['username']}](https://huggingface.co/{submission['username']})" | |
) | |
leaderboard_row["model_name"] = ( | |
f"[{submission['model_name']}](https://huggingface.co/{submission['username']}/{submission['model_name']})" | |
) | |
for name, result in results: | |
leaderboard_row[name] = result | |
leaderboard_row["Average ⬆️"] = sum(result for _, result in results) / len( | |
results | |
) | |
leaderboard_row["results-dataset"] = ( | |
f"[🔗](https://huggingface.co/datasets/{submission['results-dataset']})" | |
) | |
leaderboard.append(leaderboard_row) | |
return pd.DataFrame(leaderboard) | |
with gr.Blocks() as demo: | |
gr.Markdown(""" | |
# 🥇 a smol course leaderboad | |
A leaderboard of smol course students' submissions. | |
""") | |
with gr.Tabs(): | |
with gr.Tab("Demo"): | |
df = gr.Dataframe( | |
label="a smol course leaderboard", | |
value=load_submissions(), | |
headers=COLUMNS, | |
show_search="search", | |
show_copy_button=True, | |
show_fullscreen_button=True, | |
show_row_numbers=True, | |
pinned_columns=1, | |
static_columns=[0], | |
datatype=TYPES, | |
column_widths=WIDTHS, | |
) | |
with gr.Tab("Docs"): | |
gr.Markdown((Path(__file__).parent / "docs.md").read_text()) | |
if __name__ == "__main__": | |
demo.launch() | |