File size: 2,580 Bytes
71ea432
 
 
 
b62b9e0
71ea432
 
 
e155868
513af34
e155868
71ea432
 
b62b9e0
eb1e3b7
b62b9e0
 
eb1e3b7
fdae335
eb1e3b7
 
6ac0a0d
b62b9e0
6ac0a0d
e50ab51
7a5e1aa
 
 
e155868
7a5e1aa
 
 
fb91004
 
e50ab51
 
 
 
 
 
6ac0a0d
 
 
 
71ea432
24be325
9a866e7
24be325
9a866e7
24be325
9a866e7
24be325
9a866e7
24be325
9a866e7
 
24be325
9a866e7
24be325
9a866e7
24be325
9a866e7
 
 
 
 
 
 
 
 
 
 
24be325
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import json
import requests
from datasets import load_dataset
import gradio as gr
from huggingface_hub import HfApi, hf_hub_download, Repository
from huggingface_hub.repocard import metadata_load
import pandas as pd
from matchmaking import *
from background_task import init_matchmaking, run_background_loop
from apscheduler.schedulers.background import BackgroundScheduler
import asyncio


DATASET_REPO_URL = "https://huggingface.co/datasets/CarlCochet/BotFightData"
ELO_FILENAME = "soccer_elo.csv"
HF_TOKEN = os.environ.get("HF_TOKEN")

repo = Repository(
    local_dir="soccer_elo", clone_from=DATASET_REPO_URL, use_auth_token=HF_TOKEN
)

matchmaking = Matchmaking()
api = HfApi()


scheduler = BackgroundScheduler()
scheduler.add_job(func=init_matchmaking, trigger="interval", seconds=15000)
scheduler.start()

# loop = asyncio.get_event_loop()
# loop.create_task(run_background_loop())
# loop.run_forever()


def get_elo_data() -> pd.DataFrame:
    repo.git_pull()
    data = pd.read_csv(os.path.join(DATASET_REPO_URL, "resolve", "main", ELO_FILENAME))
    return data


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? <a href="http://eepurl.com/ic5ZUD" target="_blank">Sign up to the Hugging Face free Deep Reinforcement Learning Course ๐Ÿค— </a>.

        You want to compare two agents? <a href="https://huggingface.co/spaces/ThomasSimonini/Compare-Reinforcement-Learning-Agents" target="_blank">It's possible using this Spaces demo ๐Ÿ‘€ </a>.

        ๐Ÿ”ง 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()