|
--- |
|
license: openrail++ |
|
base_model: stabilityai/stable-diffusion-xl-base-1.0 |
|
language: |
|
- en |
|
tags: |
|
- stable-diffusion |
|
- stable-diffusion-xl |
|
- tensorrt |
|
- text-to-image |
|
--- |
|
|
|
# Stable Diffusion XL 1.0 TensorRT |
|
|
|
## Introduction |
|
|
|
This repository hosts the Latent Consistency Model(LCM) TensorRT versions of **Stable Diffusion XL 1.0** created in collaboration with [NVIDIA](https://huggingface.co/nvidia). The optimized versions give substantial improvements in speed and efficiency. |
|
|
|
See the [usage instructions](#usage-example) for how to run the SDXL pipeline with the ONNX files hosted in this repository. The first invocation produces plan files in `engine_xl_base` and `engine_xl_refiner` specific to the accelerator being run on and are reused for later invocations. |
|
|
|
## Model Description |
|
|
|
- **Developed by:** Stability AI |
|
- **Model type:** Diffusion-based text-to-image generative model |
|
- **License:** [CreativeML Open RAIL++-M License](https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/blob/main/LICENSE.md) |
|
- **Model Description:** This is a Latent Consistency Model (LCM) version of the [SDXL base 1.0](https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0) and [SDXL refiner 1.0](https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0) models for [NVIDIA TensorRT](https://developer.nvidia.com/tensorrt) optimized inference |
|
|
|
|
|
## Performance Comparison |
|
|
|
#### Timings for 4 steps at 1024x1024 |
|
|
|
| Accelerator | CLIP | Unet | VAE |Total | |
|
|-------------|--------------------------|-----------------------------|------------------------|------------------------| |
|
| A100 | 1.08 ms | 192.02 ms | 228.34 ms | 426.16 ms | |
|
| H100 | 0.77 ms | 129.09 ms | 127.44 ms | 261.15 ms | |
|
|
|
|
|
|
|
## Usage Example |
|
|
|
1. Following the [setup instructions](https://github.com/rajeevsrao/TensorRT/blob/release/8.6/demo/Diffusion/README.md) on launching a TensorRT NGC container. |
|
```shell |
|
git clone https://github.com/rajeevsrao/TensorRT.git |
|
cd TensorRT |
|
git checkout release/9.2 |
|
docker run --rm -it --gpus all -v $PWD:/workspace nvcr.io/nvidia/pytorch:23.11-py3 /bin/bash |
|
``` |
|
|
|
2. Download the SDXL LCM TensorRT files from this repo |
|
```shell |
|
git lfs install |
|
git clone https://huggingface.co/stabilityai/stable-diffusion-xl-1.0-tensorrt |
|
cd stable-diffusion-xl-1.0-tensorrt |
|
git lfs pull |
|
cd .. |
|
``` |
|
|
|
3. Install libraries and requirements |
|
```shell |
|
cd demo/Diffusion |
|
python3 -m pip install --upgrade pip |
|
pip3 install -r requirements.txt |
|
python3 -m pip install --pre --upgrade --extra-index-url https://pypi.nvidia.com tensorrt |
|
``` |
|
|
|
4. Perform TensorRT optimized inference |
|
``` |
|
python3 demo_txt2img_xl.py \ |
|
""Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"" \ |
|
--version=xl-1.0 \ |
|
--onnx-dir /workspace/stable-diffusion-xl-1.0-tensorrt/lcm \ |
|
--engine-dir /workspace/stable-diffusion-xl-1.0-tensorrt/engine-sdxl-lcm-nocfg \ |
|
--scheduler LCM \ |
|
--denoising-steps 4 \ |
|
--guidance-scale 0.0 \ |
|
--seed 42 |
|
|
|
``` |