xinchen9 commited on
Commit
d405dab
β€’
1 Parent(s): 6fd35d6

[Update]Change app.py

Browse files
Files changed (1) hide show
  1. app.py +97 -257
app.py CHANGED
@@ -1,15 +1,12 @@
1
- import subprocess
2
  import gradio as gr
3
  import pandas as pd
4
- from apscheduler.schedulers.background import BackgroundScheduler
5
- from huggingface_hub import snapshot_download
6
-
7
- from src.about import (
8
  CITATION_BUTTON_LABEL,
9
  CITATION_BUTTON_TEXT,
10
  EVALUATION_QUEUE_TEXT,
11
  INTRODUCTION_TEXT,
12
  LLM_BENCHMARKS_TEXT,
 
13
  TITLE,
14
  )
15
  from src.display.css_html_js import custom_css
@@ -26,320 +23,163 @@ from src.display.utils import (
26
  WeightType,
27
  Precision
28
  )
29
- from src.envs import API, EVAL_REQUESTS_PATH, EVAL_RESULTS_PATH, QUEUE_REPO, REPO_ID, RESULTS_REPO, TOKEN
30
- from src.populate import get_evaluation_queue_df, get_leaderboard_df
31
- from src.submission.submit import add_new_eval
 
32
 
33
 
34
  def restart_space():
35
- API.restart_space(repo_id=REPO_ID)
36
-
37
- try:
38
- print(EVAL_REQUESTS_PATH)
39
- snapshot_download(
40
- repo_id=QUEUE_REPO, local_dir=EVAL_REQUESTS_PATH, repo_type="dataset", tqdm_class=None, etag_timeout=30, token=TOKEN
41
- )
42
- except Exception:
43
- restart_space()
44
- try:
45
- print(EVAL_RESULTS_PATH)
46
- snapshot_download(
47
- repo_id=RESULTS_REPO, local_dir=EVAL_RESULTS_PATH, repo_type="dataset", tqdm_class=None, etag_timeout=30, token=TOKEN
48
- )
49
- except Exception:
50
- restart_space()
51
-
52
-
53
- raw_data, original_df = get_leaderboard_df(EVAL_RESULTS_PATH, EVAL_REQUESTS_PATH, COLS, BENCHMARK_COLS)
54
- leaderboard_df = original_df.copy()
55
-
56
- (
57
- finished_eval_queue_df,
58
- running_eval_queue_df,
59
- pending_eval_queue_df,
60
- ) = get_evaluation_queue_df(EVAL_REQUESTS_PATH, EVAL_COLS)
61
-
62
 
63
  # Searching and filtering
 
 
 
 
64
  def update_table(
65
  hidden_df: pd.DataFrame,
66
- columns: list,
67
- type_query: list,
68
- precision_query: str,
69
- size_query: list,
70
- show_deleted: bool,
71
- query: str,
72
  ):
73
- filtered_df = filter_models(hidden_df, type_query, size_query, precision_query, show_deleted)
74
- filtered_df = filter_queries(query, filtered_df)
75
- df = select_columns(filtered_df, columns)
76
- return df
77
 
 
78
 
79
- def search_table(df: pd.DataFrame, query: str) -> pd.DataFrame:
80
- return df[(df[AutoEvalColumn.model.name].str.contains(query, case=False))]
 
81
 
82
 
83
- def select_columns(df: pd.DataFrame, columns: list) -> pd.DataFrame:
84
- always_here_cols = [
85
- AutoEvalColumn.model_type_symbol.name,
86
- AutoEvalColumn.model.name,
87
- ]
88
  # We use COLS to maintain sorting
89
- filtered_df = df[
90
- always_here_cols + [c for c in COLS if c in df.columns and c in columns]
91
- ]
92
- return filtered_df
93
 
 
 
 
 
 
94
 
95
- def filter_queries(query: str, filtered_df: pd.DataFrame) -> pd.DataFrame:
96
- final_df = []
97
- if query != "":
98
- queries = [q.strip() for q in query.split(";")]
99
- for _q in queries:
100
- _q = _q.strip()
101
- if _q != "":
102
- temp_filtered_df = search_table(filtered_df, _q)
103
- if len(temp_filtered_df) > 0:
104
- final_df.append(temp_filtered_df)
105
- if len(final_df) > 0:
106
- filtered_df = pd.concat(final_df)
107
- filtered_df = filtered_df.drop_duplicates(
108
- subset=[AutoEvalColumn.model.name, AutoEvalColumn.precision.name, AutoEvalColumn.revision.name]
109
- )
110
 
