zhouziyu02 commited on
Commit
3d6dd75
·
1 Parent(s): 1d3f6c0

Leaderboard: per-domain tables and auto-refresh countdown

Browse files
Files changed (2) hide show
  1. app.py +36 -60
  2. src/display/css_html_js.py +0 -13
app.py CHANGED
@@ -51,23 +51,21 @@ def refresh_leaderboard() -> tuple:
51
  prepare_values_table(grouped["overall_values"]),
52
  prepare_ranks_table(grouped["overall_ranks"]),
53
  build_status_line(status, baseline),
54
- REFRESH_SECONDS,
55
- f"Next auto-refresh in **{REFRESH_SECONDS}s**",
56
  ]
57
  for domain in DOMAINS:
58
  values_df = grouped["domain_values"].get(domain)
 
59
  if values_df is not None and not values_df.empty:
60
  outputs.append(prepare_values_table(values_df))
61
  else:
62
  outputs.append(prepare_values_table(grouped["overall_values"].iloc[:0]))
 
 
 
 
63
  return tuple(outputs)
64
 
65
 
66
- def tick_refresh_progress(remaining: int) -> tuple[int, str]:
67
- next_remaining = max(int(remaining) - 1, 0)
68
- return next_remaining, f"Next auto-refresh in **{next_remaining}s**"
69
-
70
-
71
  grouped_initial = get_grouped_dfs(RESULTS_PATH)
72
  DOMAINS: list[str] = grouped_initial["domains"]
73
  INITIAL_OUTPUTS = refresh_leaderboard()
@@ -78,48 +76,37 @@ with demo:
78
  gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text")
79
  status = gr.Markdown(INITIAL_OUTPUTS[2], elem_classes="markdown-text")
80
 
81
- refresh_progress = gr.Slider(
82
- minimum=0,
83
- maximum=REFRESH_SECONDS,
84
- value=REFRESH_SECONDS,
85
- step=1,
86
- label="Auto-refresh countdown",
87
- interactive=False,
88
- elem_id="refresh-progress",
89
- )
90
- refresh_countdown = gr.Markdown(
91
- f"Next auto-refresh in **{REFRESH_SECONDS}s**",
92
- elem_classes="markdown-text",
93
- )
94
-
95
- with gr.Row():
96
- refresh_btn = gr.Button("Refresh now", variant="secondary")
97
-
98
- gr.Markdown("### Overall", elem_classes="domain-heading")
99
- overall_values_df = gr.Dataframe(
100
- value=INITIAL_OUTPUTS[0],
101
- interactive=False,
102
- wrap=True,
103
- label="Metric values (normalized vs baseline, lower is better)",
104
- )
105
- overall_ranks_df = gr.Dataframe(
106
- value=INITIAL_OUTPUTS[1],
107
- interactive=False,
108
- wrap=True,
109
- label="Ranks (average per-dataset rank, lower is better)",
110
- )
111
-
112
- domain_value_dfs: list[gr.Dataframe] = []
113
- for i, domain in enumerate(DOMAINS):
114
- gr.Markdown(f"### {domain}", elem_classes="domain-heading")
115
- domain_value_dfs.append(
116
- gr.Dataframe(
117
- value=INITIAL_OUTPUTS[5 + i],
118
  interactive=False,
119
  wrap=True,
120
- label=f"{domain} · metric values (lower is better)",
121
  )
122
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
 
124
  with gr.Accordion("About", open=False):
125
  gr.Markdown(LLM_BENCHMARKS_TEXT, elem_classes="markdown-text")
@@ -132,22 +119,11 @@ with demo:
132
  show_copy_button=True,
133
  )
134
 
135
- refresh_outputs = [
136
- overall_values_df,
137
- overall_ranks_df,
138
- status,
139
- refresh_progress,
140
- refresh_countdown,
141
- *domain_value_dfs,
142
- ]
143
 
144
- refresh_btn.click(refresh_leaderboard, inputs=[], outputs=refresh_outputs)
145
  demo.load(refresh_leaderboard, inputs=[], outputs=refresh_outputs)
146
  gr.Timer(value=REFRESH_SECONDS).tick(refresh_leaderboard, inputs=[], outputs=refresh_outputs)
147
- gr.Timer(value=1).tick(
148
- tick_refresh_progress,
149
- inputs=[refresh_progress],
150
- outputs=[refresh_progress, refresh_countdown],
151
- )
152
 
