From 5c35fbbb1316b6676c74e0889314802c76261bcf Mon Sep 17 00:00:00 2001 From: Laurent Mazare Date: Mon, 11 Sep 2023 13:06:29 +0100 Subject: [PATCH] Stable-Diffusion readme (#814) * Stable Diffusion readme. * Fix the image path. * Move the assets. * Resize the sample image. * Lower resolution. --- .../examples/stable-diffusion/README.md | 63 ++++++++++++++++++ .../assets/stable-diffusion-xl.jpg | Bin 0 -> 36573 bytes 2 files changed, 63 insertions(+) create mode 100644 candle-examples/examples/stable-diffusion/README.md create mode 100644 candle-examples/examples/stable-diffusion/assets/stable-diffusion-xl.jpg diff --git a/candle-examples/examples/stable-diffusion/README.md b/candle-examples/examples/stable-diffusion/README.md new file mode 100644 index 00000000..ee83b3f9 --- /dev/null +++ b/candle-examples/examples/stable-diffusion/README.md @@ -0,0 +1,63 @@ +# candle-stable-diffusion: A Diffusers API in Rust/Candle + +![rusty robot holding a candle](./assets/stable-diffusion-xl.jpg) + +_A rusty robot holding a fire torch in its hand_, generated by Stable Diffusion +XL using Rust and [candle](https://github.com/huggingface/candle). + +The `stable-diffusion` example is a conversion of +[diffusers-rs](https://github.com/LaurentMazare/diffusers-rs) using candle +rather than libtorch. This implementation supports Stable Diffusion v1.5, v2.1, +as well as Stable Diffusion XL 1.0. + +## Getting the weights + +The weights are automatically downloaded for you from the [HuggingFace +Hub](https://huggingface.co/) on the first run. There are various command line +flags to use local files instead, run with `--help` to learn about them. + +## Running some example. + +```bash +cargo run --example stable-diffusion --release --features=cuda,cudnn \ + -- --prompt "a cosmonaut on a horse (hd, realistic, high-def)" +``` + +The final image is named `sd_final.png` by default. +The default scheduler is the Denoising Diffusion Implicit Model scheduler (DDIM). The +original paper and some code can be found in the [associated repo](https://github.com/ermongroup/ddim). + +### Command-line flags + +- `--prompt`: the prompt to be used to generate the image. +- `--uncond-prompt`: the optional unconditional prompt. +- `--sd-version`: the Stable Diffusion version to use, can be `v1-5`, `v2-1`, or + `xl`. +- `--cpu`: use the cpu rather than the gpu (much slower). +- `--height`, `--width`: set the height and width for the generated image. +- `--n-steps`: the number of steps to be used in the diffusion process. +- `--num-samples`: the number of samples to generate. +- `--final-image`: the filename for the generated image(s). + +### Using flash-attention + +Using flash attention makes image generation a lot faster and uses less memory. +The downside is some long compilation time. You can set the +`CANDLE_FLASH_ATTN_BUILD_DIR` environment variable to something like +`/home/user/.candle` to ensures that the compilation artifacts are properly +cached. + +Enabling flash-attention requires both a feature flag, `--feature flash-attn` +and using the command line flag `--use-flash-attn`. + +## Image to Image Pipeline +... + +## FAQ + +### Memory Issues + +This requires a GPU with more than 8GB of memory, as a fallback the CPU version can be used +with the `--cpu` flag but is much slower. +Alternatively, reducing the height and width with the `--height` and `--width` +flag is likely to reduce memory usage significantly. diff --git a/candle-examples/examples/stable-diffusion/assets/stable-diffusion-xl.jpg b/candle-examples/examples/stable-diffusion/assets/stable-diffusion-xl.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a6f7b6c65ec0e0a0343ef228180926441d780887 GIT binary patch literal 36573 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 literal 0 HcmV?d00001