bgamazay commited on
Commit
bccdec6
·
verified ·
1 Parent(s): 828c71e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +9 -6
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 dynamically calculate max energy) ---
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