Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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
|
41 |
-
|
|
|
|
|
|
|
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 =
|
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
|
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
|
116 |
"""
|
117 |
-
df =
|
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 |
-
#
|
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
|
137 |
- Model, GPU Energy (Wh), Score.
|
138 |
Duplicate models are dropped.
|
139 |
"""
|
140 |
all_df = pd.DataFrame()
|
141 |
for task in tasks:
|
142 |
-
df =
|
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}")
|