AlexNijjar
commited on
Commit
β’
656f516
1
Parent(s):
1954297
Lazily refresh data
Browse files
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 =
|
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()
|
93 |
-
|
|
|
|
|
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 |
-
|
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
|
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 |
-
|
188 |
last_refresh = now
|
189 |
-
|
|
|
|
|
|
|
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 =
|
230 |
-
table.attach_load_event(lambda
|
231 |
-
demo.
|
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__':
|