111
  return filtered_df
112
 
113
 
114
- def filter_models(
115
- df: pd.DataFrame, type_query: list, size_query: list, precision_query: list, show_deleted: bool
116
- ) -> pd.DataFrame:
117
  # Show all models
118
- if show_deleted:
119
- filtered_df = df
120
- else: # Show only still on the hub models
121
- filtered_df = df[df[AutoEvalColumn.still_on_hub.name] == True]
 
 
122
 
123
- type_emoji = [t[0] for t in type_query]
124
- filtered_df = filtered_df.loc[df[AutoEvalColumn.model_type_symbol.name].isin(type_emoji)]
125
- filtered_df = filtered_df.loc[df[AutoEvalColumn.precision.name].isin(precision_query + ["None"])]
126
 
127
- numeric_interval = pd.IntervalIndex(sorted([NUMERIC_INTERVALS[s] for s in size_query]))
128
- params_column = pd.to_numeric(df[AutoEvalColumn.params.name], errors="coerce")
129
- mask = params_column.apply(lambda x: any(numeric_interval.contains(x)))
130
- filtered_df = filtered_df.loc[mask]
131
 
132
- return filtered_df
133
 
134
 
135
- demo = gr.Blocks(css=custom_css)
136
  with demo:
137
- gr.HTML(TITLE)
138
- gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text")
 
 
139
 
 
140
  with gr.Tabs(elem_classes="tab-buttons") as tabs:
141
- with gr.TabItem("UnlearnDiffAtk Benchmark", elem_id="UnlearnDiffAtk-benchmark-tab-table", id=0):
142
  with gr.Row():
143
  with gr.Column():
144
  with gr.Row():
145
- search_bar = gr.Textbox(
146
- placeholder=" πŸ” Search for your model (separate multiple queries with `;`) and press ENTER...",
147
- show_label=False,
148
- elem_id="search-bar",
 
 
 
 
 
 
 
 
 
149
  )
 
150
  with gr.Row():
151
- shown_columns = gr.CheckboxGroup(
152
- choices=[
153
- c.name
154
- for c in fields(AutoEvalColumn)
155
- if not c.hidden and not c.never_hidden
156
- ],
157
- value=[
158
- c.name
159
- for c in fields(AutoEvalColumn)
160
- if c.displayed_by_default and not c.hidden and not c.never_hidden
161
- ],
162
- label="Select columns to show",
163
  elem_id="column-select",
164
  interactive=True,
165
  )
 
166
  with gr.Row():
167
- deleted_models_visibility = gr.Checkbox(
168
- value=False, label="Show gated/private/deleted models", interactive=True
 
 
 
169
  )
170
- with gr.Column(min_width=320):
171
- #with gr.Box(elem_id="box-filter"):
172
- # filter_columns_type = gr.CheckboxGroup(
173
- # label="Unlearning types",
174
- # choices=[t.to_str() for t in ModelType],
175
- # value=[t.to_str() for t in ModelType],
176
- # interactive=True,
177
- # elem_id="filter-columns-type",
178
- # )
179
- filter_columns_precision = gr.CheckboxGroup(
180
- label="Precision",
181
- choices=[i.value.name for i in Precision],
182
- value=[i.value.name for i in Precision],
183
- interactive=True,
184
- elem_id="filter-columns-precision",
185
- )
186
- filter_columns_size = gr.CheckboxGroup(
187
- label="Model sizes (in billions of parameters)",
188
- choices=list(NUMERIC_INTERVALS.keys()),
189
- value=list(NUMERIC_INTERVALS.keys()),
190
- interactive=True,
191
- elem_id="filter-columns-size",
192
- )
193
 
