Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -109,16 +109,17 @@ def compute_efficiency_ratio(df):
|
|
| 109 |
ratio = max_val / min_val if min_val > 0 else 1
|
| 110 |
return ratio
|
| 111 |
|
| 112 |
-
def
|
| 113 |
"""
|
| 114 |
-
Returns
|
| 115 |
-
The
|
|
|
|
| 116 |
"""
|
| 117 |
return (
|
| 118 |
f'<div style="text-align: right;">'
|
| 119 |
-
f' <div style="display: inline-block; background-color: #
|
| 120 |
-
f' border-radius: 5px;
|
| 121 |
-
f'
|
| 122 |
f' </div>'
|
| 123 |
f'</div>'
|
| 124 |
)
|
|
@@ -132,7 +133,7 @@ def get_global_callout():
|
|
| 132 |
df['gpu_energy_numeric'] = pd.to_numeric(df['total_gpu_energy'], errors='raise') * 1000
|
| 133 |
all_df = pd.concat([all_df, df], ignore_index=True)
|
| 134 |
ratio = compute_efficiency_ratio(all_df)
|
| 135 |
-
return
|
| 136 |
|
| 137 |
### ZIP DOWNLOAD FUNCTIONS ###
|
| 138 |
|
|
@@ -174,70 +175,70 @@ def update_text_generation(selected_display, sort_order):
|
|
| 174 |
return df
|
| 175 |
df = process_df('text_generation.csv', sort_order, filter_fn)
|
| 176 |
ratio = compute_efficiency_ratio(df)
|
| 177 |
-
callout =
|
| 178 |
table_html = generate_html_table_from_df(df)
|
| 179 |
return callout, table_html
|
| 180 |
|
| 181 |
def update_image_generation(sort_order):
|
| 182 |
df = process_df('image_generation.csv', sort_order)
|
| 183 |
ratio = compute_efficiency_ratio(df)
|
| 184 |
-
callout =
|
| 185 |
table_html = generate_html_table_from_df(df)
|
| 186 |
return callout, table_html
|
| 187 |
|
| 188 |
def update_text_classification(sort_order):
|
| 189 |
df = process_df('text_classification.csv', sort_order)
|
| 190 |
ratio = compute_efficiency_ratio(df)
|
| 191 |
-
callout =
|
| 192 |
table_html = generate_html_table_from_df(df)
|
| 193 |
return callout, table_html
|
| 194 |
|
| 195 |
def update_image_classification(sort_order):
|
| 196 |
df = process_df('image_classification.csv', sort_order)
|
| 197 |
ratio = compute_efficiency_ratio(df)
|
| 198 |
-
callout =
|
| 199 |
table_html = generate_html_table_from_df(df)
|
| 200 |
return callout, table_html
|
| 201 |
|
| 202 |
def update_image_captioning(sort_order):
|
| 203 |
df = process_df('image_captioning.csv', sort_order)
|
| 204 |
ratio = compute_efficiency_ratio(df)
|
| 205 |
-
callout =
|
| 206 |
table_html = generate_html_table_from_df(df)
|
| 207 |
return callout, table_html
|
| 208 |
|
| 209 |
def update_summarization(sort_order):
|
| 210 |
df = process_df('summarization.csv', sort_order)
|
| 211 |
ratio = compute_efficiency_ratio(df)
|
| 212 |
-
callout =
|
| 213 |
table_html = generate_html_table_from_df(df)
|
| 214 |
return callout, table_html
|
| 215 |
|
| 216 |
def update_asr(sort_order):
|
| 217 |
df = process_df('asr.csv', sort_order)
|
| 218 |
ratio = compute_efficiency_ratio(df)
|
| 219 |
-
callout =
|
| 220 |
table_html = generate_html_table_from_df(df)
|
| 221 |
return callout, table_html
|
| 222 |
|
| 223 |
def update_object_detection(sort_order):
|
| 224 |
df = process_df('object_detection.csv', sort_order)
|
| 225 |
ratio = compute_efficiency_ratio(df)
|
| 226 |
-
callout =
|
| 227 |
table_html = generate_html_table_from_df(df)
|
| 228 |
return callout, table_html
|
| 229 |
|
| 230 |
def update_sentence_similarity(sort_order):
|
| 231 |
df = process_df('sentence_similarity.csv', sort_order)
|
| 232 |
ratio = compute_efficiency_ratio(df)
|
| 233 |
-
callout =
|
| 234 |
table_html = generate_html_table_from_df(df)
|
| 235 |
return callout, table_html
|
| 236 |
|
| 237 |
def update_extractive_qa(sort_order):
|
| 238 |
df = process_df('question_answering.csv', sort_order)
|
| 239 |
ratio = compute_efficiency_ratio(df)
|
| 240 |
-
callout =
|
| 241 |
table_html = generate_html_table_from_df(df)
|
| 242 |
return callout, table_html
|
| 243 |
|
|
@@ -257,7 +258,7 @@ def update_all_tasks(sort_order):
|
|
| 257 |
ascending = True if sort_order == "Low to High" else False
|
| 258 |
all_df = all_df.sort_values(by='gpu_energy_numeric', ascending=ascending)
|
| 259 |
ratio = compute_efficiency_ratio(all_df)
|
| 260 |
-
callout =
|
| 261 |
table_html = generate_html_table_from_df(all_df)
|
| 262 |
return callout, table_html
|
| 263 |
|
|
@@ -294,28 +295,25 @@ with demo:
|
|
| 294 |
</div>
|
| 295 |
''')
|
| 296 |
|
| 297 |
-
# ---
|
| 298 |
-
gr.HTML('''
|
| 299 |
-
<div style="text-align: center; margin-top: 0px;">
|
| 300 |
-
<img src="https://huggingface.co/spaces/AIEnergyScore/Leaderboard/resolve/main/logo.png"
|
| 301 |
-
alt="Logo"
|
| 302 |
-
style="display: inline-block; max-width: 300px; height: auto;">
|
| 303 |
-
</div>
|
| 304 |
-
''')
|
| 305 |
-
|
| 306 |
-
# --- Global Welcome & Callout Row ---
|
| 307 |
with gr.Row():
|
| 308 |
-
with gr.Column(scale=
|
| 309 |
-
gr.
|
| 310 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 311 |
global_callout = gr.HTML(get_global_callout())
|
| 312 |
|
| 313 |
# --- Tabs for the different tasks ---
|
| 314 |
with gr.Tabs():
|
| 315 |
-
# --- Text Generation Tab ---
|
| 316 |
with gr.TabItem("Text Generation 💬"):
|
| 317 |
with gr.Row():
|
| 318 |
-
with gr.Column(scale=
|
| 319 |
model_class_options = [
|
| 320 |
"A (Single Consumer GPU) <20B parameters",
|
| 321 |
"B (Single Cloud GPU) 20-66B parameters",
|
|
@@ -326,6 +324,7 @@ with demo:
|
|
| 326 |
label="Select Model Class",
|
| 327 |
value=model_class_options[0]
|
| 328 |
)
|
|
|
|
| 329 |
sort_dropdown_tg = gr.Dropdown(
|
| 330 |
choices=["Low to High", "High to Low"],
|
| 331 |
label="Sort",
|
|
|
|
| 109 |
ratio = max_val / min_val if min_val > 0 else 1
|
| 110 |
return ratio
|
| 111 |
|
| 112 |
+
def generate_info_callout(ratio, scope_text):
|
| 113 |
"""
|
| 114 |
+
Returns an inline, right-aligned "did you know" callout using a lightbulb emoji.
|
| 115 |
+
The callout uses a light green background, a small font, and states:
|
| 116 |
+
"💡 did you know: XXXx energy use difference between most and least efficient model in [scope_text]."
|
| 117 |
"""
|
| 118 |
return (
|
| 119 |
f'<div style="text-align: right;">'
|
| 120 |
+
f' <div style="display: inline-block; background-color: #e6ffe6; padding: 8px; '
|
| 121 |
+
f' border-radius: 5px; font-size: 0.8em;">'
|
| 122 |
+
f' 💡 did you know: <strong>{ratio:,.1f}x</strong> energy use difference between most and least efficient model in {scope_text}.'
|
| 123 |
f' </div>'
|
| 124 |
f'</div>'
|
| 125 |
)
|
|
|
|
| 133 |
df['gpu_energy_numeric'] = pd.to_numeric(df['total_gpu_energy'], errors='raise') * 1000
|
| 134 |
all_df = pd.concat([all_df, df], ignore_index=True)
|
| 135 |
ratio = compute_efficiency_ratio(all_df)
|
| 136 |
+
return generate_info_callout(ratio, "this leaderboard")
|
| 137 |
|
| 138 |
### ZIP DOWNLOAD FUNCTIONS ###
|
| 139 |
|
|
|
|
| 175 |
return df
|
| 176 |
df = process_df('text_generation.csv', sort_order, filter_fn)
|
| 177 |
ratio = compute_efficiency_ratio(df)
|
| 178 |
+
callout = generate_info_callout(ratio, "this task")
|
| 179 |
table_html = generate_html_table_from_df(df)
|
| 180 |
return callout, table_html
|
| 181 |
|
| 182 |
def update_image_generation(sort_order):
|
| 183 |
df = process_df('image_generation.csv', sort_order)
|
| 184 |
ratio = compute_efficiency_ratio(df)
|
| 185 |
+
callout = generate_info_callout(ratio, "this task")
|
| 186 |
table_html = generate_html_table_from_df(df)
|
| 187 |
return callout, table_html
|
| 188 |
|
| 189 |
def update_text_classification(sort_order):
|
| 190 |
df = process_df('text_classification.csv', sort_order)
|
| 191 |
ratio = compute_efficiency_ratio(df)
|
| 192 |
+
callout = generate_info_callout(ratio, "this task")
|
| 193 |
table_html = generate_html_table_from_df(df)
|
| 194 |
return callout, table_html
|
| 195 |
|
| 196 |
def update_image_classification(sort_order):
|
| 197 |
df = process_df('image_classification.csv', sort_order)
|
| 198 |
ratio = compute_efficiency_ratio(df)
|
| 199 |
+
callout = generate_info_callout(ratio, "this task")
|
| 200 |
table_html = generate_html_table_from_df(df)
|
| 201 |
return callout, table_html
|
| 202 |
|
| 203 |
def update_image_captioning(sort_order):
|
| 204 |
df = process_df('image_captioning.csv', sort_order)
|
| 205 |
ratio = compute_efficiency_ratio(df)
|
| 206 |
+
callout = generate_info_callout(ratio, "this task")
|
| 207 |
table_html = generate_html_table_from_df(df)
|
| 208 |
return callout, table_html
|
| 209 |
|
| 210 |
def update_summarization(sort_order):
|
| 211 |
df = process_df('summarization.csv', sort_order)
|
| 212 |
ratio = compute_efficiency_ratio(df)
|
| 213 |
+
callout = generate_info_callout(ratio, "this task")
|
| 214 |
table_html = generate_html_table_from_df(df)
|
| 215 |
return callout, table_html
|
| 216 |
|
| 217 |
def update_asr(sort_order):
|
| 218 |
df = process_df('asr.csv', sort_order)
|
| 219 |
ratio = compute_efficiency_ratio(df)
|
| 220 |
+
callout = generate_info_callout(ratio, "this task")
|
| 221 |
table_html = generate_html_table_from_df(df)
|
| 222 |
return callout, table_html
|
| 223 |
|
| 224 |
def update_object_detection(sort_order):
|
| 225 |
df = process_df('object_detection.csv', sort_order)
|
| 226 |
ratio = compute_efficiency_ratio(df)
|
| 227 |
+
callout = generate_info_callout(ratio, "this task")
|
| 228 |
table_html = generate_html_table_from_df(df)
|
| 229 |
return callout, table_html
|
| 230 |
|
| 231 |
def update_sentence_similarity(sort_order):
|
| 232 |
df = process_df('sentence_similarity.csv', sort_order)
|
| 233 |
ratio = compute_efficiency_ratio(df)
|
| 234 |
+
callout = generate_info_callout(ratio, "this task")
|
| 235 |
table_html = generate_html_table_from_df(df)
|
| 236 |
return callout, table_html
|
| 237 |
|
| 238 |
def update_extractive_qa(sort_order):
|
| 239 |
df = process_df('question_answering.csv', sort_order)
|
| 240 |
ratio = compute_efficiency_ratio(df)
|
| 241 |
+
callout = generate_info_callout(ratio, "this task")
|
| 242 |
table_html = generate_html_table_from_df(df)
|
| 243 |
return callout, table_html
|
| 244 |
|
|
|
|
| 258 |
ascending = True if sort_order == "Low to High" else False
|
| 259 |
all_df = all_df.sort_values(by='gpu_energy_numeric', ascending=ascending)
|
| 260 |
ratio = compute_efficiency_ratio(all_df)
|
| 261 |
+
callout = generate_info_callout(ratio, "this leaderboard")
|
| 262 |
table_html = generate_html_table_from_df(all_df)
|
| 263 |
return callout, table_html
|
| 264 |
|
|
|
|
| 295 |
</div>
|
| 296 |
''')
|
| 297 |
|
| 298 |
+
# --- Logo & Global Callout Row ---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 299 |
with gr.Row():
|
| 300 |
+
with gr.Column(scale=6):
|
| 301 |
+
gr.HTML('''
|
| 302 |
+
<div style="text-align: left; margin-top: 0px;">
|
| 303 |
+
<img src="https://huggingface.co/spaces/AIEnergyScore/Leaderboard/resolve/main/logo.png"
|
| 304 |
+
alt="Logo"
|
| 305 |
+
style="display: inline-block; max-width: 300px; height: auto;">
|
| 306 |
+
</div>
|
| 307 |
+
''')
|
| 308 |
+
with gr.Column(scale=6):
|
| 309 |
global_callout = gr.HTML(get_global_callout())
|
| 310 |
|
| 311 |
# --- Tabs for the different tasks ---
|
| 312 |
with gr.Tabs():
|
| 313 |
+
# --- Text Generation Tab (two dropdowns side by side with task callout to the right) ---
|
| 314 |
with gr.TabItem("Text Generation 💬"):
|
| 315 |
with gr.Row():
|
| 316 |
+
with gr.Column(scale=4):
|
| 317 |
model_class_options = [
|
| 318 |
"A (Single Consumer GPU) <20B parameters",
|
| 319 |
"B (Single Cloud GPU) 20-66B parameters",
|
|
|
|
| 324 |
label="Select Model Class",
|
| 325 |
value=model_class_options[0]
|
| 326 |
)
|
| 327 |
+
with gr.Column(scale=4):
|
| 328 |
sort_dropdown_tg = gr.Dropdown(
|
| 329 |
choices=["Low to High", "High to Low"],
|
| 330 |
label="Sort",
|