AlexNijjar commited on
Commit
114b3d6
β€’
1 Parent(s): 2c9c38b

Expand area and check if winner is present

Browse files
Files changed (1) hide show
  1. app.py +31 -24
app.py CHANGED
@@ -31,21 +31,11 @@ HOTKEYS_TO_KNOWN_VALIDATORS: dict[str, str] = {
31
 
32
  WANDB_RUN_PATH = os.environ["WANDB_RUN_PATH"]
33
 
34
- REFRESH_RATE = 60 * 5
 
35
  ETA_WARNING_THRESHOLD = 43200 # 12 hours
36
 
37
 
38
- @dataclass
39
- class State:
40
- hotkey: str
41
- version: str
42
- submissions: int
43
- benchmarks: int
44
- invalid: int
45
- average_benchmark_time: float
46
-
47
-
48
- # enum
49
  class Status(Enum):
50
  IN_PROGRESS = ("In Progress", "orange")
51
  DONE = ("Done", "springgreen")
@@ -61,8 +51,19 @@ class Status(Enum):
61
  return self.value[1]
62
 
63
 
 
 
 
 
 
 
 
 
 
 
 
64
  wandb_api = wandb.Api()
65
- demo = gr.Blocks(css=".typewriter {font-family: 'JMH Typewriter', sans-serif;}")
66
  data: dict[int, State] = {}
67
 
68
 
@@ -101,6 +102,7 @@ def fetch_wandb_data():
101
  submissions: set[int] = set()
102
  benchmarks: set[int] = set()
103
  invalid: list[int] = []
 
104
  average_benchmark_time = 0.0
105
 
106
  for key, value in run.summary.items():
@@ -115,11 +117,22 @@ def fetch_wandb_data():
115
  submissions.add(int(submission_key))
116
 
117
  elif key == "benchmarks":
 
 
 
118
  for benchmark_key, benchmark_value in value.items():
119
  benchmarks.add(int(benchmark_key))
120
 
121
  source_validator_uid = run.config["uid"]
 
 
 
 
 
 
 
122
  data[source_validator_uid] = State(
 
123
  hotkey=run.config["hotkey"],
124
  version=run.tags[1][8:],
125
  submissions=len(submissions),
@@ -151,30 +164,24 @@ def refresh():
151
  latest_version = get_latest_version()
152
 
153
  for source_validator_uid, state in data.items():
154
- status = Status.IN_PROGRESS
155
- if state.benchmarks + state.invalid == state.submissions:
156
- status = Status.DONE
157
- elif not state.submissions or (not state.average_benchmark_time and state.benchmarks):
158
- status = Status.BROKEN
159
-
160
  eta = int(state.average_benchmark_time * (state.submissions - (state.benchmarks + state.invalid)))
161
  time_left = timedelta(seconds=eta)
162
  eta_date = now + time_left
163
- eta_time = eta_date.strftime("%Y-%m-%d %I:%M:%S %p") if eta > 0 else status.get_alt_time_text()
164
 
165
- average_time_text = f"{timedelta(seconds=int(state.average_benchmark_time))}" if state.average_benchmark_time else status.get_alt_time_text(),
166
 
167
  elements.append((
168
  source_validator_uid,
169
  HOTKEYS_TO_KNOWN_VALIDATORS.get(state.hotkey, state.hotkey),
170
  f"<span style='color: {'springgreen' if state.version == latest_version else 'red'}'>{state.version}</span>",
171
- f"<span style='color: {status.color()}'>{status.name()}</span>",
172
  state.benchmarks + state.invalid,
173
  state.submissions,
174
  state.invalid,
175
- f"<span style='color: {'orange' if state.average_benchmark_time > 600 else 'springgreen'}'>{average_time_text[0]}</span>",
176
  f"<span style='color: {'orange' if eta > ETA_WARNING_THRESHOLD else 'springgreen'}'>{eta_time}</span>",
177
- f"<span style='color: {'orange' if eta > ETA_WARNING_THRESHOLD else 'springgreen'}'>{time_left if eta > 0 else status.get_alt_time_text()}</span>"
178
  ))
179
 
180
  gr.components.Dataframe(
 
31
 
32
  WANDB_RUN_PATH = os.environ["WANDB_RUN_PATH"]
33
 
34
+ REFRESH_RATE = 60 * 5 # 5 minutes
35
+ AVERAGE_BENCHMARK_TIME_WARNING_THRESHOLD = 600 # 10 minutes
36
  ETA_WARNING_THRESHOLD = 43200 # 12 hours
37
 
38
 
 
 
 
 
 
 
 
 
 
 
 
39
  class Status(Enum):
40
  IN_PROGRESS = ("In Progress", "orange")
41
  DONE = ("Done", "springgreen")
 
51
  return self.value[1]
52
 
53
 
54
+ @dataclass
55
+ class State:
56
+ status: Status
57
+ hotkey: str
58
+ version: str
59
+ submissions: int
60
+ benchmarks: int
61
+ invalid: int
62
+ average_benchmark_time: float
63
+
64
+
65
  wandb_api = wandb.Api()
66
+ demo = gr.Blocks(css=".typewriter {font-family: 'JMH Typewriter', sans-serif;}", fill_height=True, fill_width=True)
67
  data: dict[int, State] = {}
68
 
69
 
 
102
  submissions: set[int] = set()
103
  benchmarks: set[int] = set()
104
  invalid: list[int] = []
105
+ completed = False
106
  average_benchmark_time = 0.0
107
 
108
  for key, value in run.summary.items():
 
117
  submissions.add(int(submission_key))
118
 
119
  elif key == "benchmarks":
120
+ if any("winner" in benchmark for benchmark in dict(value).values()):
121
+ completed = True
122
+
123
  for benchmark_key, benchmark_value in value.items():
124
  benchmarks.add(int(benchmark_key))
125
 
126
  source_validator_uid = run.config["uid"]
127
+
128
+ status = Status.IN_PROGRESS
129
+ if completed:
130
+ status = Status.DONE
131
+ elif not submissions or (not average_benchmark_time and benchmarks):
132
+ status = Status.BROKEN
133
+
134
  data[source_validator_uid] = State(
135
+ status=status,
136
  hotkey=run.config["hotkey"],
137
  version=run.tags[1][8:],
138
  submissions=len(submissions),
 
164
  latest_version = get_latest_version()
165
 
166
  for source_validator_uid, state in data.items():
 
 
 
 
 
 
167
  eta = int(state.average_benchmark_time * (state.submissions - (state.benchmarks + state.invalid)))
168
  time_left = timedelta(seconds=eta)
169
  eta_date = now + time_left
170
+ eta_time = eta_date.strftime("%Y-%m-%d %I:%M:%S %p") if eta > 0 and state.status == Status.IN_PROGRESS else state.status.get_alt_time_text()
171
 
172
+ average_time_text = f"{timedelta(seconds=int(state.average_benchmark_time))}" if state.average_benchmark_time else state.status.get_alt_time_text(),
173
 
174
  elements.append((
175
  source_validator_uid,
176
  HOTKEYS_TO_KNOWN_VALIDATORS.get(state.hotkey, state.hotkey),
177
  f"<span style='color: {'springgreen' if state.version == latest_version else 'red'}'>{state.version}</span>",
178
+ f"<span style='color: {state.status.color()}'>{state.status.name()}</span>",
179
  state.benchmarks + state.invalid,
180
  state.submissions,
181
  state.invalid,
182
+ f"<span style='color: {'orange' if state.average_benchmark_time > AVERAGE_BENCHMARK_TIME_WARNING_THRESHOLD else 'springgreen'}'>{average_time_text[0]}</span>",
183
  f"<span style='color: {'orange' if eta > ETA_WARNING_THRESHOLD else 'springgreen'}'>{eta_time}</span>",
184
+ f"<span style='color: {'orange' if eta > ETA_WARNING_THRESHOLD else 'springgreen'}'>{time_left if eta > 0 and state.status == Status.IN_PROGRESS else state.status.get_alt_time_text()}</span>"
185
  ))
186
 
187
  gr.components.Dataframe(