kaengreg commited on
Commit
2d78ee5
·
verified ·
1 Parent(s): ccfee13

Model type filter

Browse files
Files changed (1) hide show
  1. app.py +30 -27
app.py CHANGED
@@ -32,6 +32,7 @@ HF_TOKEN = os.getenv("HF_TOKEN")
32
  RESULTS_LOCK = threading.Lock()
33
  DEFAULT_METRIC = "NDCG@10"
34
  METRICS = ["NDCG@10", "MAP@10", "Recall@10", "P@10", "MRR@10"]
 
35
  STATIC_COLUMNS = ["Rank", "Model"]
36
  META_COLUMNS = ["Model ID", "Organization", "Type", "Verified", "Date", "Source URL", ]
37
  TRAILING_COLUMNS = META_COLUMNS
@@ -716,8 +717,8 @@ def sort_type_for_column(index: int, column: str, metric: str) -> str:
716
  return "text"
717
 
718
 
719
- def leaderboard_table_html(metric: str, task_filter: str, verified_only: bool, model_filter: str) -> str:
720
- frame = leaderboard_frame(metric, task_filter, verified_only, model_filter)
721
  if frame.empty:
722
  return '<div class="rusbeir-empty">No results match the selected filters.</div>'
723
 
@@ -920,21 +921,16 @@ def append_submission_records(records: list[dict[str, Any]]) -> tuple[int, int,
920
  raise RuntimeError("Could not update leaderboard results after multiple attempts.")
921
 
922
 
923
- def add_submission_record(uploaded_file: Any, metric: str, task_filter: str, verified_only: bool, model_filter: str) -> tuple[str, str, str]:
924
  try:
925
  file_text = uploaded_file_text(uploaded_file)
926
  except OSError as exc:
927
- return (
928
- f"Submission was not added: could not read uploaded file: {exc}",
929
- summary_html(),
930
- leaderboard_table_html(metric, task_filter, verified_only, model_filter),
931
- )
932
  if not file_text.strip():
933
- return (
934
- "Upload a non-empty results.jsonl file first.",
935
- summary_html(),
936
- leaderboard_table_html(metric, task_filter, verified_only, model_filter),
937
- )
938
 
939
  try:
940
  records = parse_submission_records(file_text)
@@ -943,7 +939,7 @@ def add_submission_record(uploaded_file: Any, metric: str, task_filter: str, ver
943
  return (
944
  f"Submission was not added: {exc}",
945
  summary_html(),
946
- leaderboard_table_html(metric, task_filter, verified_only, model_filter),
947
  )
948
 
949
  if added == 0 and skipped > 0:
@@ -955,11 +951,8 @@ def add_submission_record(uploaded_file: Any, metric: str, task_filter: str, ver
955
  if commit_url:
956
  status += f" [Hub commit]({commit_url})"
957
 
958
- return (
959
- status,
960
- summary_html(),
961
- leaderboard_table_html(metric, task_filter, verified_only, model_filter),
962
- )
963
 
964
 
965
  def logo_data_uri() -> str:
@@ -982,7 +975,7 @@ def format_score(value: float | None) -> str:
982
  def summary_html() -> str:
983
  datasets = [dataset for dataset in load_datasets() if dataset.get("official", True)]
984
  records = load_results()
985
- frame = leaderboard_frame(DEFAULT_METRIC, "All", False, "")
986
  best_model = "No results yet"
987
  best_score = "n/a"
988
  if not frame.empty and DEFAULT_METRIC in frame:
@@ -1040,7 +1033,11 @@ def summary_html() -> str:
1040
  """
1041
 
1042
 
1043
- def leaderboard_frame(metric: str, task_filter: str, verified_only: bool, model_filter: str) -> pd.DataFrame:
 
 
 
 
1044
  datasets = load_datasets()
1045
  if task_filter != "All":
1046
  datasets = [dataset for dataset in datasets if dataset["task"] == task_filter]
@@ -1050,6 +1047,11 @@ def leaderboard_frame(metric: str, task_filter: str, verified_only: bool, model_
1050
  for record in load_results():
1051
  if verified_only and not record.get("verified", False):
1052
  continue
 
 
 
 
 
1053
  model_text = f"{record.get('model_id', '')} {record.get('model_name', '')}".lower()
1054
  if model_filter and model_filter.lower() not in model_text:
1055
  continue
@@ -1115,7 +1117,7 @@ with gr.Blocks(title="rusBEIR Leaderboard") as demo:
1115
  """
1116
  <h2 class="rusbeir-section-title">Model Rankings</h2>
1117
  <p class="rusbeir-section-note">
1118
- Filter by task family, model name, or verification status. Scores are stored as fractions;
1119
  leaderboard rankings use the selected average metric.
1120
  </p>
1121
  """
@@ -1124,19 +1126,20 @@ with gr.Blocks(title="rusBEIR Leaderboard") as demo:
1124
  metric = gr.Dropdown(METRICS, value=DEFAULT_METRIC, label="Metric", min_width=150)
1125
  task_filter = gr.Dropdown(task_choices(), value="All", label="Task", min_width=180)
1126
  model_filter = gr.Textbox(label="Model", placeholder="intfloat, BGE, FRIDA...", min_width=220)
 
1127
  verified_only = gr.Checkbox(value=False, label="Verified", min_width=120, elem_classes=["rusbeir-verified-filter"])
1128
 
1129
  gr.HTML('<div class="rusbeir-section-note">Results</div>')
1130
- table = gr.HTML(value=leaderboard_table_html(DEFAULT_METRIC, "All", False, ""))
1131
 
1132
- for control in [metric, task_filter, verified_only, model_filter]:
1133
  control.change(leaderboard_table_html,
1134
- inputs=[metric, task_filter, verified_only, model_filter],
1135
  outputs=table)
1136
 
1137
  reload_button = gr.Button("Reload results", variant="secondary")
1138
  reload_button.click(leaderboard_table_html,
1139
- inputs=[metric, task_filter, verified_only, model_filter],
1140
  outputs=table)
1141
 
1142
  with gr.Tab("Datasets"):
@@ -1179,7 +1182,7 @@ with gr.Blocks(title="rusBEIR Leaderboard") as demo:
1179
  submit_status = gr.Markdown()
1180
  add_button = gr.Button("Add to leaderboard", variant="primary")
1181
  add_button.click(add_submission_record,
1182
- inputs=[results_file, metric, task_filter, verified_only, model_filter],
1183
  outputs=[submit_status, summary, table])
1184
 
1185
  with gr.Tab("About"):
 
32
  RESULTS_LOCK = threading.Lock()
33
  DEFAULT_METRIC = "NDCG@10"
34
  METRICS = ["NDCG@10", "MAP@10", "Recall@10", "P@10", "MRR@10"]
35
+ RERANKER_FILTER_CHOICES = ["All models", "With reranker", "Single models"]
36
  STATIC_COLUMNS = ["Rank", "Model"]
37
  META_COLUMNS = ["Model ID", "Organization", "Type", "Verified", "Date", "Source URL", ]
38
  TRAILING_COLUMNS = META_COLUMNS
 
717
  return "text"
718
 
719
 
720
+ def leaderboard_table_html(metric: str, task_filter: str, verified_only: bool, model_filter: str, reranker_filter: str = "All models") -> str:
721
+ frame = leaderboard_frame(metric, task_filter, verified_only, model_filter, reranker_filter)
722
  if frame.empty:
723
  return '<div class="rusbeir-empty">No results match the selected filters.</div>'
724
 
 
921
  raise RuntimeError("Could not update leaderboard results after multiple attempts.")
922
 
923
 
924
+ def add_submission_record(uploaded_file: Any, metric: str, task_filter: str, verified_only: bool, model_filter: str, reranker_filter: str = "All models") -> tuple[str, str, str]:
925
  try:
926
  file_text = uploaded_file_text(uploaded_file)
927
  except OSError as exc:
928
+ return (f"Submission was not added: could not read uploaded file: {exc}", summary_html(),
929
+ leaderboard_table_html(metric, task_filter, verified_only, model_filter, reranker_filter))
930
+
 
 
931
  if not file_text.strip():
932
+ return ("Upload a non-empty results.jsonl file first.", summary_html(),
933
+ leaderboard_table_html(metric, task_filter, verified_only, model_filter, reranker_filter))
 
 
 
934
 
935
  try:
936
  records = parse_submission_records(file_text)
 
939
  return (
940
  f"Submission was not added: {exc}",
941
  summary_html(),
942
+ leaderboard_table_html(metric, task_filter, verified_only, model_filter, reranker_filter),
943
  )
944
 
945
  if added == 0 and skipped > 0:
 
951
  if commit_url:
952
  status += f" [Hub commit]({commit_url})"
953
 
954
+ return (status, summary_html(),
955
+ leaderboard_table_html(metric, task_filter, verified_only, model_filter, reranker_filter))
 
 
 
956
 
957
 
958
  def logo_data_uri() -> str:
 
975
  def summary_html() -> str:
976
  datasets = [dataset for dataset in load_datasets() if dataset.get("official", True)]
977
  records = load_results()
978
+ frame = leaderboard_frame(DEFAULT_METRIC, "All", False, "", "All models")
979
  best_model = "No results yet"
980
  best_score = "n/a"
981
  if not frame.empty and DEFAULT_METRIC in frame:
 
1033
  """
1034
 
1035
 
1036
+ def leaderboard_frame(metric: str, task_filter: str,
1037
+ verified_only: bool,
1038
+ model_filter: str,
1039
+ reranker_filter: str = "All models",
1040
+ ) -> pd.DataFrame:
1041
  datasets = load_datasets()
1042
  if task_filter != "All":
1043
  datasets = [dataset for dataset in datasets if dataset["task"] == task_filter]
 
1047
  for record in load_results():
1048
  if verified_only and not record.get("verified", False):
1049
  continue
1050
+ has_reranker = str(record.get("type", "")).strip().casefold() == "reranker"
1051
+ if reranker_filter == "With reranker" and not has_reranker:
1052
+ continue
1053
+ if reranker_filter == "Single models" and has_reranker:
1054
+ continue
1055
  model_text = f"{record.get('model_id', '')} {record.get('model_name', '')}".lower()
1056
  if model_filter and model_filter.lower() not in model_text:
1057
  continue
 
1117
  """
1118
  <h2 class="rusbeir-section-title">Model Rankings</h2>
1119
  <p class="rusbeir-section-note">
1120
+ Filter by task family, model name, reranker usage, or verification status. Scores are stored as fractions;
1121
  leaderboard rankings use the selected average metric.
1122
  </p>
1123
  """
 
1126
  metric = gr.Dropdown(METRICS, value=DEFAULT_METRIC, label="Metric", min_width=150)
1127
  task_filter = gr.Dropdown(task_choices(), value="All", label="Task", min_width=180)
1128
  model_filter = gr.Textbox(label="Model", placeholder="intfloat, BGE, FRIDA...", min_width=220)
1129
+ reranker_filter = gr.Dropdown(RERANKER_FILTER_CHOICES, value="All models", label="Reranker", min_width=170)
1130
  verified_only = gr.Checkbox(value=False, label="Verified", min_width=120, elem_classes=["rusbeir-verified-filter"])
1131
 
1132
  gr.HTML('<div class="rusbeir-section-note">Results</div>')
1133
+ table = gr.HTML(value=leaderboard_table_html(DEFAULT_METRIC, "All", False, "", "All models"))
1134
 
1135
+ for control in [metric, task_filter, verified_only, model_filter, reranker_filter]:
1136
  control.change(leaderboard_table_html,
1137
+ inputs=[metric, task_filter, verified_only, model_filter, reranker_filter],
1138
  outputs=table)
1139
 
1140
  reload_button = gr.Button("Reload results", variant="secondary")
1141
  reload_button.click(leaderboard_table_html,
1142
+ inputs=[metric, task_filter, verified_only, model_filter, reranker_filter],
1143
  outputs=table)
1144
 
1145
  with gr.Tab("Datasets"):
 
1182
  submit_status = gr.Markdown()
1183
  add_button = gr.Button("Add to leaderboard", variant="primary")
1184
  add_button.click(add_submission_record,
1185
+ inputs=[results_file, metric, task_filter, verified_only, model_filter, reranker_filter],
1186
  outputs=[submit_status, summary, table])
1187
 
1188
  with gr.Tab("About"):