153
  demo.queue(default_concurrency_limit=20).launch()
 
51
  prepare_values_table(grouped["overall_values"]),
52
  prepare_ranks_table(grouped["overall_ranks"]),
53
  build_status_line(status, baseline),
 
 
54
  ]
55
  for domain in DOMAINS:
56
  values_df = grouped["domain_values"].get(domain)
57
+ ranks_df = grouped["domain_ranks"].get(domain)
58
  if values_df is not None and not values_df.empty:
59
  outputs.append(prepare_values_table(values_df))
60
  else:
61
  outputs.append(prepare_values_table(grouped["overall_values"].iloc[:0]))
62
+ if ranks_df is not None and not ranks_df.empty:
63
+ outputs.append(prepare_ranks_table(ranks_df))
64
+ else:
65
+ outputs.append(prepare_ranks_table(grouped["overall_ranks"].iloc[:0]))
66
  return tuple(outputs)
67
 
68
 
 
 
 
 
 
69
  grouped_initial = get_grouped_dfs(RESULTS_PATH)
70
  DOMAINS: list[str] = grouped_initial["domains"]
71
  INITIAL_OUTPUTS = refresh_leaderboard()
 
76
  gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text")
77
  status = gr.Markdown(INITIAL_OUTPUTS[2], elem_classes="markdown-text")
78
 
79
+ domain_tables: list[tuple[gr.Dataframe, gr.Dataframe]] = []
80
+ with gr.Tabs():
81
+ with gr.Tab("Overall"):
82
+ overall_values_df = gr.Dataframe(
83
+ value=INITIAL_OUTPUTS[0],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  interactive=False,
85
  wrap=True,
86
+ label="Metric values (normalized vs baseline, lower is better)",
87
  )
88
+ overall_ranks_df = gr.Dataframe(
89
+ value=INITIAL_OUTPUTS[1],
90
+ interactive=False,
91
+ wrap=True,
92
+ label="Ranks (average per-dataset rank, lower is better)",
93
+ )
94
+
95
+ for i, domain in enumerate(DOMAINS):
96
+ with gr.Tab(domain):
97
+ values_df = gr.Dataframe(
98
+ value=INITIAL_OUTPUTS[3 + i * 2],
99
+ interactive=False,
100
+ wrap=True,
101
+ label="Metric values (lower is better)",
102
+ )
103
+ ranks_df = gr.Dataframe(
104
+ value=INITIAL_OUTPUTS[4 + i * 2],
105
+ interactive=False,
106
+ wrap=True,
107
+ label="Ranks (lower is better)",
108
+ )
109
+ domain_tables.append((values_df, ranks_df))
110
 
111
  with gr.Accordion("About", open=False):
112
  gr.Markdown(LLM_BENCHMARKS_TEXT, elem_classes="markdown-text")
 
119
  show_copy_button=True,
120
  )
121
 
122
+ refresh_outputs: list[gr.Component] = [overall_values_df, overall_ranks_df, status]
123
+ for values_df, ranks_df in domain_tables:
124
+ refresh_outputs.extend([values_df, ranks_df])
 
 
 
 
 
125
 
 
126
  demo.load(refresh_leaderboard, inputs=[], outputs=refresh_outputs)
127
  gr.Timer(value=REFRESH_SECONDS).tick(refresh_leaderboard, inputs=[], outputs=refresh_outputs)
 
 
 
 
 
128
 
129
  demo.queue(default_concurrency_limit=20).launch()
src/display/css_html_js.py CHANGED
@@ -2,17 +2,4 @@ custom_css = """
2
  .markdown-text { font-size: 16px !important; }
3
  .tab-buttons button { font-size: 20px; }
4
  #leaderboard-table { margin-top: 15px; }
5
- .domain-heading {
6
- margin-top: 1.75rem;
7
- margin-bottom: 0.5rem;
8
- font-size: 1.15rem;
9
- font-weight: 600;
10
- }
11
- #refresh-progress input[type="range"] {
12
- accent-color: #f97316;
13
- }
14
- #refresh-progress label span {
15
- font-size: 0.9rem;
16
- color: #64748b;
17
- }
18
  """
 
2
  .markdown-text { font-size: 16px !important; }
3
  .tab-buttons button { font-size: 20px; }
4
  #leaderboard-table { margin-top: 15px; }
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  """