Spaces:
AIR-Bench
/
Running on CPU Upgrade

Files changed (5) hide show
  1. .github/workflows/main.yaml +1 -1
  2. app.py +0 -52
  3. requirements.txt +1 -1
  4. src/columns.py +26 -35
  5. src/models.py +5 -5
.github/workflows/main.yaml CHANGED
@@ -17,4 +17,4 @@ jobs:
17
  - name: Push to hub
18
  env:
19
  HF_TOKEN: ${{ secrets.HF_TOKEN }}
20
- run: git push --force https://hanhainebula:$HF_TOKEN@huggingface.co/spaces/AIR-Bench/leaderboard main
 
17
  - name: Push to hub
18
  env:
19
  HF_TOKEN: ${{ secrets.HF_TOKEN }}
20
+ run: git push https://hanhainebula:$HF_TOKEN@huggingface.co/spaces/AIR-Bench/leaderboard main
app.py CHANGED
@@ -1,55 +1,3 @@
1
- import sys
2
- import types
3
-
4
- # Python 3.13 removed audioop from stdlib; pydub (a gradio dep) needs it.
5
- # Provide minimal stubs so the import doesn't crash the leaderboard.
6
- try:
7
- import audioop # noqa: F811
8
- except ModuleNotFoundError:
9
- _audioop = types.ModuleType("audioop")
10
- _func_names = [
11
- "add", "adpcm2lin", "alaw2lin", "avg", "avgpp", "bias",
12
- "byteswap", "cross", "findfactor", "findfit", "findmax",
13
- "getsample", "lin2adpcm", "lin2alaw", "lin2lin", "lin2ulaw",
14
- "max", "maxpp", "minmax", "mul", "ratecv", "reverse", "rms",
15
- "tomono", "tostereo", "ulaw2lin",
16
- ]
17
-
18
- def _make_stub(name):
19
- def stub(*args, **kwargs):
20
- raise NotImplementedError(f"audioop.{name} is not available on Python 3.13")
21
-
22
- return stub
23
-
24
- for _name in _func_names:
25
- setattr(_audioop, _name, _make_stub(_name))
26
- _audioop.error = Exception
27
- sys.modules["audioop"] = _audioop
28
-
29
- # huggingface_hub >= 1.0 removed HfFolder (gradio 4.29.0 oauth.py imports it)
30
- import huggingface_hub
31
-
32
- if not hasattr(huggingface_hub, "HfFolder"):
33
-
34
- class _HfFolder:
35
- path = "/root/.huggingface/token"
36
-
37
- @staticmethod
38
- def get_token():
39
- import os as _os
40
-
41
- return _os.environ.get("HF_TOKEN")
42
-
43
- @staticmethod
44
- def save_token(token):
45
- pass
46
-
47
- @staticmethod
48
- def delete_token():
49
- pass
50
-
51
- huggingface_hub.HfFolder = _HfFolder
52
-
53
  import os
54
 
55
  import gradio as gr
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import os
2
 
3
  import gradio as gr
requirements.txt CHANGED
@@ -4,7 +4,7 @@ click>=8.1.3
4
  datasets>=2.14.5
5
  gradio<5.0.0
6
  gradio_client>=0.16.1
7
- huggingface-hub>=0.18.0,<1.0.0
8
  numpy>=1.24.2
9
  pandas>=2.0.0
10
  python-dateutil>=2.8.2
 
4
  datasets>=2.14.5
5
  gradio<5.0.0
6
  gradio_client>=0.16.1
7
+ huggingface-hub>=0.18.0
8
  numpy>=1.24.2
9
  pandas>=2.0.0
10
  python-dateutil>=2.8.2
src/columns.py CHANGED
@@ -1,4 +1,8 @@
1
- from dataclasses import dataclass, field, make_dataclass
 
 
 
 
2
 
3
 
4
  # These classes are for user facing column names,
@@ -15,43 +19,37 @@ class ColumnContent:
15
 
16
  def get_default_auto_eval_column_dict():
17
  auto_eval_column_dict = []
18
- auto_eval_column_dict.append(
19
- ["rank", ColumnContent, field(default_factory=lambda: ColumnContent(COL_NAME_RANK, "number", True))]
20
- )
21
  auto_eval_column_dict.append(
22
  [
23
  "retrieval_model",
24
  ColumnContent,
25
- field(default_factory=lambda: ColumnContent(COL_NAME_RETRIEVAL_MODEL, "markdown", True, never_hidden=True)),
26
  ]
27
  )
