AlexNijjar
commited on
Commit
•
aed38fa
1
Parent(s):
6b0d74c
Use chain identity
Browse files- app.py +27 -24
- requirements.txt +1 -0
app.py
CHANGED
@@ -5,6 +5,7 @@ from dataclasses import dataclass
|
|
5 |
from datetime import datetime
|
6 |
from zoneinfo import ZoneInfo
|
7 |
|
|
|
8 |
import gradio as gr
|
9 |
import numpy as np
|
10 |
import plotly.graph_objects as go
|
@@ -12,35 +13,24 @@ import wandb
|
|
12 |
from substrateinterface import Keypair
|
13 |
from wandb.apis.public import Run
|
14 |
|
15 |
-
HOTKEYS_TO_KNOWN_VALIDATORS: dict[str, str] = {
|
16 |
-
"5GKH9FPPnWSUoeeTJp19wVtd84XqFW4pyK2ijV2GsFbhTrP1": "Taostats & Corcel",
|
17 |
-
"5F4tQyWrhfGVcNhoqeiNsR6KjD4wMZ2kfhLj4oHYuyHbZAc3": "Openτensor Foundaτion",
|
18 |
-
"5FFApaS75bv5pJHfAp2FVLBj9ZaXuFDjEypsaBNc1wCfe52v": "RoundTable21",
|
19 |
-
"5HEo565WAy4Dbq3Sv271SAi7syBSofyfhhwRNjFNSM2gP9M2": "Foundry",
|
20 |
-
"5HK5tp6t2S59DywmHRWPBVJeJ86T61KjurYqeooqj8sREpeN": "Bittensor Guru",
|
21 |
-
"5GP7c3fFazW9GXK8Up3qgu2DJBk8inu4aK9TZy3RuoSWVCMi": "Datura",
|
22 |
-
"5EhvL1FVkQPpMjZX4MAADcW42i3xPSF1KiCpuaxTYVr28sux": "TAO-Validator.com",
|
23 |
-
"5E4z3h9yVhmQyCFWNbY9BPpwhx4xFiPwq3eeqmBgVF6KULde": "Tensorplex Labs",
|
24 |
-
"5Hb63SvXBXqZ8zw6mwW1A39fHdqUrJvohXgepyhp2jgWedSB": "Miner's Union Validator",
|
25 |
-
"5CXRfP2ekFhe62r7q3vppRajJmGhTi7vwvb2yr79jveZ282w": "Rizzo",
|
26 |
-
"5CVS9d1NcQyWKUyadLevwGxg6LgBcF9Lik6NSnbe5q59jwhE": "Ary van der Touw",
|
27 |
-
"5Fq5v71D4LX8Db1xsmRSy6udQThcZ8sFDqxQFwnUZ1BuqY5A": "NorthTensor",
|
28 |
-
"5CsvRJXuR955WojnGMdok1hbhffZyB4N5ocrv82f3p5A2zVp": "Owl Ventures",
|
29 |
-
"5HNQURvmjjYhTSksi8Wfsw676b4owGwfLR2BFAQzG7H3HhYf": "Neural Internet",
|
30 |
-
"5DvTpiniW9s3APmHRYn8FroUWyfnLtrsid5Mtn5EwMXHN2ed": "FirstTensor.com",
|
31 |
-
}
|
32 |
-
|
33 |
WANDB_RUN_PATH = os.environ["WANDB_RUN_PATH"]
|
34 |
SOURCE_VALIDATOR_UID = int(os.environ["SOURCE_VALIDATOR_UID"])
|
35 |
|
36 |
START_DATE = datetime(2024, 9, 17)
|
|
|
37 |
REFRESH_RATE = 60 * 30 # 30 minutes
|
38 |
GRAPH_HISTORY_DAYS = 30
|
39 |
MAX_GRAPH_ENTRIES = 10
|
40 |
|
41 |
wandb_api = wandb.Api()
|
42 |
demo = gr.Blocks(css=".typewriter {font-family: 'JMH Typewriter', sans-serif;}", fill_height=True, fill_width=True)
|
|
|
|
|
|
|
|
|
|
|
43 |
runs: dict[int, list[Run]] = {}
|
|
|
44 |
|
45 |
|
46 |
@dataclass
|
@@ -251,22 +241,36 @@ def fetch_wandb_data():
|
|
251 |
runs = dict(sorted(runs.items(), key=lambda item: item[0]))
|
252 |
|
253 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
254 |
def get_choices() -> list[tuple[str, int]]:
|
255 |
choices: list[tuple[str, int]] = []
|
256 |
for uid, run in runs.items():
|
257 |
-
hotkey = run[0].config["hotkey"]
|
258 |
benchmarks = dict(run[0].summary.get("benchmarks", {}))
|
259 |
finished = any("winner" in value for value in benchmarks.values())
|
260 |
progress_text = "Finished" if finished else "In Progress"
|
261 |
-
|
262 |
-
choices.append((f"{uid} - {HOTKEYS_TO_KNOWN_VALIDATORS[hotkey]} ({progress_text})", uid))
|
263 |
-
else:
|
264 |
-
choices.append((str(f"{uid} - {hotkey}"), uid))
|
265 |
return choices
|
266 |
|
267 |
|
268 |
def refresh():
|
|
|
269 |
fetch_wandb_data()
|
|
|
270 |
demo.clear()
|
271 |
now = datetime.now(tz=ZoneInfo("America/New_York"))
|
272 |
|
@@ -298,7 +302,6 @@ def refresh():
|
|
298 |
label="Source Validator"
|
299 |
)
|
300 |
|
301 |
-
|
302 |
leaderboard = gr.components.Dataframe(
|
303 |
create_leaderboard(runs[dropdown.value]),
|
304 |
headers=["Uid", "Winner", "Model", "Score", "Gen Time", "Similarity", "Size", "VRAM Usage", "Power Usage", "Hotkey"],
|
|
|
5 |
from datetime import datetime
|
6 |
from zoneinfo import ZoneInfo
|
7 |
|
8 |
+
import bittensor as bt
|
9 |
import gradio as gr
|
10 |
import numpy as np
|
11 |
import plotly.graph_objects as go
|
|
|
13 |
from substrateinterface import Keypair
|
14 |
from wandb.apis.public import Run
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
WANDB_RUN_PATH = os.environ["WANDB_RUN_PATH"]
|
17 |
SOURCE_VALIDATOR_UID = int(os.environ["SOURCE_VALIDATOR_UID"])
|
18 |
|
19 |
START_DATE = datetime(2024, 9, 17)
|
20 |
+
NET_UID = 39
|
21 |
REFRESH_RATE = 60 * 30 # 30 minutes
|
22 |
GRAPH_HISTORY_DAYS = 30
|
23 |
MAX_GRAPH_ENTRIES = 10
|
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 |
+
subtensor = bt.subtensor()
|
29 |
+
metagraph = bt.metagraph(netuid=NET_UID)
|
30 |
+
bt.logging.disable_logging()
|
31 |
+
|
32 |
runs: dict[int, list[Run]] = {}
|
33 |
+
validator_identities: dict[int, str] = {}
|
34 |
|
35 |
|
36 |
@dataclass
|
|
|
241 |
runs = dict(sorted(runs.items(), key=lambda item: item[0]))
|
242 |
|
243 |
|
244 |
+
def fetch_identities():
|
245 |
+
validator_identities.clear()
|
246 |
+
for uid in range(metagraph.n.item()):
|
247 |
+
if metagraph.validator_trust[uid]:
|
248 |
+
identity = subtensor.substrate.query('SubtensorModule', 'Identities', [metagraph.coldkeys[uid]])
|
249 |
+
if identity != None:
|
250 |
+
validator_identities[uid] = identity.value["name"]
|
251 |
+
|
252 |
+
|
253 |
+
def get_validator_name(validator_uid: int) -> str:
|
254 |
+
if validator_uid in validator_identities:
|
255 |
+
return validator_identities[validator_uid]
|
256 |
+
else:
|
257 |
+
return metagraph.hotkeys[validator_uid]
|
258 |
+
|
259 |
+
|
260 |
def get_choices() -> list[tuple[str, int]]:
|
261 |
choices: list[tuple[str, int]] = []
|
262 |
for uid, run in runs.items():
|
|
|
263 |
benchmarks = dict(run[0].summary.get("benchmarks", {}))
|
264 |
finished = any("winner" in value for value in benchmarks.values())
|
265 |
progress_text = "Finished" if finished else "In Progress"
|
266 |
+
choices.append((f"{uid} - {get_validator_name(uid)} ({progress_text})", uid))
|
|
|
|
|
|
|
267 |
return choices
|
268 |
|
269 |
|
270 |
def refresh():
|
271 |
+
metagraph.sync(subtensor=subtensor)
|
272 |
fetch_wandb_data()
|
273 |
+
fetch_identities()
|
274 |
demo.clear()
|
275 |
now = datetime.now(tz=ZoneInfo("America/New_York"))
|
276 |
|
|
|
302 |
label="Source Validator"
|
303 |
)
|
304 |
|
|
|
305 |
leaderboard = gr.components.Dataframe(
|
306 |
create_leaderboard(runs[dropdown.value]),
|
307 |
headers=["Uid", "Winner", "Model", "Score", "Gen Time", "Similarity", "Size", "VRAM Usage", "Power Usage", "Hotkey"],
|
requirements.txt
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
black
|
2 |
gradio
|
|
|
3 |
wandb
|
4 |
substrate-interface
|
5 |
plotly
|
|
|
1 |
black
|
2 |
gradio
|
3 |
+
bittensor
|
4 |
wandb
|
5 |
substrate-interface
|
6 |
plotly
|