Instructions to use amd/stable-diffusion-1.5_io16_amdgpu with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use amd/stable-diffusion-1.5_io16_amdgpu with Diffusers:
pip install -U diffusers transformers accelerate
import torch from diffusers import DiffusionPipeline # switch to "mps" for apple devices pipe = DiffusionPipeline.from_pretrained("amd/stable-diffusion-1.5_io16_amdgpu", dtype=torch.bfloat16, device_map="cuda") prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k" image = pipe(prompt).images[0] - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- Draw Things
- DiffusionBee
| 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 | |
|  |