Spaces:
Runtime error
Runtime error
import os | |
import json | |
import requests | |
import datetime | |
import gradio as gr | |
import pandas as pd | |
from huggingface_hub import HfApi, hf_hub_download, snapshot_download | |
from huggingface_hub.repocard import metadata_load | |
from apscheduler.schedulers.background import BackgroundScheduler | |
from tqdm.contrib.concurrent import thread_map | |
from utils import * | |
DATASET_REPO_URL = "https://huggingface.co/datasets/huggingface-projects/drlc-leaderboard-data" | |
DATASET_REPO_ID = "huggingface-projects/drlc-leaderboard-data" | |
HF_TOKEN = os.environ.get("HF_TOKEN") | |
block = gr.Blocks() | |
api = HfApi(token=HF_TOKEN) | |
# Containing the data | |
rl_envs = [ | |
{ | |
"rl_env_beautiful": "LunarLander-v2 π", | |
"rl_env": "LunarLander-v2", | |
"video_link": "", | |
"global": None | |
}, | |
{ | |
"rl_env_beautiful": "CartPole-v1", | |
"rl_env": "CartPole-v1", | |
"video_link": "", | |
"global": None | |
}, | |
{ | |
"rl_env_beautiful": "FrozenLake-v1-4x4-no_slippery βοΈ", | |
"rl_env": "FrozenLake-v1-4x4-no_slippery", | |
"video_link": "", | |
"global": None | |
}, | |
{ | |
"rl_env_beautiful": "FrozenLake-v1-8x8-no_slippery βοΈ", | |
"rl_env": "FrozenLake-v1-8x8-no_slippery", | |
"video_link": "", | |
"global": None | |
}, | |
{ | |
"rl_env_beautiful": "FrozenLake-v1-4x4 βοΈ", | |
"rl_env": "FrozenLake-v1-4x4", | |
"video_link": "", | |
"global": None | |
}, | |
{ | |
"rl_env_beautiful": "FrozenLake-v1-8x8 βοΈ", | |
"rl_env": "FrozenLake-v1-8x8", | |
"video_link": "", | |
"global": None | |
}, | |
{ | |
"rl_env_beautiful": "Taxi-v3 π", | |
"rl_env": "Taxi-v3", | |
"video_link": "", | |
"global": None | |
}, | |
{ | |
"rl_env_beautiful": "CarRacing-v0 ποΈ", | |
"rl_env": "CarRacing-v0", | |
"video_link": "", | |
"global": None | |
}, | |
{ | |
"rl_env_beautiful": "CarRacing-v2 ποΈ", | |
"rl_env": "CarRacing-v2", | |
"video_link": "", | |
"global": None | |
}, | |
{ | |
"rl_env_beautiful": "MountainCar-v0 β°οΈ", | |
"rl_env": "MountainCar-v0", | |
"video_link": "", | |
"global": None | |
}, | |
{ | |
"rl_env_beautiful": "SpaceInvadersNoFrameskip-v4 πΎ", | |
"rl_env": "SpaceInvadersNoFrameskip-v4", | |
"video_link": "", | |
"global": None | |
}, | |
{ | |
"rl_env_beautiful": "PongNoFrameskip-v4 πΎ", | |
"rl_env": "PongNoFrameskip-v4", | |
"video_link": "", | |
"global": None | |
}, | |
{ | |
"rl_env_beautiful": "BreakoutNoFrameskip-v4 π§±", | |
"rl_env": "BreakoutNoFrameskip-v4", | |
"video_link": "", | |
"global": None | |
}, | |
{ | |
"rl_env_beautiful": "QbertNoFrameskip-v4 π¦", | |
"rl_env": "QbertNoFrameskip-v4", | |
"video_link": "", | |
"global": None | |
}, | |
{ | |
"rl_env_beautiful": "BipedalWalker-v3", | |
"rl_env": "BipedalWalker-v3", | |
"video_link": "", | |
"global": None | |
}, | |
{ | |
"rl_env_beautiful": "Walker2DBulletEnv-v0", | |
"rl_env": "Walker2DBulletEnv-v0", | |
"video_link": "", | |
"global": None | |
}, | |
{ | |
"rl_env_beautiful": "AntBulletEnv-v0", | |
"rl_env": "AntBulletEnv-v0", | |
"video_link": "", | |
"global": None | |
}, | |
{ | |
"rl_env_beautiful": "HalfCheetahBulletEnv-v0", | |
"rl_env": "HalfCheetahBulletEnv-v0", | |
"video_link": "", | |
"global": None | |
}, | |
{ | |
"rl_env_beautiful": "PandaReachDense-v2", | |
"rl_env": "PandaReachDense-v2", | |
"video_link": "", | |
"global": None | |
}, | |
{ | |
"rl_env_beautiful": "PandaReachDense-v3", | |
"rl_env": "PandaReachDense-v3", | |
"video_link": "", | |
"global": None | |
}, | |
{ | |
"rl_env_beautiful": "Pixelcopter-PLE-v0", | |
"rl_env": "Pixelcopter-PLE-v0", | |
"video_link": "", | |
"global": None | |
} | |
] | |
def download_leaderboard_dataset(): | |
# Download the dataset from the Hugging Face Hub | |
path = snapshot_download(repo_id=DATASET_REPO_ID, repo_type="dataset") | |
return path | |
def get_data(rl_env, path) -> pd.DataFrame: | |
""" | |
Get data from rl_env CSV file and return as DataFrame | |
""" | |
csv_path = os.path.join(path, rl_env + ".csv") | |
data = pd.read_csv(csv_path) | |
return data | |
def get_last_refresh_time(path) -> str: | |
""" | |
Get the latest modification time of any CSV file in the dataset path | |
""" | |
# Get list of all CSV files in the dataset path | |
csv_files = [os.path.join(path, f) for f in os.listdir(path) if f.endswith('.csv')] | |
# Get the latest modification time | |
latest_time = max([os.path.getmtime(f) for f in csv_files]) | |
# Convert to human-readable format | |
return datetime.datetime.fromtimestamp(latest_time).strftime('%Y-%m-%d %H:%M:%S') | |
with block: | |
path_ = download_leaderboard_dataset() | |
# Get the last refresh time | |
last_refresh_time = get_last_refresh_time(path_) | |
gr.Markdown(f""" | |
# π Deep Reinforcement Learning Course Leaderboard π | |
Presenting the latest leaderboard from the Hugging Face Deep RL Course - refresh ({last_refresh_time}). | |
""") | |
gr.Markdown(f"**Last Data Refresh:** {last_refresh_time}") | |
for i in range(0, len(rl_envs)): | |
rl_env = rl_envs[i] | |
with gr.TabItem(rl_env["rl_env_beautiful"]): | |
with gr.Row(): | |
markdown = f""" | |
# {rl_env['rl_env_beautiful']} | |
### Leaderboard for {rl_env['rl_env_beautiful']} | |
""" | |
gr.Markdown(markdown) | |
with gr.Row(): | |
# Display the data for this RL environment | |
data = get_data(rl_env["rl_env"], path_) | |
gr.Dataframe( | |
value=data, | |
headers=["Ranking π", "User π€", "Model id π€", "Results", "Mean Reward", "Std Reward"], | |
datatype=["number", "markdown", "markdown", "number", "number", "number"], | |
row_count=(100, 'fixed') | |
) | |
block.launch() |