push_results.py 2.3 KB
Newer Older
1
import os
2
3
4

import pandas as pd
from huggingface_hub import hf_hub_download, upload_file
5
from huggingface_hub.utils import EntryNotFoundError
6
7


8
REPO_ID = "diffusers/benchmarks"
9
10
11


def has_previous_benchmark() -> str:
12
13
    from run_all import FINAL_CSV_FILENAME

14
15
    csv_path = None
    try:
16
        csv_path = hf_hub_download(repo_id=REPO_ID, repo_type="dataset", filename=FINAL_CSV_FILENAME)
17
18
19
20
21
22
23
24
25
26
27
28
    except EntryNotFoundError:
        csv_path = None
    return csv_path


def filter_float(value):
    if isinstance(value, str):
        return float(value.split()[0])
    return value


def push_to_hf_dataset():
29
    from run_all import FINAL_CSV_FILENAME, GITHUB_SHA
30
31
32

    csv_path = has_previous_benchmark()
    if csv_path is not None:
33
        current_results = pd.read_csv(FINAL_CSV_FILENAME)
34
35
36
37
38
        previous_results = pd.read_csv(csv_path)

        numeric_columns = current_results.select_dtypes(include=["float64", "int64"]).columns

        for column in numeric_columns:
39
40
41
42
43
            # get previous values as floats, aligned to current index
            prev_vals = previous_results[column].map(filter_float).reindex(current_results.index)

            # get current values as floats
            curr_vals = current_results[column].astype(float)
44

45
46
            # stringify the current values
            curr_str = curr_vals.map(str)
47

48
49
50
            # build an appendage only when prev exists and differs
            append_str = prev_vals.where(prev_vals.notnull() & (prev_vals != curr_vals), other=pd.NA).map(
                lambda x: f" ({x})" if pd.notnull(x) else ""
51
52
            )

53
54
55
56
            # combine
            current_results[column] = curr_str + append_str
        os.remove(FINAL_CSV_FILENAME)
        current_results.to_csv(FINAL_CSV_FILENAME, index=False)
57
58
59
60

    commit_message = f"upload from sha: {GITHUB_SHA}" if GITHUB_SHA is not None else "upload benchmark results"
    upload_file(
        repo_id=REPO_ID,
61
62
        path_in_repo=FINAL_CSV_FILENAME,
        path_or_fileobj=FINAL_CSV_FILENAME,
63
64
65
        repo_type="dataset",
        commit_message=commit_message,
    )
66
67
68
69
70
71
72
    upload_file(
        repo_id="diffusers/benchmark-analyzer",
        path_in_repo=FINAL_CSV_FILENAME,
        path_or_fileobj=FINAL_CSV_FILENAME,
        repo_type="space",
        commit_message=commit_message,
    )
73
74
75
76


if __name__ == "__main__":
    push_to_hf_dataset()