mirror of
https://github.com/huggingface/diffusers.git
synced 2025-12-10 14:34:55 +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>
98 lines
2.9 KiB
Python
98 lines
2.9 KiB
Python
import glob
|
|
import subprocess
|
|
import sys
|
|
from typing import List
|
|
|
|
|
|
sys.path.append(".")
|
|
from benchmark_text_to_image import ALL_T2I_CKPTS # noqa: E402
|
|
|
|
|
|
PATTERN = "benchmark_*.py"
|
|
|
|
|
|
class SubprocessCallException(Exception):
|
|
pass
|
|
|
|
|
|
# Taken from `test_examples_utils.py`
|
|
def run_command(command: List[str], return_stdout=False):
|
|
"""
|
|
Runs `command` with `subprocess.check_output` and will potentially return the `stdout`. Will also properly capture
|
|
if an error occurred while running `command`
|
|
"""
|
|
try:
|
|
output = subprocess.check_output(command, stderr=subprocess.STDOUT)
|
|
if return_stdout:
|
|
if hasattr(output, "decode"):
|
|
output = output.decode("utf-8")
|
|
return output
|
|
except subprocess.CalledProcessError as e:
|
|
raise SubprocessCallException(
|
|
f"Command `{' '.join(command)}` failed with the following error:\n\n{e.output.decode()}"
|
|
) from e
|
|
|
|
|
|
def main():
|
|
python_files = glob.glob(PATTERN)
|
|
|
|
for file in python_files:
|
|
print(f"****** Running file: {file} ******")
|
|
|
|
# Run with canonical settings.
|
|
if file != "benchmark_text_to_image.py":
|
|
command = f"python {file}"
|
|
run_command(command.split())
|
|
|
|
command += " --run_compile"
|
|
run_command(command.split())
|
|
|
|
# Run variants.
|
|
for file in python_files:
|
|
if file == "benchmark_text_to_image.py":
|
|
for ckpt in ALL_T2I_CKPTS:
|
|
command = f"python {file} --ckpt {ckpt}"
|
|
|
|
if "turbo" in ckpt:
|
|
command += " --num_inference_steps 1"
|
|
|
|
run_command(command.split())
|
|
|
|
command += " --run_compile"
|
|
run_command(command.split())
|
|
|
|
elif file == "benchmark_sd_img.py":
|
|
for ckpt in ["stabilityai/stable-diffusion-xl-refiner-1.0", "stabilityai/sdxl-turbo"]:
|
|
command = f"python {file} --ckpt {ckpt}"
|
|
|
|
if ckpt == "stabilityai/sdxl-turbo":
|
|
command += " --num_inference_steps 2"
|
|
|
|
run_command(command.split())
|
|
command += " --run_compile"
|
|
run_command(command.split())
|
|
|
|
elif file == "benchmark_sd_inpainting.py":
|
|
sdxl_ckpt = "stabilityai/stable-diffusion-xl-base-1.0"
|
|
command = f"python {file} --ckpt {sdxl_ckpt}"
|
|
run_command(command.split())
|
|
|
|
command += " --run_compile"
|
|
run_command(command.split())
|
|
|
|
elif file in ["benchmark_controlnet.py", "benchmark_t2i_adapter.py"]:
|
|
sdxl_ckpt = (
|
|
"diffusers/controlnet-canny-sdxl-1.0"
|
|
if "controlnet" in file
|
|
else "TencentARC/t2i-adapter-canny-sdxl-1.0"
|
|
)
|
|
command = f"python {file} --ckpt {sdxl_ckpt}"
|
|
run_command(command.split())
|
|
|
|
command += " --run_compile"
|
|
run_command(command.split())
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|