bgamazay commited on
Commit
78b788d
·
verified ·
1 Parent(s): 52acc8a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -9
app.py CHANGED
@@ -37,15 +37,27 @@ def make_link(mname):
37
  display_name = parts[1] if len(parts) > 1 else mname
38
  return f'[{display_name}](https://huggingface.co/{mname})'
39
 
40
- def get_plots(task):
41
- # Read CSV using the first column as index so that only the useful columns remain.
 
 
 
42
  df = pd.read_csv('data/energy/' + task, index_col=0)
 
 
 
 
 
 
43
  df['total_gpu_energy'] = pd.to_numeric(df['total_gpu_energy'], errors='coerce')
44
  df['energy_score'] = pd.to_numeric(df['energy_score'], errors='coerce').astype(int)
 
45
  df['Display Model'] = df['model'].apply(lambda m: m.split('/')[-1])
46
 
 
47
  color_map = {1: "red", 2: "orange", 3: "yellow", 4: "lightgreen", 5: "green"}
48
 
 
49
  fig = px.scatter(
50
  df,
51
  x="total_gpu_energy",
@@ -73,7 +85,7 @@ def get_plots(task):
73
  def get_all_plots():
74
  all_df = pd.DataFrame()
75
  for task in tasks:
76
- df = pd.read_csv('data/energy/' + task, index_col=0)
77
  df['total_gpu_energy'] = pd.to_numeric(df['total_gpu_energy'], errors='coerce')
78
  df['energy_score'] = pd.to_numeric(df['energy_score'], errors='coerce').astype(int)
79
  df['Display Model'] = df['model'].apply(lambda m: m.split('/')[-1])
@@ -108,13 +120,13 @@ def get_all_plots():
108
 
109
  def get_model_names(task):
110
  """
111
- For a given task, load the energy CSV and return a dataframe with the following columns:
112
  - Model (a markdown link)
113
  - GPU Energy (Wh) formatted to 4 decimal places
114
  - Score (a star rating based on energy_score)
115
- For text_generation.csv only, also add the "Class" column if present.
116
  """
117
- df = pd.read_csv('data/energy/' + task, index_col=0)
118
  df['total_gpu_energy'] = pd.to_numeric(df['total_gpu_energy'], errors='coerce')
119
  df['energy_score'] = pd.to_numeric(df['energy_score'], errors='coerce').astype(int)
120
  df['GPU Energy (Wh)'] = df['total_gpu_energy'].apply(lambda x: f"{x:.4f}")
@@ -127,19 +139,19 @@ def get_model_names(task):
127
  else:
128
  df = df[['Model', 'GPU Energy (Wh)', 'Score']]
129
 
130
- # Now sort by the numeric value in total_gpu_energy.
131
  df = df.sort_values(by='total_gpu_energy')
132
  return df
133
 
134
  def get_all_model_names():
135
  """
136
- Combine data from all tasks and return a leaderboard table with:
137
  - Model, GPU Energy (Wh), Score.
138
  Duplicate models are dropped.
139
  """
140
  all_df = pd.DataFrame()
141
  for task in tasks:
142
- df = pd.read_csv('data/energy/' + task, index_col=0)
143
  df['total_gpu_energy'] = pd.to_numeric(df['total_gpu_energy'], errors='coerce')
144
  df['energy_score'] = pd.to_numeric(df['energy_score'], errors='coerce').astype(int)
145
  df['GPU Energy (Wh)'] = df['total_gpu_energy'].apply(lambda x: f"{x:.4f}")
 
37
  display_name = parts[1] if len(parts) > 1 else mname
38
  return f'[{display_name}](https://huggingface.co/{mname})'
39
 
40
+ def read_csv_file(task):
41
+ """
42
+ Reads a CSV from the data/energy folder using the first column as the index
43
+ and strips any extraneous whitespace from the column names.
44
+ """
45
  df = pd.read_csv('data/energy/' + task, index_col=0)
46
+ df.columns = df.columns.str.strip() # remove any extra whitespace
47
+ return df
48
+
49
+ def get_plots(task):
50
+ df = read_csv_file(task)
51
+ # Convert the numeric columns
52
  df['total_gpu_energy'] = pd.to_numeric(df['total_gpu_energy'], errors='coerce')
53
  df['energy_score'] = pd.to_numeric(df['energy_score'], errors='coerce').astype(int)
54
+ # Create a short model name for display on the y-axis.
55
  df['Display Model'] = df['model'].apply(lambda m: m.split('/')[-1])
56
 
57
+ # Define a discrete color mapping for energy scores.
58
  color_map = {1: "red", 2: "orange", 3: "yellow", 4: "lightgreen", 5: "green"}
59
 
60
+ # Build the scatter plot.
61
  fig = px.scatter(
62
  df,
63
  x="total_gpu_energy",
 
85
  def get_all_plots():
86
  all_df = pd.DataFrame()
87
  for task in tasks:
88
+ df = read_csv_file(task)
89
  df['total_gpu_energy'] = pd.to_numeric(df['total_gpu_energy'], errors='coerce')
90
  df['energy_score'] = pd.to_numeric(df['energy_score'], errors='coerce').astype(int)
91
  df['Display Model'] = df['model'].apply(lambda m: m.split('/')[-1])
 
120
 
121
  def get_model_names(task):
122
  """
123
+ For a given task, load the energy CSV and return a DataFrame with the following columns:
124
  - Model (a markdown link)
125
  - GPU Energy (Wh) formatted to 4 decimal places
126
  - Score (a star rating based on energy_score)
127
+ For text_generation.csv only, also include the "Class" column if present.
128
  """
129
+ df = read_csv_file(task)
130
  df['total_gpu_energy'] = pd.to_numeric(df['total_gpu_energy'], errors='coerce')
131
  df['energy_score'] = pd.to_numeric(df['energy_score'], errors='coerce').astype(int)
132
  df['GPU Energy (Wh)'] = df['total_gpu_energy'].apply(lambda x: f"{x:.4f}")
 
139
  else:
140
  df = df[['Model', 'GPU Energy (Wh)', 'Score']]
141
 
142
+ # Sort by the numeric GPU energy value.
143
  df = df.sort_values(by='total_gpu_energy')
144
  return df
145
 
146
  def get_all_model_names():
147
  """
148
+ Combine data from all tasks and return a leaderboard DataFrame with:
149
  - Model, GPU Energy (Wh), Score.
150
  Duplicate models are dropped.
151
  """
152
  all_df = pd.DataFrame()
153
  for task in tasks:
154
+ df = read_csv_file(task)
155
  df['total_gpu_energy'] = pd.to_numeric(df['total_gpu_energy'], errors='coerce')
156
  df['energy_score'] = pd.to_numeric(df['energy_score'], errors='coerce').astype(int)
157
  df['GPU Energy (Wh)'] = df['total_gpu_energy'].apply(lambda x: f"{x:.4f}")