From 73931f19f770affd7c9a867c6b1b4019cc2c0c9a Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Fri, 7 Jun 2024 14:06:50 +0200 Subject: [PATCH 01/38] first commit --- text_to_image/stable_diffusion_xl_1.0/run.py | 64 +++++++++++++++++++ text_to_image/stable_diffusion_xl_1.0/run1.py | 12 ++++ 2 files changed, 76 insertions(+) create mode 100644 text_to_image/stable_diffusion_xl_1.0/run.py create mode 100644 text_to_image/stable_diffusion_xl_1.0/run1.py diff --git a/text_to_image/stable_diffusion_xl_1.0/run.py b/text_to_image/stable_diffusion_xl_1.0/run.py new file mode 100644 index 00000000..1e90537f --- /dev/null +++ b/text_to_image/stable_diffusion_xl_1.0/run.py @@ -0,0 +1,64 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright (c) 2024, Ampere Computing LLC +try: + from utils import misc # noqa +except ModuleNotFoundError: + import os + import sys + filename = "set_env_variables.sh" + directory = os.path.realpath(__file__).split("/")[:-1] + for idx in range(1, len(directory) - 1): + subdir = "/".join(directory[:-idx]) + if filename in os.listdir(subdir): + print(f"\nPlease run \033[91m'source {os.path.join(subdir, filename)}'\033[0m first.") + break + else: + print(f"\n\033[91mFAIL: Couldn't find {filename}, are you running this script as part of Ampere Model Library?" + f"\033[0m") + sys.exit(1) + +TORCH_JIT_TRACE = False # otherwise, run torch.compile() + + +def run_pytorch_fp32(model_name, batch_size, num_runs, timeout, **kwargs): + from utils.benchmark import run_model + from utils.misc import print_warning_message + from utils.pytorch import PyTorchRunnerV2, apply_compile, apply_jit_trace_module + from utils.speech_recognition.libri_speech_v2 import LibriSpeech + from transformers import WhisperProcessor, WhisperForConditionalGeneration + processor = WhisperProcessor.from_pretrained(model_name) + model = WhisperForConditionalGeneration.from_pretrained(model_name, torchscript=TORCH_JIT_TRACE) + model.eval() + librispeech = LibriSpeech() + if TORCH_JIT_TRACE: + waveform = [librispeech.get_input_array() for _ in range(batch_size)] + input_features = processor( + waveform, sampling_rate=LibriSpeech.sampling_rate, return_tensors="pt").input_features + model = apply_jit_trace_module(model, {"generate": input_features}) + librispeech = LibriSpeech() # reset + model = model.generate + else: + model.forward = apply_compile(model.forward) + model.model.encoder = apply_compile(model.model.encoder) + + def single_pass_pytorch(_runner, _librispeech): + waveform = [_librispeech.get_input_array() for _ in range(batch_size)] + input_features = processor( + waveform, sampling_rate=LibriSpeech.sampling_rate, return_tensors="pt").input_features + predicted_ids = _runner.run(sum([x.shape[0] for x in waveform]), input_features) + decoded_output = processor.batch_decode(predicted_ids, skip_special_tokens=True) + for i in range(batch_size): + _librispeech.submit_transcription(decoded_output[i].lstrip().replace(",", "").replace(".", "").upper()) + + runner = PyTorchRunnerV2(model.generate, throughput_only=True) + print_warning_message("Sampling rate Whisper operates at is 16,000 Hz, therefore throughput values below can be " + "divided by 16,000 to derive 'seconds of processed audio per second'") + return run_model(single_pass_pytorch, runner, librispeech, batch_size, num_runs, timeout) + + +if __name__ == "__main__": + from utils.helpers import DefaultArgParser + parser = DefaultArgParser(["pytorch"]) + parser.require_model_name(whisper_variants) + parser.ask_for_batch_size(1) + run_pytorch_fp32(**vars(parser.parse())) diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py new file mode 100644 index 00000000..43d6ce97 --- /dev/null +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -0,0 +1,12 @@ +from diffusers import DiffusionPipeline +import torch + +pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16, use_safetensors=True, variant="fp16") +pipe.to("cuda") + +# if using torch < 2.0 +# pipe.enable_xformers_memory_efficient_attention() + +prompt = "An astronaut riding a green horse" + +images = pipe(prompt=prompt).images[0] \ No newline at end of file From 4f5dd6e3a1f9a161e112e1dec97be7e94f6d94a3 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Mon, 10 Jun 2024 15:42:36 +0200 Subject: [PATCH 02/38] wip --- text_to_image/stable_diffusion_xl_1.0/run1.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py index 43d6ce97..eb51d718 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run1.py +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -1,12 +1,15 @@ from diffusers import DiffusionPipeline import torch +torch.set_num_threads(128) + pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16, use_safetensors=True, variant="fp16") -pipe.to("cuda") +pipe.to("cpu") # if using torch < 2.0 # pipe.enable_xformers_memory_efficient_attention() prompt = "An astronaut riding a green horse" -images = pipe(prompt=prompt).images[0] \ No newline at end of file +with torch.no_grad(): + images = pipe(prompt=prompt).images[0] From 22fab555e15edaf46ec3bb55c52afb5716fa9113 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Mon, 10 Jun 2024 19:31:42 +0200 Subject: [PATCH 03/38] wip --- text_to_image/stable_diffusion_xl_1.0/run1.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py index eb51d718..2c53fef8 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run1.py +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -1,15 +1,28 @@ from diffusers import DiffusionPipeline import torch +from utils.pytorch import apply_jit_trace + torch.set_num_threads(128) -pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16, use_safetensors=True, variant="fp16") +pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", + torch_dtype=torch.float16, + use_safetensors=True, + variant="fp16") + pipe.to("cpu") +pipe.eval() + +example_input = torch.randn(1, 3, 512, 512) +# traced_model = torch.jit.trace(pipe, example_input) + +# frozen_model = torch.jit.freeze(traced_model) +model = apply_jit_trace(pipe, example_input) # if using torch < 2.0 # pipe.enable_xformers_memory_efficient_attention() prompt = "An astronaut riding a green horse" with torch.no_grad(): - images = pipe(prompt=prompt).images[0] + images = model(prompt=prompt).images[0] From ee2779adb555386a68988efa73c498c1cb04bcf0 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Mon, 10 Jun 2024 19:35:46 +0200 Subject: [PATCH 04/38] wip --- text_to_image/stable_diffusion_xl_1.0/run1.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py index 2c53fef8..d19e8ca6 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run1.py +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -1,11 +1,11 @@ -from diffusers import DiffusionPipeline +from diffusers import DiffusionPipeline, StableDiffusionPipeline import torch from utils.pytorch import apply_jit_trace torch.set_num_threads(128) -pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", +pipe = StableDiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16, use_safetensors=True, variant="fp16") From 516be169953a84ba0861474a9e4f056244f262d5 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Mon, 10 Jun 2024 19:45:30 +0200 Subject: [PATCH 05/38] wip --- text_to_image/stable_diffusion_xl_1.0/run1.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py index d19e8ca6..c7ade899 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run1.py +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -5,20 +5,21 @@ torch.set_num_threads(128) -pipe = StableDiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", +pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16, use_safetensors=True, variant="fp16") pipe.to("cpu") -pipe.eval() +unet = pipe.unet +unet.eval() example_input = torch.randn(1, 3, 512, 512) # traced_model = torch.jit.trace(pipe, example_input) # frozen_model = torch.jit.freeze(traced_model) -model = apply_jit_trace(pipe, example_input) +model = apply_jit_trace(unet, example_input) # if using torch < 2.0 # pipe.enable_xformers_memory_efficient_attention() From d4d63f13665eb5588e8e5a4ff024a19c5856da3a Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Wed, 12 Jun 2024 16:01:13 +0200 Subject: [PATCH 06/38] wip --- text_to_image/stable_diffusion_xl_1.0/run1.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py index c7ade899..535b4c47 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run1.py +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -11,15 +11,15 @@ variant="fp16") pipe.to("cpu") -unet = pipe.unet -unet.eval() + +pipe.eval() example_input = torch.randn(1, 3, 512, 512) # traced_model = torch.jit.trace(pipe, example_input) # frozen_model = torch.jit.freeze(traced_model) -model = apply_jit_trace(unet, example_input) +model = apply_jit_trace(pipe, example_input) # if using torch < 2.0 # pipe.enable_xformers_memory_efficient_attention() From a448e6e7d8b504ac5b31ff59c41a83283f8a71d8 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Thu, 13 Jun 2024 15:44:50 +0200 Subject: [PATCH 07/38] wip --- text_to_image/stable_diffusion_xl_1.0/run1.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py index 535b4c47..1d189a41 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run1.py +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -1,7 +1,7 @@ from diffusers import DiffusionPipeline, StableDiffusionPipeline import torch - -from utils.pytorch import apply_jit_trace +from utils.pytorch import PyTorchRunnerV2, apply_compile +import os torch.set_num_threads(128) @@ -19,7 +19,8 @@ # frozen_model = torch.jit.freeze(traced_model) -model = apply_jit_trace(pipe, example_input) +aio_available = '_aio_profiler_print' in dir(torch._C) and os.environ.get("AIO_PROCESS_MODE") != "0" +pipe = apply_compile(pipe, aio_available) # if using torch < 2.0 # pipe.enable_xformers_memory_efficient_attention() From 0f5e469bfcef0ae020125f8a272ba2710ace80b8 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Thu, 13 Jun 2024 16:32:14 +0200 Subject: [PATCH 08/38] wip --- text_to_image/stable_diffusion_xl_1.0/run1.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py index 1d189a41..51715ab4 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run1.py +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -11,9 +11,6 @@ variant="fp16") pipe.to("cpu") - -pipe.eval() - example_input = torch.randn(1, 3, 512, 512) # traced_model = torch.jit.trace(pipe, example_input) From 35944e6c3a48548a6aa802e5ab02e7f8247ff8c6 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Thu, 13 Jun 2024 16:35:06 +0200 Subject: [PATCH 09/38] wip --- text_to_image/stable_diffusion_xl_1.0/run1.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py index 51715ab4..02c213d3 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run1.py +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -17,7 +17,7 @@ # frozen_model = torch.jit.freeze(traced_model) aio_available = '_aio_profiler_print' in dir(torch._C) and os.environ.get("AIO_PROCESS_MODE") != "0" -pipe = apply_compile(pipe, aio_available) +pipe = apply_compile(pipe) # if using torch < 2.0 # pipe.enable_xformers_memory_efficient_attention() From b4dcce524d431a08bd36a55be8bfdd3685873464 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Thu, 13 Jun 2024 17:25:40 +0200 Subject: [PATCH 10/38] wip --- text_to_image/stable_diffusion_xl_1.0/run1.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py index 02c213d3..7df40a07 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run1.py +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -5,7 +5,7 @@ torch.set_num_threads(128) -pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", +pipe = StableDiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16, use_safetensors=True, variant="fp16") From c67203ea61aebde65a521ee7fb6f73185022a7dc Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Thu, 13 Jun 2024 17:27:47 +0200 Subject: [PATCH 11/38] wip --- text_to_image/stable_diffusion_xl_1.0/run1.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py index 7df40a07..d93295f9 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run1.py +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -1,11 +1,11 @@ -from diffusers import DiffusionPipeline, StableDiffusionPipeline +from diffusers import DiffusionPipeline, StableDiffusionPipeline, StableDiffusionXLPipeline import torch from utils.pytorch import PyTorchRunnerV2, apply_compile import os torch.set_num_threads(128) -pipe = StableDiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", +pipe = StableDiffusionXLPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16, use_safetensors=True, variant="fp16") From 32fe752c055f49f2df0b4d408d342f854dea85d0 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Mon, 17 Jun 2024 13:14:09 +0200 Subject: [PATCH 12/38] wip --- text_to_image/stable_diffusion_xl_1.0/run1.py | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py index d93295f9..9926f121 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run1.py +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -5,19 +5,10 @@ torch.set_num_threads(128) -pipe = StableDiffusionXLPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", - torch_dtype=torch.float16, - use_safetensors=True, - variant="fp16") +model = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0") -pipe.to("cpu") -example_input = torch.randn(1, 3, 512, 512) -# traced_model = torch.jit.trace(pipe, example_input) - -# frozen_model = torch.jit.freeze(traced_model) - -aio_available = '_aio_profiler_print' in dir(torch._C) and os.environ.get("AIO_PROCESS_MODE") != "0" -pipe = apply_compile(pipe) +model.to("cpu") +model = apply_compile(model) # if using torch < 2.0 # pipe.enable_xformers_memory_efficient_attention() From 83197c2661434574b10de99f4a04a344e9af971d Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Mon, 17 Jun 2024 15:06:53 +0200 Subject: [PATCH 13/38] wip --- text_to_image/stable_diffusion_xl_1.0/run1.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py index 9926f121..bae505c2 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run1.py +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -5,10 +5,10 @@ torch.set_num_threads(128) -model = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0") +model = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", use_safetensors=True) model.to("cpu") -model = apply_compile(model) +model.unet = apply_compile(model.unet) # if using torch < 2.0 # pipe.enable_xformers_memory_efficient_attention() From 60bdb2db7a4879a8e110862322f4005fb62d61a3 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Thu, 20 Jun 2024 13:33:07 +0200 Subject: [PATCH 14/38] add sapphire rapid version --- text_to_image/stable_diffusion_xl_1.0/run.py | 69 +++---------------- text_to_image/stable_diffusion_xl_1.0/run1.py | 3 +- 2 files changed, 10 insertions(+), 62 deletions(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run.py b/text_to_image/stable_diffusion_xl_1.0/run.py index 1e90537f..9f97e4db 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run.py +++ b/text_to_image/stable_diffusion_xl_1.0/run.py @@ -1,64 +1,13 @@ -# SPDX-License-Identifier: Apache-2.0 -# Copyright (c) 2024, Ampere Computing LLC -try: - from utils import misc # noqa -except ModuleNotFoundError: - import os - import sys - filename = "set_env_variables.sh" - directory = os.path.realpath(__file__).split("/")[:-1] - for idx in range(1, len(directory) - 1): - subdir = "/".join(directory[:-idx]) - if filename in os.listdir(subdir): - print(f"\nPlease run \033[91m'source {os.path.join(subdir, filename)}'\033[0m first.") - break - else: - print(f"\n\033[91mFAIL: Couldn't find {filename}, are you running this script as part of Ampere Model Library?" - f"\033[0m") - sys.exit(1) +from diffusers import DiffusionPipeline +import torch +from utils.pytorch import apply_compile -TORCH_JIT_TRACE = False # otherwise, run torch.compile() +torch.set_num_threads(128) +model = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", use_safetensors=True) +model.to("cpu") -def run_pytorch_fp32(model_name, batch_size, num_runs, timeout, **kwargs): - from utils.benchmark import run_model - from utils.misc import print_warning_message - from utils.pytorch import PyTorchRunnerV2, apply_compile, apply_jit_trace_module - from utils.speech_recognition.libri_speech_v2 import LibriSpeech - from transformers import WhisperProcessor, WhisperForConditionalGeneration - processor = WhisperProcessor.from_pretrained(model_name) - model = WhisperForConditionalGeneration.from_pretrained(model_name, torchscript=TORCH_JIT_TRACE) - model.eval() - librispeech = LibriSpeech() - if TORCH_JIT_TRACE: - waveform = [librispeech.get_input_array() for _ in range(batch_size)] - input_features = processor( - waveform, sampling_rate=LibriSpeech.sampling_rate, return_tensors="pt").input_features - model = apply_jit_trace_module(model, {"generate": input_features}) - librispeech = LibriSpeech() # reset - model = model.generate - else: - model.forward = apply_compile(model.forward) - model.model.encoder = apply_compile(model.model.encoder) +prompt = "An astronaut riding a green horse" - def single_pass_pytorch(_runner, _librispeech): - waveform = [_librispeech.get_input_array() for _ in range(batch_size)] - input_features = processor( - waveform, sampling_rate=LibriSpeech.sampling_rate, return_tensors="pt").input_features - predicted_ids = _runner.run(sum([x.shape[0] for x in waveform]), input_features) - decoded_output = processor.batch_decode(predicted_ids, skip_special_tokens=True) - for i in range(batch_size): - _librispeech.submit_transcription(decoded_output[i].lstrip().replace(",", "").replace(".", "").upper()) - - runner = PyTorchRunnerV2(model.generate, throughput_only=True) - print_warning_message("Sampling rate Whisper operates at is 16,000 Hz, therefore throughput values below can be " - "divided by 16,000 to derive 'seconds of processed audio per second'") - return run_model(single_pass_pytorch, runner, librispeech, batch_size, num_runs, timeout) - - -if __name__ == "__main__": - from utils.helpers import DefaultArgParser - parser = DefaultArgParser(["pytorch"]) - parser.require_model_name(whisper_variants) - parser.ask_for_batch_size(1) - run_pytorch_fp32(**vars(parser.parse())) +with torch.no_grad(): + images = model(prompt=prompt).images[0] diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py index bae505c2..6bc6e31b 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run1.py +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -1,7 +1,6 @@ from diffusers import DiffusionPipeline, StableDiffusionPipeline, StableDiffusionXLPipeline import torch -from utils.pytorch import PyTorchRunnerV2, apply_compile -import os +from utils.pytorch import apply_compile torch.set_num_threads(128) From bc1d48fc59c51f296d3c31d9f3d7a23df032a8ec Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Tue, 25 Jun 2024 14:00:15 +0200 Subject: [PATCH 15/38] wip --- text_to_image/stable_diffusion_xl_1.0/run.py | 11 +++-- text_to_image/stable_diffusion_xl_1.0/run1.py | 47 ++++++++++++++----- 2 files changed, 44 insertions(+), 14 deletions(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run.py b/text_to_image/stable_diffusion_xl_1.0/run.py index 9f97e4db..d16952d9 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run.py +++ b/text_to_image/stable_diffusion_xl_1.0/run.py @@ -1,13 +1,18 @@ -from diffusers import DiffusionPipeline +from diffusers import DiffusionPipeline, StableDiffusionPipeline, StableDiffusionXLPipeline import torch -from utils.pytorch import apply_compile +from utils.pytorch import PyTorchRunnerV2, apply_compile +import os torch.set_num_threads(128) model = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", use_safetensors=True) + model.to("cpu") +model.unet = apply_compile(model.unet) +# if using torch < 2.0 +# pipe.enable_xformers_memory_efficient_attention() prompt = "An astronaut riding a green horse" with torch.no_grad(): - images = model(prompt=prompt).images[0] + images = model(prompt=prompt).images[0] \ No newline at end of file diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py index 6bc6e31b..de072855 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run1.py +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -1,17 +1,42 @@ -from diffusers import DiffusionPipeline, StableDiffusionPipeline, StableDiffusionXLPipeline -import torch from utils.pytorch import apply_compile -torch.set_num_threads(128) +try: + from utils import misc # noqa +except ModuleNotFoundError: + import os + import sys + filename = "set_env_variables.sh" + directory = os.path.realpath(__file__).split("/")[:-1] + for idx in range(1, len(directory) - 1): + subdir = "/".join(directory[:-idx]) + if filename in os.listdir(subdir): + print(f"\nPlease run \033[91m'source {os.path.join(subdir, filename)}'\033[0m first.") + break + else: + print(f"\n\033[91mFAIL: Couldn't find {filename}, are you running this script as part of Ampere Model Library?" + f"\033[0m") + sys.exit(1) -model = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", use_safetensors=True) -model.to("cpu") -model.unet = apply_compile(model.unet) -# if using torch < 2.0 -# pipe.enable_xformers_memory_efficient_attention() +def run_pytorch_fp32(model, steps, batch_size, num_runs, timeout, **kwargs): + from utils.benchmark import run_model + from diffusers import DiffusionPipeline + from utils.pytorch import PyTorchRunnerV2 + from utils.text_to_image.stable_diffusion import StableDiffusion -prompt = "An astronaut riding a green horse" + model = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", + use_safetensors=True).to("cpu") + model.unet = apply_compile(model.unet) -with torch.no_grad(): - images = model(prompt=prompt).images[0] + def single_pass_pytorch(_runner, _stablediffusion): + prompt = _stablediffusion.get_input() + x_samples = _runner.run(batch_size * steps, prompt=prompt) + + runner = PyTorchRunnerV2(model) + stablediffusion = StableDiffusion() + return run_model(single_pass_pytorch, runner, stablediffusion, batch_size, num_runs, timeout) + + +if __name__ == "__main__": + from utils.helpers import DefaultArgParser + parser = DefaultArgParser(["pytorch"]) \ No newline at end of file From c24959f19a796356f78121cc48606d0e9310f2b3 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Tue, 25 Jun 2024 14:31:58 +0200 Subject: [PATCH 16/38] wip --- text_to_image/stable_diffusion_xl_1.0/run.py | 57 ++++++++++++++----- text_to_image/stable_diffusion_xl_1.0/run1.py | 49 +++++----------- 2 files changed, 57 insertions(+), 49 deletions(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run.py b/text_to_image/stable_diffusion_xl_1.0/run.py index d16952d9..d38b5694 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run.py +++ b/text_to_image/stable_diffusion_xl_1.0/run.py @@ -1,18 +1,49 @@ -from diffusers import DiffusionPipeline, StableDiffusionPipeline, StableDiffusionXLPipeline -import torch -from utils.pytorch import PyTorchRunnerV2, apply_compile -import os +try: + from utils import misc # noqa +except ModuleNotFoundError: + import os + import sys + filename = "set_env_variables.sh" + directory = os.path.realpath(__file__).split("/")[:-1] + for idx in range(1, len(directory) - 1): + subdir = "/".join(directory[:-idx]) + if filename in os.listdir(subdir): + print(f"\nPlease run \033[91m'source {os.path.join(subdir, filename)}'\033[0m first.") + break + else: + print(f"\n\033[91mFAIL: Couldn't find {filename}, are you running this script as part of Ampere Model Library?" + f"\033[0m") + sys.exit(1) -torch.set_num_threads(128) -model = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", use_safetensors=True) +def run_pytorch_fp32(model, steps, batch_size, num_runs, timeout, **kwargs): + from diffusers import DiffusionPipeline -model.to("cpu") -model.unet = apply_compile(model.unet) -# if using torch < 2.0 -# pipe.enable_xformers_memory_efficient_attention() + from utils.benchmark import run_model + from utils.pytorch import apply_compile + from utils.pytorch import PyTorchRunnerV2 + from utils.text_to_image.stable_diffusion import StableDiffusion -prompt = "An astronaut riding a green horse" + model = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", + use_safetensors=True).to("cpu") + model.unet = apply_compile(model.unet) -with torch.no_grad(): - images = model(prompt=prompt).images[0] \ No newline at end of file + def single_pass_pytorch(_runner, _stablediffusion): + prompt = _stablediffusion.get_input() + x_samples = _runner.run(batch_size * steps, prompt=prompt) + + runner = PyTorchRunnerV2(model) + stablediffusion = StableDiffusion() + return run_model(single_pass_pytorch, runner, stablediffusion, batch_size, num_runs, timeout) + + +if __name__ == "__main__": + from utils.helpers import DefaultArgParser + + stablediffusion_variants = ["stabilityai/stable-diffusion-xl-base-1.0"] + parser = DefaultArgParser(["pytorch"]) + parser.require_model_name(stablediffusion_variants) + parser.ask_for_batch_size() + parser.add_argument("--steps", type=int, default=25, help="steps through which the model processes the input") + + run_pytorch_fp32(**vars(parser.parse())) diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py index de072855..df108c70 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run1.py +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -1,42 +1,19 @@ -from utils.pytorch import apply_compile +from diffusers import DiffusionPipeline, StableDiffusionPipeline, StableDiffusionXLPipeline +import torch +from utils.pytorch import PyTorchRunnerV2, apply_compile +import os -try: - from utils import misc # noqa -except ModuleNotFoundError: - import os - import sys - filename = "set_env_variables.sh" - directory = os.path.realpath(__file__).split("/")[:-1] - for idx in range(1, len(directory) - 1): - subdir = "/".join(directory[:-idx]) - if filename in os.listdir(subdir): - print(f"\nPlease run \033[91m'source {os.path.join(subdir, filename)}'\033[0m first.") - break - else: - print(f"\n\033[91mFAIL: Couldn't find {filename}, are you running this script as part of Ampere Model Library?" - f"\033[0m") - sys.exit(1) +torch.set_num_threads(128) +model = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", use_safetensors=True) -def run_pytorch_fp32(model, steps, batch_size, num_runs, timeout, **kwargs): - from utils.benchmark import run_model - from diffusers import DiffusionPipeline - from utils.pytorch import PyTorchRunnerV2 - from utils.text_to_image.stable_diffusion import StableDiffusion +model.to("cpu") +model.unet = apply_compile(model.unet) +# if using torch < 2.0 +# pipe.enable_xformers_memory_efficient_attention() - model = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", - use_safetensors=True).to("cpu") - model.unet = apply_compile(model.unet) +prompt = "An astronaut riding a green horse" - def single_pass_pytorch(_runner, _stablediffusion): - prompt = _stablediffusion.get_input() - x_samples = _runner.run(batch_size * steps, prompt=prompt) +with torch.no_grad(): + images = model(prompt=prompt).images[0] - runner = PyTorchRunnerV2(model) - stablediffusion = StableDiffusion() - return run_model(single_pass_pytorch, runner, stablediffusion, batch_size, num_runs, timeout) - - -if __name__ == "__main__": - from utils.helpers import DefaultArgParser - parser = DefaultArgParser(["pytorch"]) \ No newline at end of file From cf2e2ce8943f89c5729ab04186924ab9df6e0e06 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Tue, 25 Jun 2024 14:33:52 +0200 Subject: [PATCH 17/38] wip --- text_to_image/stable_diffusion_xl_1.0/run.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run.py b/text_to_image/stable_diffusion_xl_1.0/run.py index d38b5694..edcd31d2 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run.py +++ b/text_to_image/stable_diffusion_xl_1.0/run.py @@ -24,8 +24,7 @@ def run_pytorch_fp32(model, steps, batch_size, num_runs, timeout, **kwargs): from utils.pytorch import PyTorchRunnerV2 from utils.text_to_image.stable_diffusion import StableDiffusion - model = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", - use_safetensors=True).to("cpu") + model = DiffusionPipeline.from_pretrained(model, use_safetensors=True).to("cpu") model.unet = apply_compile(model.unet) def single_pass_pytorch(_runner, _stablediffusion): From d6953cfca750da345db3e3edef209c87d1e57f37 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Tue, 25 Jun 2024 14:39:46 +0200 Subject: [PATCH 18/38] wip --- text_to_image/stable_diffusion_xl_1.0/run.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run.py b/text_to_image/stable_diffusion_xl_1.0/run.py index edcd31d2..28abc652 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run.py +++ b/text_to_image/stable_diffusion_xl_1.0/run.py @@ -16,7 +16,7 @@ sys.exit(1) -def run_pytorch_fp32(model, steps, batch_size, num_runs, timeout, **kwargs): +def run_pytorch_fp32(model_name, steps, batch_size, num_runs, timeout, **kwargs): from diffusers import DiffusionPipeline from utils.benchmark import run_model @@ -24,7 +24,7 @@ def run_pytorch_fp32(model, steps, batch_size, num_runs, timeout, **kwargs): from utils.pytorch import PyTorchRunnerV2 from utils.text_to_image.stable_diffusion import StableDiffusion - model = DiffusionPipeline.from_pretrained(model, use_safetensors=True).to("cpu") + model = DiffusionPipeline.from_pretrained(model_name, use_safetensors=True).to("cpu") model.unet = apply_compile(model.unet) def single_pass_pytorch(_runner, _stablediffusion): From 731c565e26e7f7b3aca7281bce929f6a1fb752f5 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Tue, 25 Jun 2024 15:40:04 +0200 Subject: [PATCH 19/38] wip --- text_to_image/stable_diffusion_xl_1.0/run1.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py index df108c70..1ebe33c8 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run1.py +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -11,9 +11,19 @@ model.unet = apply_compile(model.unet) # if using torch < 2.0 # pipe.enable_xformers_memory_efficient_attention() - +n_steps = 40 prompt = "An astronaut riding a green horse" -with torch.no_grad(): - images = model(prompt=prompt).images[0] +#with torch.no_grad(): +# images = model(prompt=prompt).images[0] + + +image = model( + prompt=prompt, + num_inference_steps=n_steps, + denoising_end=0.8, + output_type="latent", +).images + +print(type(image)) From d261f4bf76121bafa50cbfef891e5a63588fc289 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Tue, 25 Jun 2024 15:53:28 +0200 Subject: [PATCH 20/38] wip --- text_to_image/stable_diffusion_xl_1.0/run1.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py index 1ebe33c8..9b62e7a9 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run1.py +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -14,16 +14,16 @@ n_steps = 40 prompt = "An astronaut riding a green horse" -#with torch.no_grad(): -# images = model(prompt=prompt).images[0] +with torch.no_grad(): + images = model(prompt=prompt, num_inference_steps=n_steps).images[0] -image = model( - prompt=prompt, - num_inference_steps=n_steps, - denoising_end=0.8, - output_type="latent", -).images +# image = model( +# prompt=prompt, +# num_inference_steps=n_steps, +# denoising_end=0.8, +# output_type="latent", +# ).images print(type(image)) From 62ae9ba3f70a4c0a73074e760326cd90fd8e4467 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Tue, 25 Jun 2024 16:15:55 +0200 Subject: [PATCH 21/38] wip --- text_to_image/stable_diffusion_xl_1.0/run.py | 3 ++- text_to_image/stable_diffusion_xl_1.0/run1.py | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run.py b/text_to_image/stable_diffusion_xl_1.0/run.py index 28abc652..9e60e6f8 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run.py +++ b/text_to_image/stable_diffusion_xl_1.0/run.py @@ -29,7 +29,8 @@ def run_pytorch_fp32(model_name, steps, batch_size, num_runs, timeout, **kwargs) def single_pass_pytorch(_runner, _stablediffusion): prompt = _stablediffusion.get_input() - x_samples = _runner.run(batch_size * steps, prompt=prompt) + x_samples = _runner.run(batch_size * steps, prompt=prompt, num_inference_steps=steps) + _stablediffusion.submit_count(batch_size, x_samples) runner = PyTorchRunnerV2(model) stablediffusion = StableDiffusion() diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py index 9b62e7a9..4b75aaf6 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run1.py +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -13,9 +13,10 @@ # pipe.enable_xformers_memory_efficient_attention() n_steps = 40 prompt = "An astronaut riding a green horse" +prompts = ["An astronaut riding a green horse", "a cowboy eating a burger"] with torch.no_grad(): - images = model(prompt=prompt, num_inference_steps=n_steps).images[0] + images = model(prompt=prompts, num_inference_steps=n_steps).images # image = model( @@ -25,5 +26,5 @@ # output_type="latent", # ).images -print(type(image)) +# print(type(image)) From 46cad0c587bfc597c635f94e2ecc2d3cff8552a2 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Tue, 25 Jun 2024 17:26:56 +0200 Subject: [PATCH 22/38] wip --- text_to_image/stable_diffusion_xl_1.0/run.py | 3 +++ text_to_image/stable_diffusion_xl_1.0/run1.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run.py b/text_to_image/stable_diffusion_xl_1.0/run.py index 9e60e6f8..c3278515 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run.py +++ b/text_to_image/stable_diffusion_xl_1.0/run.py @@ -29,6 +29,9 @@ def run_pytorch_fp32(model_name, steps, batch_size, num_runs, timeout, **kwargs) def single_pass_pytorch(_runner, _stablediffusion): prompt = _stablediffusion.get_input() + prompts = [_stablediffusion.get_input() for i in range(batch_size)] + print(prompts) + quit() x_samples = _runner.run(batch_size * steps, prompt=prompt, num_inference_steps=steps) _stablediffusion.submit_count(batch_size, x_samples) diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py index 4b75aaf6..368069fb 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run1.py +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -11,7 +11,7 @@ model.unet = apply_compile(model.unet) # if using torch < 2.0 # pipe.enable_xformers_memory_efficient_attention() -n_steps = 40 +n_steps = 20 prompt = "An astronaut riding a green horse" prompts = ["An astronaut riding a green horse", "a cowboy eating a burger"] From a7403da7df10b1f21b8490e1f23a6890e3f15972 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Tue, 25 Jun 2024 17:31:33 +0200 Subject: [PATCH 23/38] wip --- text_to_image/stable_diffusion_xl_1.0/run.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run.py b/text_to_image/stable_diffusion_xl_1.0/run.py index c3278515..37285152 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run.py +++ b/text_to_image/stable_diffusion_xl_1.0/run.py @@ -29,7 +29,9 @@ def run_pytorch_fp32(model_name, steps, batch_size, num_runs, timeout, **kwargs) def single_pass_pytorch(_runner, _stablediffusion): prompt = _stablediffusion.get_input() - prompts = [_stablediffusion.get_input() for i in range(batch_size)] + print(_stablediffusion.get_input()) + print(_stablediffusion.get_input()) + prompts = [_stablediffusion.get_input() for _ in range(batch_size)] print(prompts) quit() x_samples = _runner.run(batch_size * steps, prompt=prompt, num_inference_steps=steps) From 625d2f4bc0ffe111cb20b9c9dda2b81d14898a58 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Tue, 25 Jun 2024 17:32:20 +0200 Subject: [PATCH 24/38] wip --- text_to_image/stable_diffusion_xl_1.0/run1.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion_xl_1.0/run1.py index 368069fb..21a3140c 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run1.py +++ b/text_to_image/stable_diffusion_xl_1.0/run1.py @@ -18,7 +18,8 @@ with torch.no_grad(): images = model(prompt=prompts, num_inference_steps=n_steps).images - +for i, img in enumerate(images): + img.save(f"img_{i}.png") # image = model( # prompt=prompt, # num_inference_steps=n_steps, From de4edef8cbf4d831f8156a29c442e6373c6ee275 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Tue, 25 Jun 2024 17:53:43 +0200 Subject: [PATCH 25/38] wip --- utils/text_to_image/stable_diffusion.py | 1 - 1 file changed, 1 deletion(-) diff --git a/utils/text_to_image/stable_diffusion.py b/utils/text_to_image/stable_diffusion.py index c96a853b..609ca71e 100644 --- a/utils/text_to_image/stable_diffusion.py +++ b/utils/text_to_image/stable_diffusion.py @@ -14,7 +14,6 @@ def get_input(self): adjectives = ["big", "small", "thin", "wide", "blonde", "pale"] nouns = ["dog", "cat", "horse", "astronaut", "human", "robot"] actions = ["sings", "rides a triceratop", "rides a horse", "eats a burger", "washes clothes", "looks at hands"] - seed(42) a = adjectives[randint(0, len(adjectives) - 1)] + " " b = nouns[randint(0, len(nouns) - 1)] + " " + actions[randint(0, len(actions) - 1)] From 778594a6c88fb34df9b2516a971e36cafcc8e81b Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Tue, 25 Jun 2024 18:23:58 +0200 Subject: [PATCH 26/38] wip --- text_to_image/stable_diffusion_xl_1.0/run.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run.py b/text_to_image/stable_diffusion_xl_1.0/run.py index 37285152..33d22d18 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run.py +++ b/text_to_image/stable_diffusion_xl_1.0/run.py @@ -29,8 +29,6 @@ def run_pytorch_fp32(model_name, steps, batch_size, num_runs, timeout, **kwargs) def single_pass_pytorch(_runner, _stablediffusion): prompt = _stablediffusion.get_input() - print(_stablediffusion.get_input()) - print(_stablediffusion.get_input()) prompts = [_stablediffusion.get_input() for _ in range(batch_size)] print(prompts) quit() From 45e6f85015a8ea3dbfd3deec68eaa7f373dae7fa Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Tue, 25 Jun 2024 18:26:23 +0200 Subject: [PATCH 27/38] wip --- text_to_image/stable_diffusion_xl_1.0/run.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/text_to_image/stable_diffusion_xl_1.0/run.py b/text_to_image/stable_diffusion_xl_1.0/run.py index 33d22d18..f887b7ed 100644 --- a/text_to_image/stable_diffusion_xl_1.0/run.py +++ b/text_to_image/stable_diffusion_xl_1.0/run.py @@ -28,11 +28,8 @@ def run_pytorch_fp32(model_name, steps, batch_size, num_runs, timeout, **kwargs) model.unet = apply_compile(model.unet) def single_pass_pytorch(_runner, _stablediffusion): - prompt = _stablediffusion.get_input() prompts = [_stablediffusion.get_input() for _ in range(batch_size)] - print(prompts) - quit() - x_samples = _runner.run(batch_size * steps, prompt=prompt, num_inference_steps=steps) + x_samples = _runner.run(batch_size * steps, prompt=prompts, num_inference_steps=steps) _stablediffusion.submit_count(batch_size, x_samples) runner = PyTorchRunnerV2(model) From ee86fa2d05702acfced0162e316dd4ad6db6752b Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Tue, 25 Jun 2024 18:31:27 +0200 Subject: [PATCH 28/38] rename files --- .../{stable_diffusion_xl_1.0 => stable_diffusion}/run1.py | 0 .../run.py => stable_diffusion/run_hf.py} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename text_to_image/{stable_diffusion_xl_1.0 => stable_diffusion}/run1.py (100%) rename text_to_image/{stable_diffusion_xl_1.0/run.py => stable_diffusion/run_hf.py} (100%) diff --git a/text_to_image/stable_diffusion_xl_1.0/run1.py b/text_to_image/stable_diffusion/run1.py similarity index 100% rename from text_to_image/stable_diffusion_xl_1.0/run1.py rename to text_to_image/stable_diffusion/run1.py diff --git a/text_to_image/stable_diffusion_xl_1.0/run.py b/text_to_image/stable_diffusion/run_hf.py similarity index 100% rename from text_to_image/stable_diffusion_xl_1.0/run.py rename to text_to_image/stable_diffusion/run_hf.py From 2bab8a7e6bf01a168018794900a6bc185b64699d Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Wed, 26 Jun 2024 12:44:37 +0200 Subject: [PATCH 29/38] wipC --- text_to_image/stable_diffusion/run_hf.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/text_to_image/stable_diffusion/run_hf.py b/text_to_image/stable_diffusion/run_hf.py index f887b7ed..4af4bb7d 100644 --- a/text_to_image/stable_diffusion/run_hf.py +++ b/text_to_image/stable_diffusion/run_hf.py @@ -18,13 +18,22 @@ def run_pytorch_fp32(model_name, steps, batch_size, num_runs, timeout, **kwargs): from diffusers import DiffusionPipeline + import torch._dynamo + torch._dynamo.config.suppress_errors = True from utils.benchmark import run_model from utils.pytorch import apply_compile from utils.pytorch import PyTorchRunnerV2 from utils.text_to_image.stable_diffusion import StableDiffusion - model = DiffusionPipeline.from_pretrained(model_name, use_safetensors=True).to("cpu") + if os.environ.get("IPEX_OPTIMIZE") == "1": + model = DiffusionPipeline.from_pretrained(model_name, + use_safetensors=True, + torch_dtype=torch.bfloat16).to("cpu") + else: + model = DiffusionPipeline.from_pretrained(model_name, + use_safetensors=True).to("cpu") + model.unet = apply_compile(model.unet) def single_pass_pytorch(_runner, _stablediffusion): From 273b7dcce8ca66fec1f9574c8a161c69c32adecd Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Wed, 26 Jun 2024 12:47:14 +0200 Subject: [PATCH 30/38] wip --- text_to_image/stable_diffusion/run_hf.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/text_to_image/stable_diffusion/run_hf.py b/text_to_image/stable_diffusion/run_hf.py index 4af4bb7d..de210337 100644 --- a/text_to_image/stable_diffusion/run_hf.py +++ b/text_to_image/stable_diffusion/run_hf.py @@ -17,8 +17,9 @@ def run_pytorch_fp32(model_name, steps, batch_size, num_runs, timeout, **kwargs): - from diffusers import DiffusionPipeline + import os import torch._dynamo + from diffusers import DiffusionPipeline torch._dynamo.config.suppress_errors = True from utils.benchmark import run_model From 9038ce6e37e27074ba6460ae79627913cb955c9f Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Wed, 26 Jun 2024 12:48:30 +0200 Subject: [PATCH 31/38] wip --- text_to_image/stable_diffusion/run_hf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text_to_image/stable_diffusion/run_hf.py b/text_to_image/stable_diffusion/run_hf.py index de210337..f6ac3222 100644 --- a/text_to_image/stable_diffusion/run_hf.py +++ b/text_to_image/stable_diffusion/run_hf.py @@ -27,7 +27,7 @@ def run_pytorch_fp32(model_name, steps, batch_size, num_runs, timeout, **kwargs) from utils.pytorch import PyTorchRunnerV2 from utils.text_to_image.stable_diffusion import StableDiffusion - if os.environ.get("IPEX_OPTIMIZE") == "1": + if os.environ.get("ENABLE_BF16_X86") == "1": model = DiffusionPipeline.from_pretrained(model_name, use_safetensors=True, torch_dtype=torch.bfloat16).to("cpu") From 061dcf5a04f27cc2b8aa9ec4e2fe903f6a9231c4 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Mon, 1 Jul 2024 12:25:18 +0200 Subject: [PATCH 32/38] wip --- utils/text_to_image/stable_diffusion.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/text_to_image/stable_diffusion.py b/utils/text_to_image/stable_diffusion.py index 609ca71e..8dd12b7c 100644 --- a/utils/text_to_image/stable_diffusion.py +++ b/utils/text_to_image/stable_diffusion.py @@ -1,6 +1,6 @@ # SPDX-License-Identifier: Apache-2.0 # Copyright (c) 2024, Ampere Computing LLC -from random import randint, seed +from random import randint from utils.helpers import Dataset From 02b11672c639e3784491ed9657598776b54a541d Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Mon, 1 Jul 2024 12:26:00 +0200 Subject: [PATCH 33/38] wip --- text_to_image/stable_diffusion/run1.py | 31 -------------------------- 1 file changed, 31 deletions(-) delete mode 100644 text_to_image/stable_diffusion/run1.py diff --git a/text_to_image/stable_diffusion/run1.py b/text_to_image/stable_diffusion/run1.py deleted file mode 100644 index 21a3140c..00000000 --- a/text_to_image/stable_diffusion/run1.py +++ /dev/null @@ -1,31 +0,0 @@ -from diffusers import DiffusionPipeline, StableDiffusionPipeline, StableDiffusionXLPipeline -import torch -from utils.pytorch import PyTorchRunnerV2, apply_compile -import os - -torch.set_num_threads(128) - -model = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", use_safetensors=True) - -model.to("cpu") -model.unet = apply_compile(model.unet) -# if using torch < 2.0 -# pipe.enable_xformers_memory_efficient_attention() -n_steps = 20 -prompt = "An astronaut riding a green horse" -prompts = ["An astronaut riding a green horse", "a cowboy eating a burger"] - -with torch.no_grad(): - images = model(prompt=prompts, num_inference_steps=n_steps).images - -for i, img in enumerate(images): - img.save(f"img_{i}.png") -# image = model( -# prompt=prompt, -# num_inference_steps=n_steps, -# denoising_end=0.8, -# output_type="latent", -# ).images - -# print(type(image)) - From 629a08887a375baf85fd32f2660c38551f156e21 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Mon, 1 Jul 2024 12:31:29 +0200 Subject: [PATCH 34/38] wip --- text_to_image/stable_diffusion/run_hf.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/text_to_image/stable_diffusion/run_hf.py b/text_to_image/stable_diffusion/run_hf.py index f6ac3222..31ea0d61 100644 --- a/text_to_image/stable_diffusion/run_hf.py +++ b/text_to_image/stable_diffusion/run_hf.py @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright (c) 2024, Ampere Computing LLC try: from utils import misc # noqa except ModuleNotFoundError: From 135f6d99fda1769f3b04b1372e4da3c9fdbeff97 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Wed, 28 Aug 2024 16:58:35 +0200 Subject: [PATCH 35/38] wip --- utils/text_to_image/stable_diffusion.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/text_to_image/stable_diffusion.py b/utils/text_to_image/stable_diffusion.py index 8dd12b7c..2bbc2b25 100644 --- a/utils/text_to_image/stable_diffusion.py +++ b/utils/text_to_image/stable_diffusion.py @@ -1,7 +1,8 @@ # SPDX-License-Identifier: Apache-2.0 # Copyright (c) 2024, Ampere Computing LLC -from random import randint +from random import randint, seed from utils.helpers import Dataset +seed(42) class StableDiffusion(Dataset): From 382c1c5f3cbedcb9baf9700834f6d795262a818c Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Wed, 28 Aug 2024 17:01:46 +0200 Subject: [PATCH 36/38] wip --- text_to_image/stable_diffusion/run_hf.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/text_to_image/stable_diffusion/run_hf.py b/text_to_image/stable_diffusion/run_hf.py index 31ea0d61..4e123a42 100644 --- a/text_to_image/stable_diffusion/run_hf.py +++ b/text_to_image/stable_diffusion/run_hf.py @@ -18,8 +18,7 @@ sys.exit(1) -def run_pytorch_fp32(model_name, steps, batch_size, num_runs, timeout, **kwargs): - import os +def run_pytorch_bf16(model_name, steps, batch_size, num_runs, timeout, **kwargs): import torch._dynamo from diffusers import DiffusionPipeline torch._dynamo.config.suppress_errors = True @@ -29,13 +28,9 @@ def run_pytorch_fp32(model_name, steps, batch_size, num_runs, timeout, **kwargs) from utils.pytorch import PyTorchRunnerV2 from utils.text_to_image.stable_diffusion import StableDiffusion - if os.environ.get("ENABLE_BF16_X86") == "1": - model = DiffusionPipeline.from_pretrained(model_name, - use_safetensors=True, - torch_dtype=torch.bfloat16).to("cpu") - else: - model = DiffusionPipeline.from_pretrained(model_name, - use_safetensors=True).to("cpu") + model = DiffusionPipeline.from_pretrained(model_name, + use_safetensors=True, + torch_dtype=torch.bfloat16).to("cpu") model.unet = apply_compile(model.unet) From 2d49f627c9236c8966ade9b4924a26d1b901cd4e Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Wed, 28 Aug 2024 17:03:22 +0200 Subject: [PATCH 37/38] wip --- text_to_image/stable_diffusion/run_hf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text_to_image/stable_diffusion/run_hf.py b/text_to_image/stable_diffusion/run_hf.py index 4e123a42..be51f051 100644 --- a/text_to_image/stable_diffusion/run_hf.py +++ b/text_to_image/stable_diffusion/run_hf.py @@ -53,4 +53,4 @@ def single_pass_pytorch(_runner, _stablediffusion): parser.ask_for_batch_size() parser.add_argument("--steps", type=int, default=25, help="steps through which the model processes the input") - run_pytorch_fp32(**vars(parser.parse())) + run_pytorch_bf16(**vars(parser.parse())) From 95ef5dde080ed1526fe3a69de1f09e2802f29a30 Mon Sep 17 00:00:00 2001 From: Marcel Wilnicki Date: Thu, 29 Aug 2024 11:34:04 +0200 Subject: [PATCH 38/38] wip --- benchmark.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmark.py b/benchmark.py index c72048dd..57ba1319 100644 --- a/benchmark.py +++ b/benchmark.py @@ -9,7 +9,7 @@ import urllib.request from pathlib import Path -LATEST_VERSION = "2.2.0a0+git1bef725" +LATEST_VERSION = "2.2.0a0+git6032a25" SYSTEMS = { "Altra": { "ResNet-50 v1.5": "https://ampereaimodelzoo.s3.eu-central-1.amazonaws.com/lookups_aml/q80_30%40ampere_pytorch_1.10.0%40resnet_50_v1.5.json", # noqa