mirror of
https://github.com/huggingface/diffusers.git
synced 2025-12-24 13:24:49 +08:00
* add poc for benchmarking workflow. * import * fix argument * fix: argument * fix: path * fix * fix * path * output csv files. * workflow cleanup * append token * add utility to push to hf dataset * fix: kw arg * better reporting * fix: headers * better formatting of the numbers. * better type annotation * fix: formatting * moentarily disable check * push results. * remove disable check * introduce base classes. * img2img class * add inpainting pipeline * intoduce base benchmark class. * add img2img and inpainting * feat: utility to compare changes * fix * fix import * add args * basepath * better exception handling * better path handling * fix * fix * remove * ifx * fix * add: support for controlnet. * image_url -> url * move images to huggingface hub * correct urls. * root_ckpt * flush before benchmarking * don't install accelerate from source * add runner * simplify Diffusers Benchmarking step * change runner * fix: subprocess call. * filter percentage values * fix controlnet benchmark * add t2i adapters. * fix filter columns * fix t2i adapter benchmark * fix init. * fix * remove safetensors flag * fix args print * fix * feat: run_command * add adapter resolution mapping * benchmark t2i adapter fix. * fix adapter input * fix * convert to L. * add flush() add appropriate places * better filtering * okay * get env for torch * convert to float * fix * filter out nans. * better coment * sdxl * sdxl for other benchmarks. * fix: condition * fix: condition for inpainting * fix: mapping for resolution * fix * include kandinsky and wuerstchen * fix: Wuerstchen * Empty-Commit * [Community] AnimateDiff + Controlnet Pipeline (#5928) * begin work on animatediff + controlnet pipeline * complete todos, uncomment multicontrolnet, input checks Co-Authored-By: EdoardoBotta <botta.edoardo@gmail.com> * update Co-Authored-By: EdoardoBotta <botta.edoardo@gmail.com> * add example * update community README * Update examples/community/README.md --------- Co-authored-by: EdoardoBotta <botta.edoardo@gmail.com> Co-authored-by: Patrick von Platen <patrick.v.platen@gmail.com> * EulerDiscreteScheduler add `rescale_betas_zero_snr` (#6024) * EulerDiscreteScheduler add `rescale_betas_zero_snr` * Revert "[Community] AnimateDiff + Controlnet Pipeline (#5928)" This reverts commit821726d7c0. * Revert "EulerDiscreteScheduler add `rescale_betas_zero_snr` (#6024)" This reverts commit3dc2362b5a. * add SDXL turbo * add lcm lora to the mix as well. * fix * increase steps to 2 when running turbo i2i * debug * debug * debug * fix for good * fix and isolate better * fuse lora so that torch compile works with peft * fix: LCMLoRA * better identification for LCM * change to cron job --------- Co-authored-by: Patrick von Platen <patrick.v.platen@gmail.com> Co-authored-by: Dhruv Nair <dhruv.nair@gmail.com> Co-authored-by: Aryan V S <contact.aryanvs@gmail.com> Co-authored-by: EdoardoBotta <botta.edoardo@gmail.com> Co-authored-by: Beinsezii <39478211+Beinsezii@users.noreply.github.com>
73 lines
2.5 KiB
Python
73 lines
2.5 KiB
Python
import glob
|
|
import sys
|
|
|
|
import pandas as pd
|
|
from huggingface_hub import hf_hub_download, upload_file
|
|
from huggingface_hub.utils._errors import EntryNotFoundError
|
|
|
|
|
|
sys.path.append(".")
|
|
from utils import BASE_PATH, FINAL_CSV_FILE, GITHUB_SHA, REPO_ID, collate_csv # noqa: E402
|
|
|
|
|
|
def has_previous_benchmark() -> str:
|
|
csv_path = None
|
|
try:
|
|
csv_path = hf_hub_download(repo_id=REPO_ID, repo_type="dataset", filename=FINAL_CSV_FILE)
|
|
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():
|
|
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()
|
|
if csv_path is not None:
|
|
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 = [
|
|
c for c in numeric_columns if c not in ["batch_size", "num_inference_steps", "actual_gpu_memory (gbs)"]
|
|
]
|
|
|
|
for column in numeric_columns:
|
|
previous_results[column] = previous_results[column].map(lambda x: 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(
|
|
lambda x: f" ({'+' if x > 0 else ''}{x:.2f}%)"
|
|
)
|
|
# There might be newly added rows. So, filter out the NaNs.
|
|
current_results[column] = current_results[column].map(lambda x: 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}" if GITHUB_SHA is not None else "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()
|