194
  leaderboard_table = gr.components.Dataframe(
195
- value=leaderboard_df[
196
- [c.name for c in fields(AutoEvalColumn) if c.never_hidden]
197
- + shown_columns.value
198
- ],
199
- headers=[c.name for c in fields(AutoEvalColumn) if c.never_hidden] + shown_columns.value,
200
- datatype=TYPES,
201
  elem_id="leaderboard-table",
202
  interactive=False,
203
  visible=True,
 
204
  )
205
 
206
- # Dummy leaderboard for handling the case when the user uses backspace key
207
- hidden_leaderboard_table_for_search = gr.components.Dataframe(
208
- value=original_df[COLS],
209
- headers=COLS,
210
- datatype=TYPES,
211
  visible=False,
 
212
  )
213
- search_bar.submit(
214
- update_table,
215
- [
216
- hidden_leaderboard_table_for_search,
217
- shown_columns,
218
- filter_columns_type,
219
- filter_columns_precision,
220
- filter_columns_size,
221
- deleted_models_visibility,
222
- search_bar,
223
- ],
224
- leaderboard_table,
225
- )
226
- for selector in [shown_columns, filter_columns_type, filter_columns_precision, filter_columns_size, deleted_models_visibility]:
227
  selector.change(
228
  update_table,
229
- [
230
- hidden_leaderboard_table_for_search,
231
- shown_columns,
232
- filter_columns_type,
233
- filter_columns_precision,
234
- filter_columns_size,
235
- deleted_models_visibility,
236
- search_bar,
237
  ],
238
  leaderboard_table,
239
  queue=True,
240
  )
 
 
 
 
241
 
242
  with gr.TabItem("πŸ“ About", elem_id="llm-benchmark-tab-table", id=2):
243
  gr.Markdown(LLM_BENCHMARKS_TEXT, elem_classes="markdown-text")
244
-
245
- with gr.TabItem("πŸš€ Submit here! ", elem_id="llm-benchmark-tab-table", id=3):
246
- with gr.Column():
247
- with gr.Row():
248
- gr.Markdown(EVALUATION_QUEUE_TEXT, elem_classes="markdown-text")
249
-
250
- with gr.Column():
251
- with gr.Accordion(
252
- f"βœ… Finished Evaluations ({len(finished_eval_queue_df)})",
253
- open=False,
254
- ):
255
- with gr.Row():
256
- finished_eval_table = gr.components.Dataframe(
257
- value=finished_eval_queue_df,
258
- headers=EVAL_COLS,
259
- datatype=EVAL_TYPES,
260
- row_count=5,
261
- )
262
- with gr.Accordion(
263
- f"πŸ”„ Running Evaluation Queue ({len(running_eval_queue_df)})",
264
- open=False,
265
- ):
266
- with gr.Row():
267
- running_eval_table = gr.components.Dataframe(
268
- value=running_eval_queue_df,
269
- headers=EVAL_COLS,
270
- datatype=EVAL_TYPES,
271
- row_count=5,
272
- )
273
-
274
- with gr.Accordion(
275
- f"⏳ Pending Evaluation Queue ({len(pending_eval_queue_df)})",
276
- open=False,
277
- ):
278
- with gr.Row():
279
- pending_eval_table = gr.components.Dataframe(
280
- value=pending_eval_queue_df,
281
- headers=EVAL_COLS,
282
- datatype=EVAL_TYPES,
283
- row_count=5,
284
- )
285
- with gr.Row():
286
- gr.Markdown("# βœ‰οΈβœ¨ Submit your model here!", elem_classes="markdown-text")
287
-
288
- with gr.Row():
289
- with gr.Column():
290
- model_name_textbox = gr.Textbox(label="Model name")
291
- revision_name_textbox = gr.Textbox(label="Revision commit", placeholder="main")
292
- model_type = gr.Dropdown(
293
- choices=[t.to_str(" : ") for t in ModelType if t != ModelType.Unknown],
294
- label="Model type",
295
- multiselect=False,
296
- value=None,
297
- interactive=True,
298
- )
299
-
300
- with gr.Column():
301
- precision = gr.Dropdown(
302
- choices=[i.value.name for i in Precision if i != Precision.Unknown],
303
- label="Precision",
304
- multiselect=False,
305
- value="float16",
306
- interactive=True,
307
- )
308
- weight_type = gr.Dropdown(
309
- choices=[i.value.name for i in WeightType],
310
- label="Weights type",
311
- multiselect=False,
312
- value="Original",
313
- interactive=True,
314
- )
315
- base_model_name_textbox = gr.Textbox(label="Base model (for delta or adapter weights)")
316
-
317
- submit_button = gr.Button("Submit Eval")
318
- submission_result = gr.Markdown()
319
- submit_button.click(
320
- add_new_eval,
321
- [
322
- model_name_textbox,
323
- base_model_name_textbox,
324
- revision_name_textbox,
325
- precision,
326
- weight_type,
327
- model_type,
328
- ],
329
- submission_result,
330
- )
331
 
