- Notifications
You must be signed in to change notification settings - Fork 5.9k
/
Copy pathpush_results.py
72 lines (54 loc) · 2.53 KB
/
push_results.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
importglob
importsys
importpandasaspd
fromhuggingface_hubimporthf_hub_download, upload_file
fromhuggingface_hub.utilsimportEntryNotFoundError
sys.path.append(".")
fromutilsimportBASE_PATH, FINAL_CSV_FILE, GITHUB_SHA, REPO_ID, collate_csv# noqa: E402
defhas_previous_benchmark() ->str:
csv_path=None
try:
csv_path=hf_hub_download(repo_id=REPO_ID, repo_type="dataset", filename=FINAL_CSV_FILE)
exceptEntryNotFoundError:
csv_path=None
returncsv_path
deffilter_float(value):
ifisinstance(value, str):
returnfloat(value.split()[0])
returnvalue
defpush_to_hf_dataset():
all_csvs=sorted(glob.glob(f"{BASE_PATH}/*.csv"))
collate_csv(all_csvs, FINAL_CSV_FILE)
# If there's an existing benchmark file, we should report the changes.
csv_path=has_previous_benchmark()
ifcsv_pathisnotNone:
current_results=pd.read_csv(FINAL_CSV_FILE)
previous_results=pd.read_csv(csv_path)
numeric_columns=current_results.select_dtypes(include=["float64", "int64"]).columns
numeric_columns= [
cforcinnumeric_columnsifcnotin ["batch_size", "num_inference_steps", "actual_gpu_memory (gbs)"]
]
forcolumninnumeric_columns:
previous_results[column] =previous_results[column].map(lambdax: filter_float(x))
# Calculate the percentage change
current_results[column] =current_results[column].astype(float)
previous_results[column] =previous_results[column].astype(float)
percent_change= ((current_results[column] -previous_results[column]) /previous_results[column]) *100
# Format the values with '+' or '-' sign and append to original values
current_results[column] =current_results[column].map(str) +percent_change.map(
lambdax: f" ({'+'ifx>0else''}{x:.2f}%)"
)
# There might be newly added rows. So, filter out the NaNs.
current_results[column] =current_results[column].map(lambdax: x.replace(" (nan%)", ""))
# Overwrite the current result file.
current_results.to_csv(FINAL_CSV_FILE, index=False)
commit_message=f"upload from sha: {GITHUB_SHA}"ifGITHUB_SHAisnotNoneelse"upload benchmark results"
upload_file(
repo_id=REPO_ID,
path_in_repo=FINAL_CSV_FILE,
path_or_fileobj=FINAL_CSV_FILE,
repo_type="dataset",
commit_message=commit_message,
)
if__name__=="__main__":
push_to_hf_dataset()