Spaces:
Running
Running
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 |
|