AlexNijjar commited on
Commit
656f516
β€’
1 Parent(s): 1954297

Lazily refresh data

Browse files
Files changed (1) hide show
  1. app.py +17 -12
app.py CHANGED
@@ -13,7 +13,7 @@ from wandb.apis.public import Run
13
 
14
  WANDB_RUN_PATH = os.environ["WANDB_RUN_PATH"]
15
 
16
- REFRESH_RATE = 60 * 5 # 5 minutes
17
  NET_UID = 39
18
  AVERAGE_BENCHMARK_TIME_WARNING_THRESHOLD = 600 # 10 minutes
19
  ETA_WARNING_THRESHOLD = 43200 # 12 hours
@@ -22,7 +22,6 @@ subtensor = bt.subtensor()
22
  metagraph = bt.metagraph(netuid=NET_UID)
23
  bt.logging.disable_logging()
24
 
25
- wandb_api = wandb.Api()
26
  demo = gr.Blocks(css=".typewriter {font-family: 'JMH Typewriter', sans-serif;}", fill_height=True, fill_width=True)
27
 
28
 
@@ -89,8 +88,10 @@ def get_identity(uid: int) -> str | None:
89
  return identity.value["name"] if identity != None else None
90
 
91
 
92
- def fetch_wandb_data() -> dict[int, State]:
93
- data: dict[int, State] = {}
 
 
94
 
95
  now = datetime.now(tz=ZoneInfo("America/New_York"))
96
  noon = now.replace(hour=12, minute=0, second=0, microsecond=0)
@@ -165,7 +166,7 @@ def fetch_wandb_data() -> dict[int, State]:
165
  updated=block - metagraph.last_update[uid],
166
  )
167
 
168
- return dict(sorted(data.items()))
169
 
170
 
171
  def get_latest_version(data: dict[int, State]) -> str:
@@ -177,19 +178,23 @@ def get_latest_version(data: dict[int, State]) -> str:
177
  return str(latest_version)
178
 
179
 
180
- def get_data() -> gr.Dataframe:
181
- global data
182
  global last_refresh
183
  now = datetime.now(tz=ZoneInfo("America/New_York"))
184
 
185
  if (now - last_refresh).total_seconds() > REFRESH_RATE:
 
186
  metagraph.sync(subtensor=subtensor)
187
- data = fetch_wandb_data()
188
  last_refresh = now
189
- print(f"Refreshing States at {now.strftime('%Y-%m-%d %H:%M:%S')}")
 
 
 
190
 
191
  elements: list[tuple] = []
192
  latest_version = get_latest_version(data)
 
193
 
194
  for uid, state in data.items():
195
  eta = int(state.average_benchmark_time * (state.submissions - (state.benchmarks + state.invalid)))
@@ -226,9 +231,9 @@ def get_data() -> gr.Dataframe:
226
 
227
  def main():
228
  with demo:
229
- table = get_data()
230
- table.attach_load_event(lambda _: get_data(), REFRESH_RATE, [table])
231
- demo.queue().launch()
232
 
233
 
234
  if __name__ == '__main__':
 
13
 
14
  WANDB_RUN_PATH = os.environ["WANDB_RUN_PATH"]
15
 
16
+ REFRESH_RATE = 30
17
  NET_UID = 39
18
  AVERAGE_BENCHMARK_TIME_WARNING_THRESHOLD = 600 # 10 minutes
19
  ETA_WARNING_THRESHOLD = 43200 # 12 hours
 
22
  metagraph = bt.metagraph(netuid=NET_UID)
23
  bt.logging.disable_logging()
24
 
 
25
  demo = gr.Blocks(css=".typewriter {font-family: 'JMH Typewriter', sans-serif;}", fill_height=True, fill_width=True)
26
 
27
 
 
88
  return identity.value["name"] if identity != None else None
89
 
90
 
91
+ def fetch_wandb_data():
92
+ wandb_api = wandb.Api()
93
+ global data
94
+ data.clear()
95
 
96
  now = datetime.now(tz=ZoneInfo("America/New_York"))
97
  noon = now.replace(hour=12, minute=0, second=0, microsecond=0)
 
166
  updated=block - metagraph.last_update[uid],
167
  )
168
 
169
+ data = dict(sorted(data.items()))
170
 
171
 
172
  def get_latest_version(data: dict[int, State]) -> str:
 
178
  return str(latest_version)
179
 
180
 
181
+ def try_refresh():
 
182
  global last_refresh
183
  now = datetime.now(tz=ZoneInfo("America/New_York"))
184
 
185
  if (now - last_refresh).total_seconds() > REFRESH_RATE:
186
+ print(f"Refreshing States at {now.strftime('%Y-%m-%d %H:%M:%S')}")
187
  metagraph.sync(subtensor=subtensor)
188
+ fetch_wandb_data()
189
  last_refresh = now
190
+
191
+
192
+ def get_data() -> gr.Dataframe:
193
+ try_refresh()
194
 
195
  elements: list[tuple] = []
196
  latest_version = get_latest_version(data)
197
+ now = datetime.now(tz=ZoneInfo("America/New_York"))
198
 
199
  for uid, state in data.items():
200
  eta = int(state.average_benchmark_time * (state.submissions - (state.benchmarks + state.invalid)))
 
231
 
232
  def main():
233
  with demo:
234
+ table = gr.Dataframe()
235
+ table.attach_load_event(lambda: get_data(), None)
236
+ demo.launch()
237
 
238
 
239
  if __name__ == '__main__':