28
  auto_eval_column_dict.append(
29
  [
30
  "reranking_model",
31
  ColumnContent,
32
- field(default_factory=lambda: ColumnContent(COL_NAME_RERANKING_MODEL, "markdown", True, never_hidden=True)),
33
  ]
34
  )
35
  auto_eval_column_dict.append(
36
- ["revision", ColumnContent, field(default_factory=lambda: ColumnContent(COL_NAME_REVISION, "markdown", True, never_hidden=True))]
37
- )
38
- auto_eval_column_dict.append(
39
- ["timestamp", ColumnContent, field(default_factory=lambda: ColumnContent(COL_NAME_TIMESTAMP, "date", True, never_hidden=True))]
40
  )
41
  auto_eval_column_dict.append(
42
- ["average", ColumnContent, field(default_factory=lambda: ColumnContent(COL_NAME_AVG, "number", True))]
43
  )
 
44
  auto_eval_column_dict.append(
45
  [
46
  "retrieval_model_link",
47
  ColumnContent,
48
- field(
49
- default_factory=lambda: ColumnContent(
50
- COL_NAME_RETRIEVAL_MODEL_LINK,
51
- "markdown",
52
- False,
53
- hidden=True,
54
- )
55
  ),
56
  ]
57
  )
@@ -59,18 +57,16 @@ def get_default_auto_eval_column_dict():
59
  [
60
  "reranking_model_link",
61
  ColumnContent,
62
- field(
63
- default_factory=lambda: ColumnContent(
64
- COL_NAME_RERANKING_MODEL_LINK,
65
- "markdown",
66
- False,
67
- hidden=True,
68
- )
69
  ),
70
  ]
71
  )
72
  auto_eval_column_dict.append(
73
- ["is_anonymous", ColumnContent, field(default_factory=lambda: ColumnContent(COL_NAME_IS_ANONYMOUS, "bool", False, hidden=True))]
74
  )
75
  return auto_eval_column_dict
76
 
@@ -80,7 +76,7 @@ def make_autoevalcolumn(cls_name, benchmarks):
80
  # Leaderboard columns
81
  for benchmark in list(benchmarks.value):
82
  auto_eval_column_dict.append(
83
- [benchmark.name, ColumnContent, field(default_factory=lambda b=benchmark: ColumnContent(b.value.col_name, "number", True))]
84
  )
85
 
86
  # We use make dataclass to dynamically fill the scores from Tasks
@@ -89,19 +85,14 @@ def make_autoevalcolumn(cls_name, benchmarks):
89
 
90
  def get_default_col_names_and_types(benchmarks):
91
  AutoEvalColumn = make_autoevalcolumn("AutoEvalColumn", benchmarks)
92
- col_names = []
93
- col_types = []
94
- for f in AutoEvalColumn.__dataclass_fields__.values():
95
- col = f.default_factory()
96
- if not col.hidden:
97
- col_names.append(col.name)
98
- col_types.append(col.type)
99
  return col_names, col_types
100
 
101
 
102
  def get_fixed_col_names_and_types():
103
  fixed_cols = get_default_auto_eval_column_dict()[:-3]
104
- return [c.default_factory().name for _, _, c in fixed_cols], [c.default_factory().type for _, _, c in fixed_cols]
105
 
106
 
107
  COL_NAME_AVG = "Average ⬆️"
 
1
+ from dataclasses import dataclass, make_dataclass
2
+
3
+
4
+ def _fields(raw_class):
5
+ return [v for k, v in raw_class.__dict__.items() if k[:2] != "__" and k[-2:] != "__"]
6
 
7
 
8
  # These classes are for user facing column names,
 
19
 
20
  def get_default_auto_eval_column_dict():
21
  auto_eval_column_dict = []
22
+ auto_eval_column_dict.append(["rank", ColumnContent, ColumnContent(COL_NAME_RANK, "number", True)])
 
 
23
  auto_eval_column_dict.append(
24
  [
25
  "retrieval_model",
26
  ColumnContent,
27
+ ColumnContent(COL_NAME_RETRIEVAL_MODEL, "markdown", True, never_hidden=True),
28
  ]
29
  )
