txt2img sdxl 1024x1024
65.417351÷65.623950=0.996851774
img2img sdxl 1024x1024 (input 1024x1024 image)
54.623950÷55.738662=0.980001099
$ python main.py
~/miniconda3/envs/torch_cuda_jup/lib/python3.11/site-packages/diffusers/utils/outputs.py:63: UserWarning: torch.utils._pytree._register_pytree_node is deprecated. Please use torch.utils._pytree.register_pytree_node instead.
torch.utils._pytree._register_pytree_node(
~/miniconda3/envs/torch_cuda_jup/lib/python3.11/site-packages/diffusers/utils/outputs.py:63: UserWarning: torch.utils._pytree._register_pytree_node is deprecated. Please use torch.utils._pytree.register_pytree_node instead.
torch.utils._pytree._register_pytree_node(
Loading pipeline components...: 100%|█████████████████████████████████████████████████████████████████████| 7/7 [00:00<00:00, 21.89it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:06<00:00, 7.95it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:06<00:00, 8.09it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:06<00:00, 8.09it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:06<00:00, 8.09it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:06<00:00, 8.08it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:06<00:00, 8.07it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:06<00:00, 8.06it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:06<00:00, 8.05it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:06<00:00, 8.04it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:06<00:00, 8.04it/s]
Text-to-Image Benchmark: 10 iterations took 0:01:05.417351.
$ python main.py
~/miniconda3/envs/torch_cuda_jup/lib/python3.11/site-packages/diffusers/utils/outputs.py:63: UserWarning: torch.utils._pytree._register_pytree_node is deprecated. Please use torch.utils._pytree.register_pytree_node instead.
torch.utils._pytree._register_pytree_node(
~/miniconda3/envs/torch_cuda_jup/lib/python3.11/site-packages/diffusers/utils/outputs.py:63: UserWarning: torch.utils._pytree._register_pytree_node is deprecated. Please use torch.utils._pytree.register_pytree_node instead.
torch.utils._pytree._register_pytree_node(
Loading pipeline components...: 100%|█████████████████████████████████████████████████████████████████████| 7/7 [00:00<00:00, 21.22it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:04<00:00, 8.02it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:04<00:00, 8.11it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:04<00:00, 8.11it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:04<00:00, 8.10it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:04<00:00, 8.10it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:04<00:00, 8.11it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:04<00:00, 8.10it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:04<00:00, 8.11it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:04<00:00, 8.11it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:04<00:00, 8.11it/s]
Image-to-Image Benchmark: 10 iterations took 0:00:54.623950.
$ python main.py
~/miniconda3/envs/torch_cuda_jup/lib/python3.11/site-packages/diffusers/utils/outputs.py:63: UserWarning: torch.utils._pytree._register_pytree_node is deprecated. Please use torch.utils._pytree.register_pytree_node instead.
torch.utils._pytree._register_pytree_node(
~/miniconda3/envs/torch_cuda_jup/lib/python3.11/site-packages/diffusers/utils/outputs.py:63: UserWarning: torch.utils._pytree._register_pytree_node is deprecated. Please use torch.utils._pytree.register_pytree_node instead.
torch.utils._pytree._register_pytree_node(
Loading pipeline components...: 100%|█████████████████████████████████████████████████████████████████████| 7/7 [00:00<00:00, 21.68it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:06<00:00, 7.87it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:06<00:00, 8.01it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:06<00:00, 8.01it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:06<00:00, 8.01it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:06<00:00, 8.00it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:06<00:00, 8.00it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:06<00:00, 8.00it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:06<00:00, 8.00it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:06<00:00, 7.99it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:06<00:00, 8.00it/s]
Text-to-Image Benchmark: 10 iterations took 0:01:05.950096.
$ python main.py
~/miniconda3/envs/torch_cuda_jup/lib/python3.11/site-packages/diffusers/utils/outputs.py:63: UserWarning: torch.utils._pytree._register_pytree_node is deprecated. Please use torch.utils._pytree.register_pytree_node instead.
torch.utils._pytree._register_pytree_node(
~/miniconda3/envs/torch_cuda_jup/lib/python3.11/site-packages/diffusers/utils/outputs.py:63: UserWarning: torch.utils._pytree._register_pytree_node is deprecated. Please use torch.utils._pytree.register_pytree_node instead.
torch.utils._pytree._register_pytree_node(
Loading pipeline components...: 100%|█████████████████████████████████████████████████████████████████████| 7/7 [00:04<00:00, 1.71it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:05<00:00, 7.81it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:04<00:00, 8.01it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:04<00:00, 8.03it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:04<00:00, 8.02it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:05<00:00, 7.99it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:04<00:00, 8.01it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:04<00:00, 8.01it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:05<00:00, 7.99it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:04<00:00, 8.01it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:04<00:00, 8.00it/s]
Image-to-Image Benchmark: 10 iterations took 0:00:55.738662.
import torch
from diffusers import AutoPipelineForText2Image, AutoPipelineForImage2Image, utils
from datetime import datetime
import numpy as np
def benchmark_text_to_image(N=10, height=1024, width=1024):
pipeline = AutoPipelineForText2Image.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
torch_dtype=torch.float16,
variant="fp16",
use_safetensors=True
).to("cuda")
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
start_time = datetime.now()
for i in range(N):
torch.manual_seed(i)
image = pipeline(prompt=prompt, height=height, width=width, generator=torch.Generator("cuda").manual_seed(i)).images[0]
end_time = datetime.now()
print(f"Text-to-Image Benchmark: {N} iterations took {end_time - start_time}.")
def benchmark_image_to_image(N=10, height=1024, width=1024):
text_to_image_pipeline = AutoPipelineForText2Image.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
torch_dtype=torch.float16,
variant="fp16",
use_safetensors=True
).to("cuda")
pipeline = AutoPipelineForImage2Image.from_pipe(text_to_image_pipeline).to("cuda")
url = "https://esnx.xyz/imgs/sosig.png"
init_image = utils.load_image(url)
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
start_time = datetime.now()
for i in range(N):
torch.manual_seed(i)
modified_image = pipeline(prompt=prompt, image=init_image, strength=0.8, guidance_scale=10.5, height=height, width=width, generator=torch.Generator("cuda").manual_seed(i)).images[0]
end_time = datetime.now()
print(f"Image-to-Image Benchmark: {N} iterations took {end_time - start_time}.")
$ nvidia-smi
Tue Mar 5 17:02:51 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.14 Driver Version: 550.54.14 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 4090 Off | 00000000:0A:00.0 Off | Off |
| 0% 24C P8 10W / 450W | 1MiB / 24564MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+
$ pip freeze | grep -P "torch|diffusers|transformers"
diffusers==0.26.3
torch==2.2.1
torchaudio==2.2.1
torchvision==0.17.1
transformers==4.38.2