Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
import gradio as gr | |
from apscheduler.schedulers.background import BackgroundScheduler | |
from src.static.env import API, REPO_ID, HF_TOKEN | |
from src.static.about import TITLE, INTRO, ABOUT, DOCUMENTATION, SUBMIT | |
from src.leaderboards.get_from_hub import get_leaderboard_info | |
from src.static.tag_info import * | |
from src.static.display import make_clickable | |
def restart_space(): | |
API.restart_space(repo_id=REPO_ID, token=HF_TOKEN) | |
LEADERBOARDS_TO_INFO, INFO_TO_LEADERBOARDS = get_leaderboard_info() | |
def update_leaderboards(show_all, modality_tags, submission_tags, test_set_tags, evaluation_tags, language_tags, judge_tags): | |
spaces_of_interest = [] | |
if show_all: | |
spaces_of_interest = INFO_TO_LEADERBOARDS["all"] | |
else: | |
number_of_tag_types = 0 | |
for tag in modality_tags: | |
spaces_of_interest.extend(INFO_TO_LEADERBOARDS["modality"][tag.lower()]) | |
number_of_tag_types += 1 | |
for tag in submission_tags: | |
spaces_of_interest.extend(INFO_TO_LEADERBOARDS["submission"][tag.lower()]) | |
number_of_tag_types += 1 | |
for tag in test_set_tags: | |
spaces_of_interest.extend(INFO_TO_LEADERBOARDS["test"][tag.lower()]) | |
number_of_tag_types += 1 | |
for tag in evaluation_tags: | |
spaces_of_interest.extend(INFO_TO_LEADERBOARDS["eval"][tag.lower()]) | |
number_of_tag_types += 1 | |
for tag in language_tags: | |
spaces_of_interest.extend(INFO_TO_LEADERBOARDS["language"][tag.lower()]) | |
number_of_tag_types += 1 | |
for tag in judge_tags: | |
spaces_of_interest.extend(INFO_TO_LEADERBOARDS["judge"][tag.lower()]) | |
number_of_tag_types += 1 | |
if number_of_tag_types > 1: | |
# Intersection of tag types | |
spaces_of_interest = [space for space in spaces_of_interest if spaces_of_interest.count(space) > 1] | |
spaces_of_interest = sorted(list(set(spaces_of_interest))) | |
return "\n".join( | |
[ | |
make_clickable(space) + | |
f"*Tags: {', '.join(LEADERBOARDS_TO_INFO[space]) if len(LEADERBOARDS_TO_INFO[space]) > 0 else 'None. Please fill the tags!'}*" | |
for space in sorted(spaces_of_interest) | |
] | |
) | |
demo = gr.Blocks() | |
with demo: | |
gr.Markdown(TITLE) | |
gr.Markdown(INTRO, elem_classes="markdown-text") | |
with gr.Row(): | |
with gr.Column(): | |
modality_tags = gr.CheckboxGroup( | |
choices=[tag.name for tag in Modality], | |
value=[], | |
label="Modality of choice" | |
) | |
submission_tags = gr.CheckboxGroup( | |
choices=[tag.name for tag in SubmissionType], | |
value=[], | |
label="Submission type" | |
) | |
test_set_tags = gr.CheckboxGroup( | |
choices=[tag.name for tag in TestSetStatus], | |
value=[], | |
label="Test set status" | |
) | |
judge_tags = gr.CheckboxGroup( | |
choices=[tag.name for tag in Judge], | |
value=[], | |
label="Judge used for the evaluation" | |
) | |
with gr.Column(): | |
show_all = gr.Checkbox( | |
value=False, | |
label="Show all leaderboards" | |
) | |
evaluation_tags = gr.CheckboxGroup( | |
choices=[tag.name for tag in EvaluationCategory], | |
value=[], | |
label="Specific evaluation categories" | |
) | |
language_tags = gr.CheckboxGroup( | |
choices=[tag.capitalize() for tag in sorted(list(INFO_TO_LEADERBOARDS["language"].keys()))], | |
value=[], | |
label="Specific languages" | |
) | |
with gr.Row(): | |
leaderboards = gr.Markdown( | |
value="", | |
) | |
for selector in [modality_tags, submission_tags, test_set_tags, evaluation_tags, language_tags, judge_tags]: | |
selector.change( | |
lambda _: False, | |
outputs=show_all | |
) | |
for selector in [show_all, modality_tags, submission_tags, test_set_tags, evaluation_tags, language_tags, judge_tags]: | |
selector.change( | |
update_leaderboards, | |
[show_all, modality_tags, submission_tags, test_set_tags, evaluation_tags, language_tags, judge_tags], | |
leaderboards, | |
queue=True, | |
) | |
with gr.Accordion("How to submit your leaderboard?", open=False): | |
gr.Markdown(SUBMIT, elem_classes="markdown-text") | |
with gr.Accordion("What do the tags mean?", open=False): | |
gr.Markdown(ABOUT, elem_classes="markdown-text") | |
#with gr.Accordion("How to build your own leaderboard?", open=False): | |
# gr.Markdown(DOCUMENTATION, elem_classes="markdown-text") | |
scheduler = BackgroundScheduler() | |
scheduler.add_job(restart_space, "interval", seconds=10800) # restarted every 3h | |
scheduler.start() | |
demo.queue(default_concurrency_limit=40).launch() |