ThomasSimonini HF staff commited on
Commit
2eecb1f
β€’
1 Parent(s): 581a790

Adding BackgroundScheduler to refresh the leaderboard every hour

Browse files
Files changed (1) hide show
  1. app.py +51 -6
app.py CHANGED
@@ -3,10 +3,15 @@ import json
3
  import requests
4
 
5
  from datasets import load_dataset
 
6
  import gradio as gr
 
 
 
7
  from huggingface_hub import HfApi, hf_hub_download
8
  from huggingface_hub.repocard import metadata_load
9
  import pandas as pd
 
10
  from utils import *
11
 
12
 
@@ -75,6 +80,30 @@ rl_envs = [
75
  "global": None
76
  },
77
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  "rl_env_beautiful": "BipedalWalker-v3",
79
  "rl_env": "BipedalWalker-v3",
80
  "video_link": "",
@@ -146,13 +175,13 @@ def get_model_ids(rl_env):
146
  api = HfApi()
147
  models = api.list_models(filter=rl_env)
148
  model_ids = [x.modelId for x in models]
149
- print(model_ids)
150
  return model_ids
151
 
152
  def get_model_dataframe(rl_env):
153
  # Get model ids associated with rl_env
154
  model_ids = get_model_ids(rl_env)
155
- print(model_ids)
156
  data = []
157
  for model_id in model_ids:
158
  """
@@ -176,12 +205,12 @@ def get_model_dataframe(rl_env):
176
  row["Std Reward"] = std_reward
177
  data.append(row)
178
  ranked_dataframe = rank_dataframe(pd.DataFrame.from_records(data))
179
- print("RANKED", ranked_dataframe)
180
  return ranked_dataframe
181
 
182
 
183
  def rank_dataframe(dataframe):
184
- print("DATAFRAME", dataframe)
185
  dataframe = dataframe.sort_values(by=['Results'], ascending=False)
186
  if not 'Ranking' in dataframe.columns:
187
  dataframe.insert(0, 'Ranking', [i for i in range(1,len(dataframe)+1)])
@@ -198,7 +227,7 @@ with block:
198
 
199
  Just choose which environment you trained your agent on and with Ctrl+F find your rank πŸ†
200
 
201
- **If you don't find your model, go to the bottom of the page and click on the refresh button**
202
 
203
  We use **lower bound result to sort the models: mean_reward - std_reward.**
204
 
@@ -226,10 +255,26 @@ with block:
226
  rl_env["global"] = gr.components.Dataframe(value= get_model_dataframe(rl_env["rl_env"]), headers=["Ranking πŸ†", "User πŸ€—", "Model id πŸ€–", "Results", "Mean Reward", "Std Reward"], datatype=["number", "markdown", "markdown", "number", "number", "number"])
227
  with gr.Row():
228
  data_run = gr.Button("Refresh")
229
- print("rl_env", rl_env["rl_env"])
230
  val = gr.Variable(value=[rl_env["rl_env"]])
231
  data_run.click(get_model_dataframe, inputs=[val], outputs =rl_env["global"])
232
 
233
 
234
  block.launch()
235
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  import requests
4
 
5
  from datasets import load_dataset
6
+
7
  import gradio as gr
8
+ from apscheduler.schedulers.background import BackgroundScheduler
9
+
10
+
11
  from huggingface_hub import HfApi, hf_hub_download
12
  from huggingface_hub.repocard import metadata_load
13
  import pandas as pd
14
+
15
  from utils import *
16
 
17
 
 
80
  "global": None
81
  },
82
  {
83
+ "rl_env_beautiful": "PongNoFrameskip-v4 🎾",
84
+ "rl_env": "PongNoFrameskip-v4",
85
+ "video_link": "",
86
+ "global": None
87
+ }
88
+ {
89
+ "rl_env_beautiful": "BreakoutNoFrameskip-v4 🧱",
90
+ "rl_env": "BreakoutNoFrameskip-v4",
91
+ "video_link": "",
92
+ "global": None
93
+ }
94
+ {
95
+ "rl_env_beautiful": "QbertNoFrameskip-v4 🐦",
96
+ "rl_env": "QbertNoFrameskip-v4",
97
+ "video_link": "",
98
+ "global": None
99
+ }
100
+ {
101
+ "rl_env_beautiful": "PitfallNoFrameskip-v4 πŸƒ",
102
+ "rl_env": "PitfallNoFrameskip-v4",
103
+ "video_link": "",
104
+ "global": None
105
+ }
106
+ {
107
  "rl_env_beautiful": "BipedalWalker-v3",
108
  "rl_env": "BipedalWalker-v3",
109
  "video_link": "",
 
175
  api = HfApi()
176
  models = api.list_models(filter=rl_env)
177
  model_ids = [x.modelId for x in models]
178
+ #print(model_ids)
179
  return model_ids
180
 
181
  def get_model_dataframe(rl_env):
182
  # Get model ids associated with rl_env
183
  model_ids = get_model_ids(rl_env)
184
+ #print(model_ids)
185
  data = []
186
  for model_id in model_ids:
187
  """
 
205
  row["Std Reward"] = std_reward
206
  data.append(row)
207
  ranked_dataframe = rank_dataframe(pd.DataFrame.from_records(data))
208
+ #print("RANKED", ranked_dataframe)
209
  return ranked_dataframe
210
 
211
 
212
  def rank_dataframe(dataframe):
213
+ #print("DATAFRAME", dataframe)
214
  dataframe = dataframe.sort_values(by=['Results'], ascending=False)
215
  if not 'Ranking' in dataframe.columns:
216
  dataframe.insert(0, 'Ranking', [i for i in range(1,len(dataframe)+1)])
 
227
 
228
  Just choose which environment you trained your agent on and with Ctrl+F find your rank πŸ†
229
 
230
+ **The leaderboard is updated every hour. If you don't find your model, go to the bottom of the page and click on the refresh button**
231
 
232
  We use **lower bound result to sort the models: mean_reward - std_reward.**
233
 
 
255
  rl_env["global"] = gr.components.Dataframe(value= get_model_dataframe(rl_env["rl_env"]), headers=["Ranking πŸ†", "User πŸ€—", "Model id πŸ€–", "Results", "Mean Reward", "Std Reward"], datatype=["number", "markdown", "markdown", "number", "number", "number"])
256
  with gr.Row():
257
  data_run = gr.Button("Refresh")
258
+ #print("rl_env", rl_env["rl_env"])
259
  val = gr.Variable(value=[rl_env["rl_env"]])
260
  data_run.click(get_model_dataframe, inputs=[val], outputs =rl_env["global"])
261
 
262
 
263
  block.launch()
264
 
265
+ def refresh_leaderboard():
266
+ """
267
+ Here we refresh the leaderboard:
268
+ we update the rl_env["global"] for each rl_envs in rl_env
269
+ """
270
+ for i in range(0, len(rl_envs)):
271
+ rl_env = rl_envs[i]
272
+ temp = get_model_dataframe(rl_env)
273
+ rl_env["global"] = temp
274
+ print("The leaderboard has been updated")
275
+
276
+ scheduler = BackgroundScheduler()
277
+ # Refresh every hour
278
+ scheduler.add_job(func=refresh_leaderboard, trigger="interval", seconds=3600)
279
+ scheduler.start()
280
+