30
  auto_eval_column_dict.append(
31
  [
32
  "reranking_model",
33
  ColumnContent,
34
+ ColumnContent(COL_NAME_RERANKING_MODEL, "markdown", True, never_hidden=True),
35
  ]
36
  )
37
  auto_eval_column_dict.append(
38
+ ["revision", ColumnContent, ColumnContent(COL_NAME_REVISION, "markdown", True, never_hidden=True)]
 
 
 
39
  )
40
  auto_eval_column_dict.append(
41
+ ["timestamp", ColumnContent, ColumnContent(COL_NAME_TIMESTAMP, "date", True, never_hidden=True)]
42
  )
43
+ auto_eval_column_dict.append(["average", ColumnContent, ColumnContent(COL_NAME_AVG, "number", True)])
44
  auto_eval_column_dict.append(
45
  [
46
  "retrieval_model_link",
47
  ColumnContent,
48
+ ColumnContent(
49
+ COL_NAME_RETRIEVAL_MODEL_LINK,
50
+ "markdown",
51
+ False,
52
+ hidden=True,
 
 
53
  ),
54
  ]
55
  )
 
57
  [
58
  "reranking_model_link",
59
  ColumnContent,
60
+ ColumnContent(
61
+ COL_NAME_RERANKING_MODEL_LINK,
62
+ "markdown",
63
+ False,
64
+ hidden=True,
 
 
65
  ),
66
  ]
67
  )
68
  auto_eval_column_dict.append(
69
+ ["is_anonymous", ColumnContent, ColumnContent(COL_NAME_IS_ANONYMOUS, "bool", False, hidden=True)]
70
  )
71
  return auto_eval_column_dict
72
 
 
76
  # Leaderboard columns
77
  for benchmark in list(benchmarks.value):
78
  auto_eval_column_dict.append(
79
+ [benchmark.name, ColumnContent, ColumnContent(benchmark.value.col_name, "number", True)]
80
  )
81
 
82
  # We use make dataclass to dynamically fill the scores from Tasks
 
85
 
86
  def get_default_col_names_and_types(benchmarks):
87
  AutoEvalColumn = make_autoevalcolumn("AutoEvalColumn", benchmarks)
88
+ col_names = [c.name for c in _fields(AutoEvalColumn) if not c.hidden]
89
+ col_types = [c.type for c in _fields(AutoEvalColumn) if not c.hidden]
 
 
 
 
 
90
  return col_names, col_types
91
 
92
 
93
  def get_fixed_col_names_and_types():
94
  fixed_cols = get_default_auto_eval_column_dict()[:-3]
95
+ return [c.name for _, _, c in fixed_cols], [c.type for _, _, c in fixed_cols]
96
 
97
 
98
  COL_NAME_AVG = "Average ⬆️"
src/models.py CHANGED
@@ -1,6 +1,6 @@
1
  import json
2
  from collections import defaultdict
3
- from dataclasses import dataclass, field
4
  from enum import Enum
5
  from typing import List
6
 
@@ -142,10 +142,10 @@ class LeaderboardDataStore:
142
  version: str
143
  slug: str
144
  raw_data: list = None
145
- qa_raw_df: pd.DataFrame = field(default_factory=pd.DataFrame)
146
- doc_raw_df: pd.DataFrame = field(default_factory=pd.DataFrame)
147
- qa_fmt_df: pd.DataFrame = field(default_factory=pd.DataFrame)
148
- doc_fmt_df: pd.DataFrame = field(default_factory=pd.DataFrame)
149
  reranking_models: list = None
150
  qa_types: list = None
151
  doc_types: list = None
 
1
  import json
2
  from collections import defaultdict
3
+ from dataclasses import dataclass
4
  from enum import Enum
5
  from typing import List
6
 
 
142
  version: str
143
  slug: str
144
  raw_data: list = None
145
+ qa_raw_df: pd.DataFrame = pd.DataFrame()
146
+ doc_raw_df: pd.DataFrame = pd.DataFrame()
147
+ qa_fmt_df: pd.DataFrame = pd.DataFrame()
148
+ doc_fmt_df: pd.DataFrame = pd.DataFrame()
149
  reranking_models: list = None
150
  qa_types: list = None
151
  doc_types: list = None