Paul Hager commited on
Commit
5fdb95f
·
1 Parent(s): 5f8b961
Files changed (2) hide show
  1. app.py +27 -24
  2. src/populate.py +1 -18
app.py CHANGED
@@ -1,5 +1,5 @@
1
  import gradio as gr
2
- from gradio_leaderboard import Leaderboard, SelectColumns
3
  import pandas as pd
4
  from apscheduler.schedulers.background import BackgroundScheduler
5
  from huggingface_hub import snapshot_download
@@ -74,43 +74,49 @@ LEADERBOARD_DF_CDM_FI = get_leaderboard_df(EVAL_RESULTS_PATH_CDM_FI, COLS, BENCH
74
  def init_leaderboard(dataframe):
75
  if dataframe is None or dataframe.empty:
76
  print("Warning: Empty dataframe provided to leaderboard")
77
- # Return a simple empty dataframe instead of trying to create a custom one
78
- return gr.Dataframe(value=pd.DataFrame())
 
79
 
80
  print(f"Initializing leaderboard with {len(dataframe)} rows")
81
  print(f"Columns: {dataframe.columns.tolist()}")
82
 
83
- # Convert dataframe to ensure proper types
84
- for col in dataframe.columns:
85
- if col in ["average", "params"] + [t.value.col_name for t in Tasks]:
86
- dataframe[col] = pd.to_numeric(dataframe[col], errors="coerce")
87
- elif col == "still_on_hub":
88
- dataframe[col] = dataframe[col].astype(bool)
89
- else:
90
- dataframe[col] = dataframe[col].astype(str)
91
-
92
  try:
93
- return gr.Dataframe(value=dataframe, interactive=False, wrap=True)
 
 
 
 
 
 
 
 
 
 
 
94
  except Exception as e:
95
  print(f"Error initializing leaderboard: {e}")
96
- return gr.Dataframe(value=pd.DataFrame())
 
 
 
 
 
97
 
98
 
99
- # Initialize the app
100
  demo = gr.Blocks(css=custom_css)
101
-
102
  with demo:
103
  gr.HTML(TITLE)
104
  gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text")
105
 
106
- with gr.Tabs() as tabs:
107
- with gr.Tab("MIMIC CDM"):
108
  leaderboard_cdm = init_leaderboard(LEADERBOARD_DF_CDM)
109
 
110
- with gr.Tab("MIMIC CDM FI"):
111
  leaderboard_cdm_fi = init_leaderboard(LEADERBOARD_DF_CDM_FI)
112
 
113
- with gr.Tab("📝 About"):
114
  gr.Markdown(LLM_BENCHMARKS_TEXT, elem_classes="markdown-text")
115
 
116
  with gr.Row():
@@ -123,10 +129,7 @@ with demo:
123
  show_copy_button=True,
124
  )
125
 
126
- # Start the scheduler
127
  scheduler = BackgroundScheduler()
128
  scheduler.add_job(restart_space, "interval", seconds=1800)
129
  scheduler.start()
130
-
131
- # Launch the app
132
- demo.queue(default_concurrency_limit=40).launch()
 
1
  import gradio as gr
2
+ from gradio_leaderboard import Leaderboard, ColumnFilter, SelectColumns
3
  import pandas as pd
4
  from apscheduler.schedulers.background import BackgroundScheduler
5
  from huggingface_hub import snapshot_download
 
74
  def init_leaderboard(dataframe):
75
  if dataframe is None or dataframe.empty:
76
  print("Warning: Empty dataframe provided to leaderboard")
77
+ return gr.Dataframe(
78
+ headers=COLS, datatype=[c.type for c in fields(AutoEvalColumn)], label="No results available"
79
+ )
80
 
81
  print(f"Initializing leaderboard with {len(dataframe)} rows")
82
  print(f"Columns: {dataframe.columns.tolist()}")
83
 
 
 
 
 
 
 
 
 
 
84
  try:
85
+ return Leaderboard(
86
+ value=dataframe,
87
+ headers=COLS, # Explicitly specify headers
88
+ datatype=[c.type for c in fields(AutoEvalColumn)],
89
+ select_columns=SelectColumns(
90
+ default_selection=[c.name for c in fields(AutoEvalColumn) if c.displayed_by_default],
91
+ cant_deselect=[c.name for c in fields(AutoEvalColumn) if c.never_hidden],
92
+ label="Select Columns to Display:",
93
+ ),
94
+ search_columns=[AutoEvalColumn.model.name],
95
+ interactive=False,
96
+ )
97
  except Exception as e:
98
  print(f"Error initializing leaderboard: {e}")
99
+ return gr.Dataframe(
100
+ value=dataframe,
101
+ headers=COLS,
102
+ datatype=[c.type for c in fields(AutoEvalColumn)],
103
+ label="Error loading interactive leaderboard",
104
+ )
105
 
106
 
 
107
  demo = gr.Blocks(css=custom_css)
 
108
  with demo:
109
  gr.HTML(TITLE)
110
  gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text")
111
 
112
+ with gr.Tabs(elem_classes="tab-buttons") as tabs:
113
+ with gr.TabItem("MIMIC CDM", elem_id="llm-benchmark-tab-table", id=0):
114
  leaderboard_cdm = init_leaderboard(LEADERBOARD_DF_CDM)
115
 
116
+ with gr.TabItem("MIMIC CDM FI", elem_id="llm-benchmark-tab-table", id=1):
117
  leaderboard_cdm_fi = init_leaderboard(LEADERBOARD_DF_CDM_FI)
118
 
119
+ with gr.TabItem("📝 About", elem_id="llm-benchmark-tab-table", id=2):
120
  gr.Markdown(LLM_BENCHMARKS_TEXT, elem_classes="markdown-text")
121
 
122
  with gr.Row():
 
129
  show_copy_button=True,
130
  )
131
 
 
132
  scheduler = BackgroundScheduler()
133
  scheduler.add_job(restart_space, "interval", seconds=1800)
134
  scheduler.start()
135
+ demo.queue(default_concurrency_limit=40).launch(share=True)
 
 
src/populate.py CHANGED
@@ -19,28 +19,11 @@ def get_leaderboard_df(results_path: str, cols: list, benchmark_cols: list) -> p
19
 
20
  try:
21
  df = pd.DataFrame.from_records(all_data_json)
22
-
23
- # Ensure all required columns exist with proper types
24
  for col in cols:
25
  if col not in df.columns:
26
  df[col] = None
27
 
28
- # Convert numeric columns
29
- numeric_cols = ["average", "params"] + [t.value.col_name for t in Tasks]
30
- for col in numeric_cols:
31
- if col in df.columns:
32
- df[col] = pd.to_numeric(df[col], errors="coerce")
33
-
34
- # Convert boolean columns
35
- if "still_on_hub" in df.columns:
36
- df["still_on_hub"] = df["still_on_hub"].astype(bool)
37
-
38
- # Convert string columns
39
- string_cols = ["model", "architecture"]
40
- for col in string_cols:
41
- if col in df.columns:
42
- df[col] = df[col].astype(str)
43
-
44
  df = df.sort_values(by=[AutoEvalColumn.average.name], ascending=False)
45
  df = df[cols].round(decimals=2)
46
 
 
19
 
20
  try:
21
  df = pd.DataFrame.from_records(all_data_json)
22
+ # Ensure all required columns exist
 
23
  for col in cols:
24
  if col not in df.columns:
25
  df[col] = None
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  df = df.sort_values(by=[AutoEvalColumn.average.name], ascending=False)
28
  df = df[cols].round(decimals=2)
29