Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -39,7 +39,7 @@ def make_link(mname):
|
|
39 |
display_name = parts[1] if len(parts) > 1 else mname
|
40 |
return f'[{display_name}](https://huggingface.co/{mname})'
|
41 |
|
42 |
-
# --- Leaderboard Table Functions (Modified to
|
43 |
|
44 |
def create_minimal_bar_html(energy_value_wh, energy_score, max_energy_value):
|
45 |
"""Generates HTML for the minimal bar chart with dynamic max energy."""
|
@@ -64,6 +64,8 @@ def get_model_names(task):
|
|
64 |
df = df.iloc[:, 1:]
|
65 |
df['total_gpu_energy'] = pd.to_numeric(df['total_gpu_energy'], errors='raise') * 1000 # kWh to Wh conversion
|
66 |
df['energy_score'] = df['energy_score'].astype(int)
|
|
|
|
|
67 |
max_energy_for_task = df['total_gpu_energy'].max() # Calculate max energy for this task
|
68 |
|
69 |
# Create HTML bar chart for GPU Energy column, passing dynamic max_energy_for_task
|
@@ -72,7 +74,6 @@ def get_model_names(task):
|
|
72 |
df['Model'] = df['model'].apply(make_link)
|
73 |
df['Score'] = df['energy_score'].apply(format_stars)
|
74 |
df = df[['Model', 'GPU Energy (Wh)', 'Score']] # Keep only these columns
|
75 |
-
df = df.sort_values(by='total_gpu_energy') # Sort by underlying energy value for table order
|
76 |
df = df.drop('total_gpu_energy', axis=1) # remove the original energy column that was used for sorting
|
77 |
return df
|
78 |
|
@@ -83,16 +84,17 @@ def get_all_model_names():
|
|
83 |
df = pd.read_csv('data/energy/' + task)
|
84 |
df['total_gpu_energy'] = pd.to_numeric(df['total_gpu_energy'], errors='raise') * 1000 # kWh to Wh conversion
|
85 |
df['energy_score'] = df['energy_score'].astype(int)
|
86 |
-
max_energy_overall = max(max_energy_overall, df['total_gpu_energy'].max()) # Update overall max
|
87 |
-
|
88 |
all_df = pd.concat([all_df, df], ignore_index=True)
|
|
|
89 |
all_df = all_df.drop_duplicates(subset=['model'])
|
|
|
|
|
|
|
90 |
|
91 |
# Create HTML bar chart for GPU Energy column, passing dynamic max_energy_overall
|
92 |
all_df['GPU Energy (Wh)'] = all_df.apply(lambda row: create_minimal_bar_html(row['total_gpu_energy'], row['energy_score'], max_energy_overall), axis=1)
|
93 |
all_df['Model'] = all_df['model'].apply(make_link)
|
94 |
all_df['Score'] = all_df['energy_score'].apply(format_stars)
|
95 |
-
all_df = all_df.sort_values(by='total_gpu_energy') # Sort by underlying energy value for table order
|
96 |
all_df = all_df.drop('total_gpu_energy', axis=1) # remove the original energy column that was used for sorting
|
97 |
return all_df[['Model', 'GPU Energy (Wh)', 'Score']]
|
98 |
|
@@ -105,6 +107,8 @@ def get_text_generation_model_names(model_class):
|
|
105 |
df = df[df['class'] == model_class]
|
106 |
df['total_gpu_energy'] = pd.to_numeric(df['total_gpu_energy'], errors='raise') * 1000 # kWh to Wh conversion
|
107 |
df['energy_score'] = df['energy_score'].astype(int)
|
|
|
|
|
108 |
max_energy_for_class = df['total_gpu_energy'].max() # Calculate max energy for this class
|
109 |
|
110 |
# Create HTML bar chart for GPU Energy column, passing dynamic max_energy_for_class
|
@@ -113,7 +117,6 @@ def get_text_generation_model_names(model_class):
|
|
113 |
df['Model'] = df['model'].apply(make_link)
|
114 |
df['Score'] = df['energy_score'].apply(format_stars)
|
115 |
df = df[['Model', 'GPU Energy (Wh)', 'Score']] # Keep only these columns
|
116 |
-
df = df.sort_values(by='total_gpu_energy') # Sort by underlying energy value for table order
|
117 |
df = df.drop('total_gpu_energy', axis=1) # remove the original energy column that was used for sorting
|
118 |
return df
|
119 |
|
|
|
39 |
display_name = parts[1] if len(parts) > 1 else mname
|
40 |
return f'[{display_name}](https://huggingface.co/{mname})'
|
41 |
|
42 |
+
# --- Leaderboard Table Functions (Modified to sort BEFORE creating HTML bar) ---
|
43 |
|
44 |
def create_minimal_bar_html(energy_value_wh, energy_score, max_energy_value):
|
45 |
"""Generates HTML for the minimal bar chart with dynamic max energy."""
|
|
|
64 |
df = df.iloc[:, 1:]
|
65 |
df['total_gpu_energy'] = pd.to_numeric(df['total_gpu_energy'], errors='raise') * 1000 # kWh to Wh conversion
|
66 |
df['energy_score'] = df['energy_score'].astype(int)
|
67 |
+
|
68 |
+
df = df.sort_values(by='total_gpu_energy') # Sort BEFORE creating HTML column
|
69 |
max_energy_for_task = df['total_gpu_energy'].max() # Calculate max energy for this task
|
70 |
|
71 |
# Create HTML bar chart for GPU Energy column, passing dynamic max_energy_for_task
|
|
|
74 |
df['Model'] = df['model'].apply(make_link)
|
75 |
df['Score'] = df['energy_score'].apply(format_stars)
|
76 |
df = df[['Model', 'GPU Energy (Wh)', 'Score']] # Keep only these columns
|
|
|
77 |
df = df.drop('total_gpu_energy', axis=1) # remove the original energy column that was used for sorting
|
78 |
return df
|
79 |
|
|
|
84 |
df = pd.read_csv('data/energy/' + task)
|
85 |
df['total_gpu_energy'] = pd.to_numeric(df['total_gpu_energy'], errors='raise') * 1000 # kWh to Wh conversion
|
86 |
df['energy_score'] = df['energy_score'].astype(int)
|
|
|
|
|
87 |
all_df = pd.concat([all_df, df], ignore_index=True)
|
88 |
+
|
89 |
all_df = all_df.drop_duplicates(subset=['model'])
|
90 |
+
all_df = all_df.sort_values(by='total_gpu_energy') # Sort ALL DATA before calculating max and creating HTML
|
91 |
+
|
92 |
+
max_energy_overall = all_df['total_gpu_energy'].max() # Calculate overall max AFTER sorting
|
93 |
|
94 |
# Create HTML bar chart for GPU Energy column, passing dynamic max_energy_overall
|
95 |
all_df['GPU Energy (Wh)'] = all_df.apply(lambda row: create_minimal_bar_html(row['total_gpu_energy'], row['energy_score'], max_energy_overall), axis=1)
|
96 |
all_df['Model'] = all_df['model'].apply(make_link)
|
97 |
all_df['Score'] = all_df['energy_score'].apply(format_stars)
|
|
|
98 |
all_df = all_df.drop('total_gpu_energy', axis=1) # remove the original energy column that was used for sorting
|
99 |
return all_df[['Model', 'GPU Energy (Wh)', 'Score']]
|
100 |
|
|
|
107 |
df = df[df['class'] == model_class]
|
108 |
df['total_gpu_energy'] = pd.to_numeric(df['total_gpu_energy'], errors='raise') * 1000 # kWh to Wh conversion
|
109 |
df['energy_score'] = df['energy_score'].astype(int)
|
110 |
+
|
111 |
+
df = df.sort_values(by='total_gpu_energy') # Sort BEFORE creating HTML column
|
112 |
max_energy_for_class = df['total_gpu_energy'].max() # Calculate max energy for this class
|
113 |
|
114 |
# Create HTML bar chart for GPU Energy column, passing dynamic max_energy_for_class
|
|
|
117 |
df['Model'] = df['model'].apply(make_link)
|
118 |
df['Score'] = df['energy_score'].apply(format_stars)
|
119 |
df = df[['Model', 'GPU Energy (Wh)', 'Score']] # Keep only these columns
|
|
|
120 |
df = df.drop('total_gpu_energy', axis=1) # remove the original energy column that was used for sorting
|
121 |
return df
|
122 |
|