8 Commits

Author SHA1 Message Date
AbdBarho
9cbd58b3f4 Update README.md (#18) 2022-09-02 09:58:26 +02:00
AbdBarho
089fc524d8 Add Latent Diffusion & Image Lab (#17)
* Add Latent Diffusion & Image Lab

* Update versions
2022-09-02 09:55:36 +02:00
AbdBarho
0d8b7d4ac8 Update Core to c5b2c86f (#15) 2022-09-01 06:27:15 +02:00
AbdBarho
561664ea6e Update FAQ (#14)
Closes #9

Add fix to green output
2022-08-31 22:32:21 +02:00
AbdBarho
77c2b2d217 Update issue templates (#13) 2022-08-31 19:06:03 +02:00
Abdullah Barhoum
6c0c610f27 Update Readme 2022-08-31 18:20:51 +02:00
Abdullah Barhoum
dc730b7f6b Typo 2022-08-31 18:18:32 +02:00
Abdullah Barhoum
15952906a1 Add Textual inversion 2022-08-31 18:17:44 +02:00
5 changed files with 123 additions and 33 deletions

29
.github/ISSUE_TEMPLATE/bug.md vendored Normal file
View File

@@ -0,0 +1,29 @@
---
name: Bug
about: Report a bug
title: ''
labels: bug
assignees: ''
---
**Has this issue been opened before? Check the [FAQ](https://github.com/AbdBarho/stable-diffusion-webui-docker/wiki/Main), the [issues](https://github.com/AbdBarho/stable-diffusion-webui-docker/issues?q=is%3Aissue) and in [the issues in the WebUI repo](https://github.com/hlky/stable-diffusion-webui)**
**Describe the bug**
**Steps to Reproduce**
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Hardware / Software:**
- OS: [e.g. Windows / Ubuntu and version]
- GPU: [Nvidia 1660 / No GPU]
- Version [e.g. 22]
**Additional context**
Any other context about the problem here. If applicable, add screenshots to help explain your problem.

View File

@@ -2,11 +2,23 @@
Run Stable Diffusion on your machine with a nice UI without any hassle! Run Stable Diffusion on your machine with a nice UI without any hassle!
This repository provides the [WebUI](https://github.com/hlky/stable-diffusion-webui) as docker for easy setup and deployment. Please note that this repo delivers all cutting-edge unstable changes from the WebUI, so expect some bugs. This repository provides the [WebUI](https://github.com/hlky/stable-diffusion-webui) as a docker image for easy setup and deployment. Please note that the WebUI is experimental and evolving quickly, so expect some bugs.
## Features
- Interactive UI with many features, and more on the way!
- Support for 6GB GPU cards.
- GFPGAN for face reconstruction, RealESRGAN for super-sampling.
- Experimental:
- [Textual Inversion](https://github.com/hlky/sd-enable-textual-inversion)
- Latent Diffusion Super Resolution
- GoBig
- GoLatent
- many more!
## Setup ## Setup
make sure you have docker installed and up to date. Download this repo and run: Make sure you have an **up to date** version of docker installed. Download this repo and run:
``` ```
docker compose build docker compose build
@@ -15,17 +27,22 @@ docker compose build
you can let it build in the background while you download the different models you can let it build in the background while you download the different models
- [Stable Diffusion v1.4 (4GB)](https://www.googleapis.com/storage/v1/b/aai-blog-files/o/sd-v1-4.ckpt?alt=media), rename to `model.ckpt` - [Stable Diffusion v1.4 (4GB)](https://www.googleapis.com/storage/v1/b/aai-blog-files/o/sd-v1-4.ckpt?alt=media), rename to `model.ckpt`
- (Optional) [GFPGANv1.3.pth (333MB)](https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth) to improve generated faces. - (Optional) [GFPGANv1.3.pth (333MB)](https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth).
- (Optional) [RealESRGAN_x4plus.pth (64MB)](https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth) and [RealESRGAN_x4plus_anime_6B.pth (18MB)](https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth) for super-sampling. - (Optional) [RealESRGAN_x4plus.pth (64MB)](https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth) and [RealESRGAN_x4plus_anime_6B.pth (18MB)](https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth).
- (Optional) [LDSR (2GB)](https://heibox.uni-heidelberg.de/f/578df07c8fc04ffbadf3/?dl=1) and [its configuration](https://heibox.uni-heidelberg.de/f/31a76b13ea27482981b4/?dl=1), rename to `LDSR.ckpt` and `LDSR.yaml` respectively.
<!-- - (Optional) [RealESRGAN_x2plus.pth (64MB)](https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.1/RealESRGAN_x2plus.pth)
- TODO: (I still need to find the RealESRGAN_x2plus_6b.pth) -->
Put all of the downloaded files in the `models` folder, it should look something like this: Put all of the downloaded files in the `models` folder, it should look something like this:
``` ```
models/ models/
├── model.ckpt
├── GFPGANv1.3.pth ├── GFPGANv1.3.pth
├── RealESRGAN_x4plus.pth ├── RealESRGAN_x4plus.pth
├── RealESRGAN_x4plus_anime_6B.pth ├── RealESRGAN_x4plus_anime_6B.pth
── model.ckpt ── LDSR.ckpt
└── LDSR.yaml
``` ```
## Run ## Run
@@ -42,9 +59,13 @@ Note: the first start will take sometime as some other models will be downloaded
## Config ## Config
in the `docker-compose.yml` you can change the `CLI_ARGS` variable contains all of the variables that will be passed to [the web ui](https://github.com/hlky/stable-diffusion/blob/fa977b3d6f9d0b264035c949fd70415476f00036/scripts/webui.py). in the `docker-compose.yml` you can change the `CLI_ARGS` variable, which contains the arguments that will be passed to the WebUI. By default: `--extra-models-cpu --optimized-turbo` are given, which allow you to use this model on a 6GB GPU. However, some features might not be available in the mode.
By default: `--extra-models-cpu --optimized-turbo` are given, which allow you to use this model on a 6GB GPU. [You can find the full list of arguments here.](https://github.com/hlky/stable-diffusion/blob/d667ff52a36b4e79526f01555bfbf85428f334ce/scripts/webui.py)
### FAQ
You can find fixes to common issues [in the wiki page.](https://github.com/AbdBarho/stable-diffusion-webui-docker/wiki/Main)
# Disclaimer # Disclaimer

View File

@@ -2,19 +2,24 @@
FROM continuumio/miniconda3:4.12.0 FROM continuumio/miniconda3:4.12.0
RUN conda install python=3.8.5 && conda clean -a -y RUN conda install python=3.8.5 && conda clean -a -y
RUN conda install pytorch==1.11.0 torchvision==0.12.0 cudatoolkit=11.3 -c pytorch && conda clean -a -y RUN conda install pytorch==1.11.0 torchvision==0.12.0 cudatoolkit=11.3 -c pytorch && conda clean -a -y
RUN git clone https://github.com/hlky/stable-diffusion.git && cd stable-diffusion && git reset --hard ff8c2d0b709f1e4180fb19fa5c27ec28c414cedd RUN git clone https://github.com/hlky/stable-diffusion.git && cd stable-diffusion && git reset --hard ff8c2d0b709f1e4180fb19fa5c27ec28c414cedd
RUN conda env update --file stable-diffusion/environment.yaml --name base && conda clean -a -y RUN conda env update --file stable-diffusion/environment.yaml --name base && conda clean -a -y
# Fix: Module PIL has not attribute "Resampling"
RUN conda install -c anaconda pillow==9.2.0 && conda clean -a -y
SHELL ["/bin/bash", "-ceuxo", "pipefail"]
# fonts for generating the grid # fonts for generating the grid
RUN apt-get update && apt install fonts-dejavu-core && apt-get clean RUN apt-get update && apt install fonts-dejavu-core rsync -y && apt-get clean
# Note: don't update the sha of previous versions because the install will take forever # Note: don't update the sha of previous versions because the install will take forever
# instead, update the repo state in a later step # instead, update the repo state in a later step
# RUN cd stable-diffusion && git pull && git reset --hard ff8c2d0b709f1e4180fb19fa5c27ec28c414cedd && \ RUN cd stable-diffusion && git pull && git reset --hard d667ff52a36b4e79526f01555bfbf85428f334ce && \
# conda env update --file environment.yaml --name base && conda clean -a -y conda env update --file environment.yaml --name base && conda clean -a -y
# download dev UI version, update the sha below in case you want some other version # download dev UI version, update the sha below in case you want some other version
# RUN <<EOF # RUN <<EOF
@@ -28,30 +33,32 @@ RUN apt-get update && apt install fonts-dejavu-core && apt-get clean
# cd / && rm -rf stable-diffusion-webui # cd / && rm -rf stable-diffusion-webui
# EOF # EOF
# Textual-inversion: # Textual inversion
# RUN <<EOF RUN <<EOF
# git clone https://github.com/hlky/sd-enable-textual-inversion.git git clone https://github.com/hlky/sd-enable-textual-inversion.git &&
# cp -rf sd-enable-textual-inversion /stable-diffusion cd /sd-enable-textual-inversion && git reset --hard 08f9b5046552d17cf7327b30a98410222741b070 &&
# EOF rsync -a /sd-enable-textual-inversion/ /stable-diffusion/ &&
rm -rf /sd-enable-textual-inversion
EOF
# Latent diffusion
RUN <<EOF
git clone https://github.com/devilismyfriend/latent-diffusion &&
cd /latent-diffusion &&
git reset --hard 4119cf038fb953360fb004e48adb9913eed3594a &&
# hacks all the way down
mv ldm ldm_latent &&
sed -i -- 's/from ldm/from ldm_latent/g' *.py
# dont forget to update the yaml!!
EOF
# add info # add info
COPY info.py /info.py COPY . /docker/
RUN python /info.py /stable-diffusion/frontend/frontend.py RUN python /docker/info.py /stable-diffusion/frontend/frontend.py
WORKDIR /stable-diffusion WORKDIR /stable-diffusion
ENV TRANSFORMERS_CACHE=/cache/transformers TORCH_HOME=/cache/torch CLI_ARGS="" \ ENV TRANSFORMERS_CACHE=/cache/transformers TORCH_HOME=/cache/torch CLI_ARGS=""
GFPGAN_PATH=/stable-diffusion/src/gfpgan/experiments/pretrained_models/GFPGANv1.3.pth \
RealESRGAN_PATH=/stable-diffusion/src/realesrgan/experiments/pretrained_models/RealESRGAN_x4plus.pth \
RealESRGAN_ANIME_PATH=/stable-diffusion/src/realesrgan/experiments/pretrained_models/RealESRGAN_x4plus_anime_6B.pth
EXPOSE 7860 EXPOSE 7860
CMD \
for path in "${GFPGAN_PATH}" "${RealESRGAN_PATH}" "${RealESRGAN_ANIME_PATH}"; do \
name=$(basename "${path}"); \
base=$(dirname "${path}"); \
test -f "/models/${name}" && mkdir -p "${base}" && ln -sf "/models/${name}" "${path}" && echo "Mounted ${name}";\
done;\
# force facexlib cache
mkdir -p /cache/weights/ && rm -rf /stable-diffusion/src/facexlib/facexlib/weights && \
ln -sf /cache/weights/ /stable-diffusion/src/facexlib/facexlib/ && \
# run, -u to not buffer stdout / stderr # run, -u to not buffer stdout / stderr
python3 -u scripts/webui.py --outdir /output --ckpt /models/model.ckpt --save-metadata ${CLI_ARGS} CMD /docker/mount.sh && python3 -u scripts/webui.py --outdir /output --ckpt /models/model.ckpt --ldsr-dir /latent-diffusion --save-metadata ${CLI_ARGS}

31
build/mount.sh Normal file
View File

@@ -0,0 +1,31 @@
#!/bin/bash
set -e
declare -A MODELS
MODELS["/stable-diffusion/src/gfpgan/experiments/pretrained_models/GFPGANv1.3.pth"]=GFPGANv1.3.pth
MODELS["/stable-diffusion/src/realesrgan/experiments/pretrained_models/RealESRGAN_x4plus.pth"]=RealESRGAN_x4plus.pth
MODELS["/stable-diffusion/src/realesrgan/experiments/pretrained_models/RealESRGAN_x4plus_anime_6B.pth"]=RealESRGAN_x4plus_anime_6B.pth
MODELS["/latent-diffusion/experiments/pretrained_models/model.ckpt"]=LDSR.ckpt
# MODELS["/latent-diffusion/experiments/pretrained_models/project.yaml"]=LDSR.yaml
for path in "${!MODELS[@]}"; do
name=${MODELS[$path]}
base=$(dirname "${path}")
from_path="/models/${name}"
if test -f "${from_path}"; then
mkdir -p "${base}" && ln -sf "${from_path}" "${path}" && echo "Mounted ${name}"
else
echo "Skipping ${name}"
fi
done
# hack for latent-diffusion
if test -f /models/LDSR.yaml; then
sed 's/ldm\./ldm_latent\./g' /models/LDSR.yaml >/latent-diffusion/experiments/pretrained_models/project.yaml
fi
# force facexlib cache
mkdir -p /cache/weights/
rm -rf /stable-diffusion/src/facexlib/facexlib/weights
ln -sf /cache/weights/ /stable-diffusion/src/facexlib/facexlib/

2
models/.gitignore vendored
View File

@@ -2,3 +2,5 @@
/GFPGANv1.3.pth /GFPGANv1.3.pth
/RealESRGAN_x4plus.pth /RealESRGAN_x4plus.pth
/RealESRGAN_x4plus_anime_6B.pth /RealESRGAN_x4plus_anime_6B.pth
/LDSR.ckpt
/LDSR.yaml