332
  with gr.Row():
333
- with gr.Accordion("πŸ“™ Citation", open=False):
334
  citation_button = gr.Textbox(
335
  value=CITATION_BUTTON_TEXT,
336
  label=CITATION_BUTTON_LABEL,
337
- lines=10,
338
  elem_id="citation-button",
339
  show_copy_button=True,
340
  )
341
 
342
- scheduler = BackgroundScheduler()
343
- scheduler.add_job(restart_space, "interval", seconds=1800)
344
- scheduler.start()
345
- demo.queue(default_concurrency_limit=40).launch()
 
 
1
  import gradio as gr
2
  import pandas as pd
3
+ from src.display.about import (
 
 
 
4
  CITATION_BUTTON_LABEL,
5
  CITATION_BUTTON_TEXT,
6
  EVALUATION_QUEUE_TEXT,
7
  INTRODUCTION_TEXT,
8
  LLM_BENCHMARKS_TEXT,
9
+ FAQ_TEXT,
10
  TITLE,
11
  )
12
  from src.display.css_html_js import custom_css
 
23
  WeightType,
24
  Precision
25
  )
26
+ from src.envs import API, EVAL_REQUESTS_PATH, EVAL_RESULTS_PATH, H4_TOKEN, IS_PUBLIC, QUEUE_REPO, REPO_ID, RESULTS_REPO
27
+ from PIL import Image
28
+ from dummydatagen import dummy_data_for_plot, create_metric_plot_obj_1, dummydf
29
+ import copy
30
 
31
 
32
  def restart_space():
33
+ API.restart_space(repo_id=REPO_ID, token=H4_TOKEN)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
 
35
  # Searching and filtering
36
+ raw_data = dummydf()
37
+ methods = list(set(raw_data['Method']))
38
+ metrics = ["Style-UA", "Style-IRA", "Style-CRA", "Object-UA", "Object-IRA", "Object-CRA", "FID", "Time (s)", "Storage (GB)", "Memory (GB)"]
39
+
40
  def update_table(
41
  hidden_df: pd.DataFrame,
42
+ columns_1: list,
43
+ columns_2: list,
44
+ columns_3: list,
45
+ model1: list,
 
 
46
  ):
 
 
 
 
47
 
48
+ filtered_df = select_columns(hidden_df, columns_1, columns_2, columns_3)
49
 
50
+ filtered_df = filter_model1(filtered_df, model1)
51
+
52
+ return filtered_df
53
 
54
 
55
+ def select_columns(df: pd.DataFrame, columns_1: list, columns_2: list, columns_3: list) -> pd.DataFrame:
56
+ always_here_cols = ["Method"]
57
+
 
 
58
  # We use COLS to maintain sorting
59
+ all_columns = metrics
 
 
 
60
 
61
+ if (len(columns_1)+len(columns_2) + len(columns_3)) == 0:
62
+ filtered_df = df[
63
+ always_here_cols +
64
+ [c for c in all_columns if c in df.columns]
65
+ ]
66
 
67
+ else:
68
+ filtered_df = df[
69
+ always_here_cols +
70
+ [c for c in all_columns if c in df.columns and (c in columns_1 or c in columns_2 or c in columns_3 ) ]
71
+ ]
 
 
 
 
 
 
 
 
 
 
72
 
73
  return filtered_df
74
 
75
 
76
+ def filter_model1(df: pd.DataFrame, model_query: list) -> pd.DataFrame:
 
 
77
  # Show all models
