import gradio as gr
from huggingface_hub import HfApi
from matchmaking import *
from background_task import init_matchmaking, get_elo_data
from apscheduler.schedulers.background import BackgroundScheduler
matchmaking = Matchmaking()
api = HfApi()
# launch
scheduler = BackgroundScheduler()
scheduler.add_job(func=init_matchmaking, trigger="interval", seconds=300)
scheduler.start()
def update_elos():
matchmaking.read_history()
matchmaking.compute_elo()
matchmaking.save_elo_data()
with gr.Blocks() as block:
gr.Markdown(f"""
# 🏆 The Deep Reinforcement Learning Course Leaderboard 🏆
This is the leaderboard of trained agents during the Deep Reinforcement Learning Course. A free course from beginner to expert.
This is the Soccer environment leaderboard, use Ctrl+F to find your rank 🏆
We use an ELO rating to sort the models.
You **can click on the model's name** to be redirected to its model card which includes documentation.
🤖 You want to try to train your agents? Sign up to the Hugging Face free Deep Reinforcement Learning Course 🤗 .
You want to compare two agents? It's possible using this Spaces demo 👀 .
🔧 There is an **environment missing?** Please open an issue.
""")
with gr.Row():
output = gr.components.Dataframe(
value=get_elo_data(),
headers=["Ranking 🏆", "User 🤗", "Model id 🤖", "ELO 🚀", "Games played 🎮"],
datatype=["number", "markdown", "markdown", "number", "number"]
)
with gr.Row():
refresh = gr.Button("Refresh")
refresh.click(get_elo_data, inputs=[], outputs=output)
block.launch()