Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -69,7 +69,6 @@ def generate_html_table_from_df(df):
|
|
69 |
html += '<tbody>'
|
70 |
for _, row in df.iterrows():
|
71 |
energy_numeric = row['gpu_energy_numeric']
|
72 |
-
# Format energy with commas and 2 decimal places.
|
73 |
energy_str = f"{energy_numeric:,.2f}"
|
74 |
bar_width = (energy_numeric / max_energy) * 100
|
75 |
score_val = row['energy_score']
|
@@ -111,11 +110,13 @@ def generate_info_callout(ratio, scope_text):
|
|
111 |
"""
|
112 |
Returns a "did you know" callout with a lightbulb emoji.
|
113 |
The callout uses a light green background, a small font, and is limited to a max-width of 250px.
|
|
|
114 |
"""
|
115 |
return (
|
116 |
-
f'<div style="
|
117 |
-
f'
|
118 |
-
f'</
|
|
|
119 |
)
|
120 |
|
121 |
def get_global_callout():
|
@@ -258,13 +259,14 @@ def update_all_tasks(sort_order):
|
|
258 |
|
259 |
### BUILD THE GRADIO INTERFACE ###
|
260 |
|
261 |
-
#
|
|
|
262 |
global_header_html = f"""
|
263 |
<div style="position: relative; width: 100%; text-align: center; margin-bottom: 20px;">
|
264 |
<img src="https://huggingface.co/spaces/AIEnergyScore/Leaderboard/resolve/main/logo.png"
|
265 |
alt="Logo"
|
266 |
-
style="width:300px; max-width:300px; height:auto; display:
|
267 |
-
<div style="position: absolute; top: 50%;
|
268 |
{get_global_callout()}
|
269 |
</div>
|
270 |
</div>
|
@@ -289,7 +291,7 @@ demo = gr.Blocks(css="""
|
|
289 |
""")
|
290 |
|
291 |
with demo:
|
292 |
-
# Header Links
|
293 |
gr.HTML(f"""
|
294 |
<div style="display: flex; justify-content: space-evenly; align-items: center; margin-bottom: 20px;">
|
295 |
<a href="https://huggingface.co/spaces/AIEnergyScore/submission_portal" style="text-decoration: none; font-weight: bold; font-size: 1.1em; color: black; font-family: 'Inter', sans-serif;">Submission Portal</a>
|
@@ -301,12 +303,12 @@ with demo:
|
|
301 |
</div>
|
302 |
""")
|
303 |
|
304 |
-
# Global Header: Centered Logo with Global Callout
|
305 |
gr.HTML(global_header_html)
|
306 |
|
307 |
-
# Tabs for different tasks
|
308 |
with gr.Tabs():
|
309 |
-
# Text Generation Tab
|
310 |
with gr.TabItem("Text Generation π¬"):
|
311 |
with gr.Row():
|
312 |
with gr.Column(scale=4):
|
@@ -327,7 +329,7 @@ with demo:
|
|
327 |
model_class_dropdown.change(fn=update_text_generation, inputs=[model_class_dropdown, sort_dropdown_tg], outputs=[tg_callout, tg_table])
|
328 |
sort_dropdown_tg.change(fn=update_text_generation, inputs=[model_class_dropdown, sort_dropdown_tg], outputs=[tg_callout, tg_table])
|
329 |
|
330 |
-
# Image Generation Tab
|
331 |
with gr.TabItem("Image Generation π·"):
|
332 |
with gr.Row():
|
333 |
with gr.Column(scale=8):
|
@@ -340,7 +342,7 @@ with demo:
|
|
340 |
img_table.value = init_table
|
341 |
sort_dropdown_img.change(fn=update_image_generation, inputs=sort_dropdown_img, outputs=[img_callout, img_table])
|
342 |
|
343 |
-
# Text Classification Tab
|
344 |
with gr.TabItem("Text Classification π"):
|
345 |
with gr.Row():
|
346 |
with gr.Column(scale=8):
|
@@ -353,7 +355,7 @@ with demo:
|
|
353 |
tc_table.value = init_table
|
354 |
sort_dropdown_tc.change(fn=update_text_classification, inputs=sort_dropdown_tc, outputs=[tc_callout, tc_table])
|
355 |
|
356 |
-
# Image Classification Tab
|
357 |
with gr.TabItem("Image Classification πΌοΈ"):
|
358 |
with gr.Row():
|
359 |
with gr.Column(scale=8):
|
@@ -366,7 +368,7 @@ with demo:
|
|
366 |
ic_table.value = init_table
|
367 |
sort_dropdown_ic.change(fn=update_image_classification, inputs=sort_dropdown_ic, outputs=[ic_callout, ic_table])
|
368 |
|
369 |
-
# Image Captioning Tab
|
370 |
with gr.TabItem("Image Captioning π"):
|
371 |
with gr.Row():
|
372 |
with gr.Column(scale=8):
|
@@ -379,7 +381,7 @@ with demo:
|
|
379 |
icap_table.value = init_table
|
380 |
sort_dropdown_icap.change(fn=update_image_captioning, inputs=sort_dropdown_icap, outputs=[icap_callout, icap_table])
|
381 |
|
382 |
-
# Summarization Tab
|
383 |
with gr.TabItem("Summarization π"):
|
384 |
with gr.Row():
|
385 |
with gr.Column(scale=8):
|
@@ -392,7 +394,7 @@ with demo:
|
|
392 |
sum_table.value = init_table
|
393 |
sort_dropdown_sum.change(fn=update_summarization, inputs=sort_dropdown_sum, outputs=[sum_callout, sum_table])
|
394 |
|
395 |
-
# Automatic Speech Recognition Tab
|
396 |
with gr.TabItem("Automatic Speech Recognition π¬"):
|
397 |
with gr.Row():
|
398 |
with gr.Column(scale=8):
|
@@ -405,7 +407,7 @@ with demo:
|
|
405 |
asr_table.value = init_table
|
406 |
sort_dropdown_asr.change(fn=update_asr, inputs=sort_dropdown_asr, outputs=[asr_callout, asr_table])
|
407 |
|
408 |
-
# Object Detection Tab
|
409 |
with gr.TabItem("Object Detection π"):
|
410 |
with gr.Row():
|
411 |
with gr.Column(scale=8):
|
@@ -418,7 +420,7 @@ with demo:
|
|
418 |
od_table.value = init_table
|
419 |
sort_dropdown_od.change(fn=update_object_detection, inputs=sort_dropdown_od, outputs=[od_callout, od_table])
|
420 |
|
421 |
-
# Sentence Similarity Tab
|
422 |
with gr.TabItem("Sentence Similarity π"):
|
423 |
with gr.Row():
|
424 |
with gr.Column(scale=8):
|
@@ -431,7 +433,7 @@ with demo:
|
|
431 |
ss_table.value = init_table
|
432 |
sort_dropdown_ss.change(fn=update_sentence_similarity, inputs=sort_dropdown_ss, outputs=[ss_callout, ss_table])
|
433 |
|
434 |
-
# Extractive QA Tab
|
435 |
with gr.TabItem("Extractive QA β"):
|
436 |
with gr.Row():
|
437 |
with gr.Column(scale=8):
|
@@ -444,7 +446,7 @@ with demo:
|
|
444 |
qa_table.value = init_table
|
445 |
sort_dropdown_qa.change(fn=update_extractive_qa, inputs=sort_dropdown_qa, outputs=[qa_callout, qa_table])
|
446 |
|
447 |
-
# All Tasks Tab
|
448 |
with gr.TabItem("All Tasks π‘"):
|
449 |
with gr.Row():
|
450 |
with gr.Column(scale=8):
|
|
|
69 |
html += '<tbody>'
|
70 |
for _, row in df.iterrows():
|
71 |
energy_numeric = row['gpu_energy_numeric']
|
|
|
72 |
energy_str = f"{energy_numeric:,.2f}"
|
73 |
bar_width = (energy_numeric / max_energy) * 100
|
74 |
score_val = row['energy_score']
|
|
|
110 |
"""
|
111 |
Returns a "did you know" callout with a lightbulb emoji.
|
112 |
The callout uses a light green background, a small font, and is limited to a max-width of 250px.
|
113 |
+
It is wrapped in a container that aligns it to the right.
|
114 |
"""
|
115 |
return (
|
116 |
+
f'<div style="text-align: right;">'
|
117 |
+
f'<div style="display:inline-block; max-width:250px; font-size:0.8em; background-color:#e6ffe6; padding:8px; border-radius:5px;">'
|
118 |
+
f'π‘ There\'s a <strong>{ratio:,.1f}x</strong> energy use difference between the most and least efficient model in {scope_text}.'
|
119 |
+
f'</div></div>'
|
120 |
)
|
121 |
|
122 |
def get_global_callout():
|
|
|
259 |
|
260 |
### BUILD THE GRADIO INTERFACE ###
|
261 |
|
262 |
+
# Build the global header HTML. The logo is centered across the full width,
|
263 |
+
# and the global callout is positioned at the right edge (20px from the right).
|
264 |
global_header_html = f"""
|
265 |
<div style="position: relative; width: 100%; text-align: center; margin-bottom: 20px;">
|
266 |
<img src="https://huggingface.co/spaces/AIEnergyScore/Leaderboard/resolve/main/logo.png"
|
267 |
alt="Logo"
|
268 |
+
style="width:300px; max-width:300px; height:auto; display:inline-block;">
|
269 |
+
<div style="position: absolute; top: 50%; right: 20px; transform: translateY(-50%);">
|
270 |
{get_global_callout()}
|
271 |
</div>
|
272 |
</div>
|
|
|
291 |
""")
|
292 |
|
293 |
with demo:
|
294 |
+
# --- Header Links ---
|
295 |
gr.HTML(f"""
|
296 |
<div style="display: flex; justify-content: space-evenly; align-items: center; margin-bottom: 20px;">
|
297 |
<a href="https://huggingface.co/spaces/AIEnergyScore/submission_portal" style="text-decoration: none; font-weight: bold; font-size: 1.1em; color: black; font-family: 'Inter', sans-serif;">Submission Portal</a>
|
|
|
303 |
</div>
|
304 |
""")
|
305 |
|
306 |
+
# --- Global Header: Centered Logo with Global Callout at Right Edge ---
|
307 |
gr.HTML(global_header_html)
|
308 |
|
309 |
+
# --- Tabs for the different tasks ---
|
310 |
with gr.Tabs():
|
311 |
+
# --- Text Generation Tab (dropdowns side by side with task callout to the right) ---
|
312 |
with gr.TabItem("Text Generation π¬"):
|
313 |
with gr.Row():
|
314 |
with gr.Column(scale=4):
|
|
|
329 |
model_class_dropdown.change(fn=update_text_generation, inputs=[model_class_dropdown, sort_dropdown_tg], outputs=[tg_callout, tg_table])
|
330 |
sort_dropdown_tg.change(fn=update_text_generation, inputs=[model_class_dropdown, sort_dropdown_tg], outputs=[tg_callout, tg_table])
|
331 |
|
332 |
+
# --- Image Generation Tab ---
|
333 |
with gr.TabItem("Image Generation π·"):
|
334 |
with gr.Row():
|
335 |
with gr.Column(scale=8):
|
|
|
342 |
img_table.value = init_table
|
343 |
sort_dropdown_img.change(fn=update_image_generation, inputs=sort_dropdown_img, outputs=[img_callout, img_table])
|
344 |
|
345 |
+
# --- Text Classification Tab ---
|
346 |
with gr.TabItem("Text Classification π"):
|
347 |
with gr.Row():
|
348 |
with gr.Column(scale=8):
|
|
|
355 |
tc_table.value = init_table
|
356 |
sort_dropdown_tc.change(fn=update_text_classification, inputs=sort_dropdown_tc, outputs=[tc_callout, tc_table])
|
357 |
|
358 |
+
# --- Image Classification Tab ---
|
359 |
with gr.TabItem("Image Classification πΌοΈ"):
|
360 |
with gr.Row():
|
361 |
with gr.Column(scale=8):
|
|
|
368 |
ic_table.value = init_table
|
369 |
sort_dropdown_ic.change(fn=update_image_classification, inputs=sort_dropdown_ic, outputs=[ic_callout, ic_table])
|
370 |
|
371 |
+
# --- Image Captioning Tab ---
|
372 |
with gr.TabItem("Image Captioning π"):
|
373 |
with gr.Row():
|
374 |
with gr.Column(scale=8):
|
|
|
381 |
icap_table.value = init_table
|
382 |
sort_dropdown_icap.change(fn=update_image_captioning, inputs=sort_dropdown_icap, outputs=[icap_callout, icap_table])
|
383 |
|
384 |
+
# --- Summarization Tab ---
|
385 |
with gr.TabItem("Summarization π"):
|
386 |
with gr.Row():
|
387 |
with gr.Column(scale=8):
|
|
|
394 |
sum_table.value = init_table
|
395 |
sort_dropdown_sum.change(fn=update_summarization, inputs=sort_dropdown_sum, outputs=[sum_callout, sum_table])
|
396 |
|
397 |
+
# --- Automatic Speech Recognition Tab ---
|
398 |
with gr.TabItem("Automatic Speech Recognition π¬"):
|
399 |
with gr.Row():
|
400 |
with gr.Column(scale=8):
|
|
|
407 |
asr_table.value = init_table
|
408 |
sort_dropdown_asr.change(fn=update_asr, inputs=sort_dropdown_asr, outputs=[asr_callout, asr_table])
|
409 |
|
410 |
+
# --- Object Detection Tab ---
|
411 |
with gr.TabItem("Object Detection π"):
|
412 |
with gr.Row():
|
413 |
with gr.Column(scale=8):
|
|
|
420 |
od_table.value = init_table
|
421 |
sort_dropdown_od.change(fn=update_object_detection, inputs=sort_dropdown_od, outputs=[od_callout, od_table])
|
422 |
|
423 |
+
# --- Sentence Similarity Tab ---
|
424 |
with gr.TabItem("Sentence Similarity π"):
|
425 |
with gr.Row():
|
426 |
with gr.Column(scale=8):
|
|
|
433 |
ss_table.value = init_table
|
434 |
sort_dropdown_ss.change(fn=update_sentence_similarity, inputs=sort_dropdown_ss, outputs=[ss_callout, ss_table])
|
435 |
|
436 |
+
# --- Extractive QA Tab ---
|
437 |
with gr.TabItem("Extractive QA β"):
|
438 |
with gr.Row():
|
439 |
with gr.Column(scale=8):
|
|
|
446 |
qa_table.value = init_table
|
447 |
sort_dropdown_qa.change(fn=update_extractive_qa, inputs=sort_dropdown_qa, outputs=[qa_callout, qa_table])
|
448 |
|
449 |
+
# --- All Tasks Tab ---
|
450 |
with gr.TabItem("All Tasks π‘"):
|
451 |
with gr.Row():
|
452 |
with gr.Column(scale=8):
|