78
+ if len(model_query) == 0:
79
+ return df
80
+
81
+ filtered_df = df
82
+ filtered_df = filtered_df[filtered_df["Method"].isin(model_query)]
83
+ return filtered_df
84
 
 
 
 
85
 
 
 
 
 
86
 
87
+ demo = gr.Blocks(css=custom_css)
88
 
89
 
 
90
  with demo:
91
+ with gr.Row():
92
+ gr.Image("./assets/logo.png", height="200px", width="200px", scale=0.1,
93
+ show_download_button=False, container=False)
94
+ gr.HTML(TITLE, elem_id="title")
95
 
96
+ gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text")
97
  with gr.Tabs(elem_classes="tab-buttons") as tabs:
98
+ with gr.TabItem("πŸ… UnlearnCanvas Benchmark", elem_id="llm-benchmark-tab-table", id=0):
99
  with gr.Row():
100
  with gr.Column():
101
  with gr.Row():
102
+ model1_column = gr.CheckboxGroup(
103
+ label="Unlearning Methods",
104
+ choices=methods,
105
+ interactive=True,
106
+ elem_id="column-select",
107
+ )
108
+
109
+ with gr.Row():
110
+ shown_columns_1 = gr.CheckboxGroup(
111
+ choices=["Style-UA", "Style-IRA", "Style-CRA", "Object-UA", "Object-IRA", "Object-CRA"],
112
+ label="Style / Object Unlearning Effectiveness",
113
+ elem_id="column-select",
114
+ interactive=True,
115
  )
116
+
117
  with gr.Row():
118
+ shown_columns_2 = gr.CheckboxGroup(
119
+ choices=["FID"],
120
+ label="Image Quality",
 
 
 
 
 
 
 
 
 
121
  elem_id="column-select",
122
  interactive=True,
123
  )
124
+
125
  with gr.Row():
126
+ shown_columns_3 = gr.CheckboxGroup(
127
+ choices=["Time (s)", "Memory (GB)", "Storage (GB)"],
128
+ label="Resource Costs",
129
+ elem_id="column-select",
130
+ interactive=True,
131
  )
132
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
 
134
  leaderboard_table = gr.components.Dataframe(
135
+ value= raw_data,
 
 
 
 
 
136
  elem_id="leaderboard-table",
137
  interactive=False,
138
  visible=True,
139
+ # column_widths=["2%", "33%"]
140
  )
141
 
142
+ game_bench_df_for_search = gr.components.Dataframe(
143
+ value= raw_data,
144
+ elem_id="leaderboard-table",
145
+ interactive=False,
 
146
  visible=False,
147
+ # column_widths=["2%", "33%"]
148
  )
149
+
150
+
151
+ for selector in [shown_columns_1,shown_columns_2, shown_columns_3, model1_column]:
 
 
 
 
 
 
 
 
 
 
 
152
  selector.change(
153
  update_table,
154
+ [
155
+ game_bench_df_for_search,
156
+ shown_columns_1,
157
+ shown_columns_2,
158
+ shown_columns_3,
159
+ model1_column,
 
 
160
  ],
161
  leaderboard_table,
162
  queue=True,
163
  )
164
+
165
+ with gr.TabItem("πŸš€ Model Submit", elem_id="llm-benchmark-tab-table", id=1):
166
+ gr.Markdown(EVALUATION_QUEUE_TEXT, elem_classes="markdown-text")
167
+ gr.Markdown(FAQ_TEXT, elem_classes="markdown-text")
168
 
169
  with gr.TabItem("πŸ“ About", elem_id="llm-benchmark-tab-table", id=2):
170
  gr.Markdown(LLM_BENCHMARKS_TEXT, elem_classes="markdown-text")
171
+ gr.Markdown(FAQ_TEXT, elem_classes="markdown-text")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
172
 
173
  with gr.Row():
174
+ with gr.Accordion("πŸ“™ Citation", open=True):
175
  citation_button = gr.Textbox(
176
  value=CITATION_BUTTON_TEXT,
177
  label=CITATION_BUTTON_LABEL,
178
+ lines=8,
179
  elem_id="citation-button",
180
  show_copy_button=True,
181
  )
182
 
183
+
184
+ demo.launch()
185
+