|
--- |
|
pipeline_tag: text-to-image |
|
license: creativeml-openrail-m |
|
base_model: |
|
- stable-diffusion-v1-5/stable-diffusion-v1-5 |
|
library_name: diffusers |
|
--- |
|
# stable-diffusion-1.5 optimized for AMD GPU |
|
|
|
|
|
## Original Model |
|
https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5 |
|
|
|
## _io32/16 |
|
_io32: model input is fp32, model will convert the input to fp16, perform ops in fp16 and write the final result in fp32 |
|
|
|
_io16: model input is fp16, perform ops in fp16 and write the final result in fp16 |
|
|
|
## Running |
|
|
|
### 1. Using Amuse GUI Application |
|
|
|
Use Amuse GUI application to run it: https://www.amuse-ai.com/ |
|
use _io32 model to run with Amuse application |
|
|
|
|
|
### 2. Inference Demo |
|
|
|
Use the code below to get started with the model. |
|
|
|
With Python using Diffusers OnnxStableDiffusionPipeline |
|
|
|
Required Modules |
|
``` |
|
accelerate |
|
numpy==1.26.4 # Due to newer version of numpy changing dtype when multiplying |
|
diffusers |
|
torch |
|
transformers |
|
onnxruntime-directml |
|
``` |
|
|
|
Python Script |
|
``` |
|
import onnxruntime as ort |
|
from diffusers import OnnxStableDiffusionPipeline |
|
|
|
model_dir = "D:\\Models\\stable-diffusion-v1-5_io32" |
|
|
|
batch_size = 1 |
|
num_inference_steps = 30 |
|
image_size = 512 |
|
guidance_scale = 7.5 |
|
prompt = "a beautiful cabin in the mountains of Lake Tahoe" |
|
|
|
ort.set_default_logger_severity(3) |
|
|
|
sess_options = ort.SessionOptions() |
|
sess_options.enable_mem_pattern = False |
|
|
|
sess_options.add_free_dimension_override_by_name("unet_sample_batch", batch_size * 2) |
|
sess_options.add_free_dimension_override_by_name("unet_sample_channels", 4) |
|
sess_options.add_free_dimension_override_by_name("unet_sample_height", image_size // 8) |
|
sess_options.add_free_dimension_override_by_name("unet_sample_width", image_size // 8) |
|
sess_options.add_free_dimension_override_by_name("unet_time_batch", batch_size) |
|
sess_options.add_free_dimension_override_by_name("unet_hidden_batch", batch_size * 2) |
|
sess_options.add_free_dimension_override_by_name("unet_hidden_sequence", 77) |
|
|
|
pipeline = OnnxStableDiffusionPipeline.from_pretrained( |
|
model_dir, provider="DmlExecutionProvider", sess_options=sess_options |
|
) |
|
|
|
result = pipeline( |
|
[prompt] * batch_size, |
|
num_inference_steps=num_inference_steps, |
|
callback=None, |
|
height=image_size, |
|
width=image_size, |
|
guidance_scale=guidance_scale, |
|
generator=None |
|
) |
|
|
|
output_path = "output.png" |
|
result.images[0].save(output_path) |
|
|
|
print(f"Generated {output_path}") |
|
``` |
|
|
|
### Inference Results |
|
|
|
 |