From 555c26b7ce435001bc86684c7e6f314e88c6ed01 Mon Sep 17 00:00:00 2001 From: AJ Walter Date: Sun, 16 Apr 2023 03:32:03 -0500 Subject: [PATCH 01/22] Make Dockerfiles OCI compliant (#408) ## Justification Closes issue #352 This update makes the Dockerfiles OCI compliant, making it easier to use Buildah or other image building techniques that require it ## Implementation This changes a few things, listed below: * auto: Download container is switched to alpine. The `git` container specified the `/git` directory as a volume. As such, all the files under `/git` would be lost after each script invoke. Alpine is used later in the build process anyway, so it shouldn't be any extra cost to switch to it * auto: "New" clone.sh script is copied into the container, which is basically just the previous clone script that was embedded in the Dockerfile. * all: `< --- services/AUTOMATIC1111/Dockerfile | 52 +++++++++++++------------------ services/AUTOMATIC1111/clone.sh | 11 +++++++ services/invoke/Dockerfile | 47 +++++++++++++--------------- services/sygil/Dockerfile | 42 +++++++++++-------------- 4 files changed, 71 insertions(+), 81 deletions(-) create mode 100644 services/AUTOMATIC1111/clone.sh diff --git a/services/AUTOMATIC1111/Dockerfile b/services/AUTOMATIC1111/Dockerfile index b2d44d8..a610d0c 100644 --- a/services/AUTOMATIC1111/Dockerfile +++ b/services/AUTOMATIC1111/Dockerfile @@ -1,14 +1,6 @@ -# syntax=docker/dockerfile:1 - FROM alpine/git:2.36.2 as download -SHELL ["/bin/sh", "-ceuxo", "pipefail"] - -RUN < /clone.sh -mkdir -p repositories/"$1" && cd repositories/"$1" && git init && git remote add origin "$2" && git fetch origin "$3" --depth=1 && git reset --hard "$3" && rm -rf .git -EOE -EOF +COPY clone.sh /clone.sh RUN . /clone.sh taming-transformers https://github.com/CompVis/taming-transformers.git 24268930bf1dce879235a7fddd0b2355b84d7ea6 \ && rm -rf data assets **/*.ipynb @@ -30,21 +22,19 @@ RUN aria2c -x 5 --dir / --out wheel.whl 'https://github.com/AbdBarho/stable-diff FROM python:3.10.9-slim -SHELL ["/bin/bash", "-ceuxo", "pipefail"] - ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1 -RUN PIP_NO_CACHE_DIR=1 pip install torch==1.13.1+cu117 torchvision --extra-index-url https://download.pytorch.org/whl/cu117 +RUN --mount=type=cache,target=/root/.cache/pip \ + pip install torch==1.13.1+cu117 torchvision --extra-index-url https://download.pytorch.org/whl/cu117 RUN apt-get update && apt install fonts-dejavu-core rsync git jq moreutils -y && apt-get clean -RUN --mount=type=cache,target=/root/.cache/pip < req.txt -pip install -r req.txt -rm req.txt -EOF +RUN --mount=type=cache,target=/root/.cache/pip \ + git reset --hard f232068ab89bd80e4f5f3133dcdb62ea78f1d0f7 && \ + git config --global http.postBuffer 1048576000 && \ + egrep -v '^-e .' environments-and-requirements/requirements-lin-cuda.txt > req.txt && \ + pip install -r req.txt && \ + rm req.txt # patch match: # https://github.com/invoke-ai/InvokeAI/blob/main/docs/installation/INSTALL_PATCHMATCH.md -RUN <=4.24' # add info COPY . /docker/ -RUN < Date: Sun, 16 Apr 2023 10:56:27 +0200 Subject: [PATCH 02/22] Refactor invoke (#405) Fixes a problem with cross attention class missing from diffusers models are now taken from the huggingFace cache. https://github.com/invoke-ai/InvokeAI/commit/50eb02f68be912276a9c106d5e8038a5671a0386 --- docker-compose.yml | 4 ++-- services/invoke/Dockerfile | 43 ++++++++++++++++------------------- services/invoke/entrypoint.sh | 17 +++++++------- services/invoke/models.yaml | 23 ------------------- 4 files changed, 30 insertions(+), 57 deletions(-) delete mode 100644 services/invoke/models.yaml diff --git a/docker-compose.yml b/docker-compose.yml index e005e77..2d17b6c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -43,10 +43,10 @@ services: <<: *base_service profiles: ["invoke"] build: ./services/invoke/ - image: sd-invoke:26 + image: sd-invoke:27 environment: - PRELOAD=true - - CLI_ARGS= + - CLI_ARGS=--no-nsfw_checker --no-safety_checker --xformers sygil: &sygil diff --git a/services/invoke/Dockerfile b/services/invoke/Dockerfile index b6045ab..514d525 100644 --- a/services/invoke/Dockerfile +++ b/services/invoke/Dockerfile @@ -11,53 +11,48 @@ ENV DEBIAN_FRONTEND=noninteractive PIP_EXISTS_ACTION=w PIP_PREFER_BINARY=1 RUN --mount=type=cache,target=/root/.cache/pip pip install torch==1.13.1+cu117 torchvision --extra-index-url https://download.pytorch.org/whl/cu117 -RUN apt-get update && apt-get install git -y && apt-get clean - -RUN git clone https://github.com/invoke-ai/InvokeAI.git /stable-diffusion - -WORKDIR /stable-diffusion - -RUN --mount=type=cache,target=/root/.cache/pip \ - git reset --hard f232068ab89bd80e4f5f3133dcdb62ea78f1d0f7 && \ - git config --global http.postBuffer 1048576000 && \ - egrep -v '^-e .' environments-and-requirements/requirements-lin-cuda.txt > req.txt && \ - pip install -r req.txt && \ - rm req.txt - # patch match: # https://github.com/invoke-ai/InvokeAI/blob/main/docs/installation/INSTALL_PATCHMATCH.md -RUN \ +RUN --mount=type=cache,target=/var/cache/apt \ apt-get update && \ - # apt-get install build-essential python3-opencv libopencv-dev -y && \ - apt-get install make g++ libopencv-dev -y && \ + apt-get install make g++ git libopencv-dev -y && \ apt-get clean && \ cd /usr/lib/x86_64-linux-gnu/pkgconfig/ && \ ln -sf opencv4.pc opencv.pc -ARG BRANCH=main SHA=6e0c6d9cc9f6bdbdefc4b9e94bc1ccde1b04aa42 + +ENV ROOT=/InvokeAI +RUN git clone https://github.com/invoke-ai/InvokeAI.git ${ROOT} +WORKDIR ${ROOT} + +RUN --mount=type=cache,target=/root/.cache/pip \ + git reset --hard 4463124bddd221c333d4c70e73aa2949ad35453d && \ + pip install . + + +ARG BRANCH=main SHA=50eb02f68be912276a9c106d5e8038a5671a0386 RUN --mount=type=cache,target=/root/.cache/pip \ git fetch && \ git reset --hard && \ git checkout ${BRANCH} && \ git reset --hard ${SHA} && \ - pip install . - + pip install -U . RUN --mount=type=cache,target=/root/.cache/pip \ - --mount=type=bind,from=xformers,source=/wheel.whl,target=/xformers-0.0.15-cp310-cp310-linux_x86_64.whl \ - pip install -U opencv-python-headless huggingface_hub triton /xformers-0.0.15-cp310-cp310-linux_x86_64.whl && \ + --mount=type=bind,from=xformers,source=/wheel.whl,target=/xformers-0.0.17-cp310-cp310-linux_x86_64.whl \ + pip install -U opencv-python-headless triton /xformers-0.0.17-cp310-cp310-linux_x86_64.whl && \ python3 -c "from patchmatch import patch_match" -RUN touch invokeai.init COPY . /docker/ ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility ENV NVIDIA_VISIBLE_DEVICES=all -ENV PYTHONUNBUFFERED=1 ROOT=/stable-diffusion PYTHONPATH="${PYTHONPATH}:${ROOT}" PRELOAD=false CLI_ARGS="" HF_HOME=/root/.cache/huggingface +ENV PYTHONUNBUFFERED=1 PRELOAD=false HF_HOME=/root/.cache/huggingface CONFIG_DIR=/data/config/invoke CLI_ARGS="" EXPOSE 7860 ENTRYPOINT ["/docker/entrypoint.sh"] -CMD invokeai --web --host 0.0.0.0 --port 7860 --config /docker/models.yaml --root_dir ${ROOT} --outdir /output/invoke ${CLI_ARGS} +CMD invokeai --web --host 0.0.0.0 --port 7860 --root_dir ${ROOT} --config ${CONFIG_DIR}/models.yaml --outdir /output/invoke ${CLI_ARGS} +# TODO: make sure the config is persisted between sessions diff --git a/services/invoke/entrypoint.sh b/services/invoke/entrypoint.sh index a0d0410..3594c85 100755 --- a/services/invoke/entrypoint.sh +++ b/services/invoke/entrypoint.sh @@ -4,25 +4,25 @@ set -Eeuo pipefail declare -A MOUNTS +mkdir -p ${CONFIG_DIR} + # cache MOUNTS["/root/.cache"]=/data/.cache/ +# this is really just a hack to avoid migrations +rm -rf ${HF_HOME}/diffusers + # ui specific MOUNTS["${ROOT}/models/codeformer"]=/data/Codeformer/ - MOUNTS["${ROOT}/models/gfpgan/GFPGANv1.4.pth"]=/data/GFPGAN/GFPGANv1.4.pth -MOUNTS["${ROOT}/models/gfpgan/weights"]=/data/.cache/ - +MOUNTS["${ROOT}/models/gfpgan/weights"]=/data/GFPGAN/ MOUNTS["${ROOT}/models/realesrgan"]=/data/RealESRGAN/ -MOUNTS["${ROOT}/models/bert-base-uncased"]=/data/.cache/huggingface/transformers/ -MOUNTS["${ROOT}/models/openai/clip-vit-large-patch14"]=/data/.cache/huggingface/transformers/ -MOUNTS["${ROOT}/models/CompVis/stable-diffusion-safety-checker"]=/data/.cache/huggingface/transformers/ +MOUNTS["${ROOT}/models/ldm"]=/data/.cache/invoke/ldm/ MOUNTS["${ROOT}/embeddings"]=/data/embeddings/ # hacks -MOUNTS["${ROOT}/models/clipseg"]=/data/.cache/invoke/clipseg/ for to_path in "${!MOUNTS[@]}"; do set -Eeuo pipefail @@ -40,7 +40,8 @@ done if "${PRELOAD}" == "true"; then set -Eeuo pipefail - invokeai-configure --skip-sd-weights --root ${ROOT} --yes + invokeai-configure --root ${ROOT} --yes + cp ${ROOT}/configs/models.yaml ${CONFIG_DIR}/models.yaml fi exec "$@" diff --git a/services/invoke/models.yaml b/services/invoke/models.yaml deleted file mode 100644 index 0efe34e..0000000 --- a/services/invoke/models.yaml +++ /dev/null @@ -1,23 +0,0 @@ -# This file describes the alternative machine learning models -# available to InvokeAI script. -# -# To add a new model, follow the examples below. Each -# model requires a model config file, a weights file, -# and the width and height of the images it -# was trained on. -stable-diffusion-1.5: - description: Stable Diffusion version 1.5 - weights: /data/StableDiffusion/v1-5-pruned-emaonly.ckpt - vae: /data/VAE/vae-ft-mse-840000-ema-pruned.ckpt - config: ./invokeai/configs/stable-diffusion/v1-inference.yaml - width: 512 - height: 512 - default: true -inpainting-1.5: - description: RunwayML SD 1.5 model optimized for inpainting - weights: /data/StableDiffusion/sd-v1-5-inpainting.ckpt - vae: /data/VAE/vae-ft-mse-840000-ema-pruned.ckpt - config: ./invokeai/configs/stable-diffusion/v1-inpainting-inference.yaml - width: 512 - height: 512 - default: false From 2a0de025e2aece3d25178d2ade55065b82b54511 Mon Sep 17 00:00:00 2001 From: PassiveLemon Date: Fri, 21 Apr 2023 12:34:17 -0700 Subject: [PATCH 03/22] Support for ComfyUI (#384) As discussed in Discussion [#367](https://github.com/AbdBarho/stable-diffusion-webui-docker/discussions/367), this adds support for the newer ComfyUI. I forked the fork that would already add this but the maintainer of that fork hasn't implemented the changes needed to properly get the output function working, which I did. I believe everything is functional though I have not tested every single node. I changed the table format for the README and a few other minor things for aesthetic reasons but if you want me to revert those, I will. --------- Co-authored-by: Jonathan Kovacs Co-authored-by: AbdBarho --- .github/pull_request_template.md | 1 + .github/workflows/docker.yml | 1 + README.md | 9 ++++++ docker-compose.yml | 17 +++++++++++- services/comfy/Dockerfile | 44 ++++++++++++++++++++++++++++++ services/comfy/entrypoint.sh | 47 ++++++++++++++++++++++++++++++++ 6 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 services/comfy/Dockerfile create mode 100644 services/comfy/entrypoint.sh diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 241f11b..6fd8686 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -11,3 +11,4 @@ Closes issue # - auto: https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/ - sygil: https://github.com/Sygil-Dev/sygil-webui/commit/ - invoke: https://github.com/invoke-ai/InvokeAI/commit/ +- comfy: https://github.com/comfyanonymous/ComfyUI/commit/ diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 2c7645e..0955d69 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -16,6 +16,7 @@ jobs: - auto - sygil - invoke + - comfy - download runs-on: ubuntu-latest name: ${{ matrix.profile }} diff --git a/README.md b/README.md index eacb01d..78a1732 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,14 @@ This repository provides multiple UIs for you to play around with stable diffusi | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | | ![](https://user-images.githubusercontent.com/24505302/189541298-f902b021-a1eb-4e4b-b2eb-b6a696a8ec80.jpg) | ![](https://user-images.githubusercontent.com/24505302/189541295-7d7f2162-2189-4e0a-abbd-703f4779e1cd.jpg) | ![](https://user-images.githubusercontent.com/24505302/189541294-aa7f7735-a973-4e17-ada0-1fe3acbb1772.jpg) | +### [ComfyUI](https://github.com/comfyanonymous/ComfyUI) + +[Full feature list here](https://github.com/comfyanonymous/ComfyUI#features), Screenshot: + +| Workflow | +| -------------------------------------------------------------------------------- | +| ![](https://github.com/comfyanonymous/ComfyUI/raw/master/comfyui_screenshot.png) | + ## Contributing Contributions are welcome! **Create a discussion first of what the problem is and what you want to contribute (before you implement anything)** @@ -51,5 +59,6 @@ Special thanks to everyone behind these awesome projects, without them, none of - [AUTOMATIC1111/stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui) - [InvokeAI](https://github.com/invoke-ai/InvokeAI) - [Sygil-webui](https://github.com/Sygil-Dev/sygil-webui) +- [ComfyUI](https://github.com/comfyanonymous/ComfyUI) - [CompVis/stable-diffusion](https://github.com/CompVis/stable-diffusion) - and many many more. diff --git a/docker-compose.yml b/docker-compose.yml index 2d17b6c..3199435 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -48,7 +48,6 @@ services: - PRELOAD=true - CLI_ARGS=--no-nsfw_checker --no-safety_checker --xformers - sygil: &sygil <<: *base_service profiles: ["sygil"] @@ -63,3 +62,19 @@ services: profiles: ["sygil-sl"] environment: - USE_STREAMLIT=1 + + comfy: &comfy + <<: *base_service + profiles: ["comfy"] + build: ./services/comfy/ + image: sd-comfy:1 + environment: + - CLI_ARGS= + + + comfy-cpu: + <<: *comfy + profiles: ["comfy-cpu"] + deploy: {} + environment: + - CLI_ARGS=--cpu diff --git a/services/comfy/Dockerfile b/services/comfy/Dockerfile new file mode 100644 index 0000000..0df273f --- /dev/null +++ b/services/comfy/Dockerfile @@ -0,0 +1,44 @@ +FROM alpine:3.17 as xformers +RUN apk add --no-cache aria2 +RUN aria2c -x 5 --dir / --out wheel.whl 'https://github.com/AbdBarho/stable-diffusion-webui-docker/releases/download/5.0.0/xformers-0.0.17.dev449-cp310-cp310-manylinux2014_x86_64.whl' + + +FROM python:3.10.9-slim + +ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1 + +RUN --mount=type=cache,target=/root/.cache/pip pip install torch==1.13.1 torchvision --extra-index-url https://download.pytorch.org/whl/cu117 + +RUN apt-get update && apt-get install -y git && apt-get clean + +ENV ROOT=/stable-diffusion +RUN --mount=type=cache,target=/root/.cache/pip \ + git clone https://github.com/comfyanonymous/ComfyUI.git ${ROOT} && \ + cd ${ROOT} && \ + git checkout master && \ + git reset --hard 884ea653c8d6fe19b3724f45a04a0d74cd881f2f && \ + pip install -r requirements.txt + + +RUN --mount=type=cache,target=/root/.cache/pip \ + --mount=type=bind,from=xformers,source=/wheel.whl,target=/xformers-0.0.17-cp310-cp310-linux_x86_64.whl \ + pip install triton /xformers-0.0.17-cp310-cp310-linux_x86_64.whl + + +WORKDIR ${ROOT} + +ARG BRANCH=master SHA=884ea653c8d6fe19b3724f45a04a0d74cd881f2f +RUN --mount=type=cache,target=/root/.cache/pip \ + git fetch && \ + git checkout ${BRANCH} && \ + git reset --hard ${SHA} && \ + pip install -r requirements.txt + +# add info +COPY . /docker/ + +ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility NVIDIA_VISIBLE_DEVICES=all +ENV PYTHONPATH="${PYTHONPATH}:${PWD}" CLI_ARGS="" +EXPOSE 7860 +ENTRYPOINT ["/docker/entrypoint.sh"] +CMD python -u main.py --listen --port 7860 ${CLI_ARGS} diff --git a/services/comfy/entrypoint.sh b/services/comfy/entrypoint.sh new file mode 100644 index 0000000..5ffc6bc --- /dev/null +++ b/services/comfy/entrypoint.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +set -Eeuo pipefail + +declare -A MOUNTS + + +mkdir -vp /data/config/comfy/ + +# cache +MOUNTS["/root/.cache"]=/data/.cache +# ui specific +MOUNTS["${ROOT}/models/checkpoints"]="/data/StableDiffusion" +MOUNTS["${ROOT}/models/controlnet"]="/data/ControlNet" +MOUNTS["${ROOT}/models/upscale_models/RealESRGAN"]="/data/RealESRGAN" +MOUNTS["${ROOT}/models/upscale_models/GFPGAN"]="/data/GFPGAN" +MOUNTS["${ROOT}/models/upscale_models/SwinIR"]="/data/SwinIR" +MOUNTS["${ROOT}/models/vae"]="/data/VAE" + +# data +MOUNTS["${ROOT}/models/loras"]="/data/Lora" +MOUNTS["${ROOT}/models/embeddings"]="/data/embeddings" + +# config +# TODO: I am not sure if this is final, maybe it should change in the future +MOUNTS["${ROOT}/models/clip"]="/data/.cache/comfy/clip" +MOUNTS["${ROOT}/models/clip_vision"]="/data/.cache/comfy/clip_vision" +MOUNTS["${ROOT}/models/custom_nodes"]="/data/config/comfy/custom_nodes" +MOUNTS["${ROOT}/models/style_models"]="/data/config/comfy/style_models" +MOUNTS["${ROOT}/models/t2i_adapter"]="/data/config/comfy/t2i_adapter" + +# output +MOUNTS["${ROOT}/output"]="/output/comfy" + +for to_path in "${!MOUNTS[@]}"; do + set -Eeuo pipefail + from_path="${MOUNTS[${to_path}]}" + rm -rf "${to_path}" + if [ ! -f "$from_path" ]; then + mkdir -vp "$from_path" + fi + mkdir -vp "$(dirname "${to_path}")" + ln -sT "${from_path}" "${to_path}" + echo Mounted $(basename "${from_path}") +done + +exec "$@" From 076b5747d37620eae2a1211e1405c6d98bd57d14 Mon Sep 17 00:00:00 2001 From: LEv145 <40071054+LEv145@users.noreply.github.com> Date: Fri, 28 Apr 2023 15:42:12 +0200 Subject: [PATCH 04/22] Fix file permissions (#425) https://github.com/AbdBarho/stable-diffusion-webui-docker/issues/424 Co-authored-by: LEv145 --- services/comfy/entrypoint.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 services/comfy/entrypoint.sh diff --git a/services/comfy/entrypoint.sh b/services/comfy/entrypoint.sh old mode 100644 new mode 100755 From 445f3f8bac144adc2645eb68a8e6f0c22020627a Mon Sep 17 00:00:00 2001 From: divens Date: Fri, 28 Apr 2023 19:55:06 +0200 Subject: [PATCH 05/22] Add tty to comfy service (#429) Closes issue #428 Co-authored-by: Dylan Ivens <12586504+divens@users.noreply.github.com> --- docker-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docker-compose.yml b/docker-compose.yml index 3199435..fd89410 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -68,6 +68,7 @@ services: profiles: ["comfy"] build: ./services/comfy/ image: sd-comfy:1 + tty: true environment: - CLI_ARGS= From 7b8bc3d74ae33978e78324a6e00499d755db1902 Mon Sep 17 00:00:00 2001 From: AbdBarho Date: Thu, 4 May 2023 06:55:01 +0200 Subject: [PATCH 06/22] LyCORIS - ModelScope (#439) Follow up to #401 Closes #401 Closes #437 --------- Co-authored-by: svupper <56261963+svupper@users.noreply.github.com> Co-authored-by: Ubuntu --- data/.gitignore | 2 ++ docker-compose.yml | 2 +- services/AUTOMATIC1111/entrypoint.sh | 2 ++ services/download/download.sh | 2 +- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/data/.gitignore b/data/.gitignore index 5194313..9649426 100644 --- a/data/.gitignore +++ b/data/.gitignore @@ -22,3 +22,5 @@ /Lora /ControlNet /openpose +/ModelScope +/LyCORIS diff --git a/docker-compose.yml b/docker-compose.yml index fd89410..a577202 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -28,7 +28,7 @@ services: <<: *base_service profiles: ["auto"] build: ./services/AUTOMATIC1111 - image: sd-auto:51 + image: sd-auto:52 environment: - CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api diff --git a/services/AUTOMATIC1111/entrypoint.sh b/services/AUTOMATIC1111/entrypoint.sh index c6df995..dd96248 100755 --- a/services/AUTOMATIC1111/entrypoint.sh +++ b/services/AUTOMATIC1111/entrypoint.sh @@ -35,8 +35,10 @@ MOUNTS["${ROOT}/models/torch_deepdanbooru"]="/data/Deepdanbooru" MOUNTS["${ROOT}/models/BLIP"]="/data/BLIP" MOUNTS["${ROOT}/models/midas"]="/data/MiDaS" MOUNTS["${ROOT}/models/Lora"]="/data/Lora" +MOUNTS["${ROOT}/models/LyCORIS"]="/data/LyCORIS" MOUNTS["${ROOT}/models/ControlNet"]="/data/ControlNet" MOUNTS["${ROOT}/models/openpose"]="/data/openpose" +MOUNTS["${ROOT}/models/ModelScope"]="/data/ModelScope" MOUNTS["${ROOT}/embeddings"]="/data/embeddings" MOUNTS["${ROOT}/config.json"]="/data/config/auto/config.json" diff --git a/services/download/download.sh b/services/download/download.sh index 54176d0..91e39d9 100755 --- a/services/download/download.sh +++ b/services/download/download.sh @@ -3,7 +3,7 @@ set -Eeuo pipefail # TODO: maybe just use the .gitignore file to create all of these -mkdir -vp /data/.cache /data/StableDiffusion /data/Codeformer /data/GFPGAN /data/ESRGAN /data/BSRGAN /data/RealESRGAN /data/SwinIR /data/LDSR /data/ScuNET /data/embeddings /data/VAE /data/Deepdanbooru /data/MiDaS /data/Lora /data/ControlNet /data/openpose +mkdir -vp /data/.cache /data/StableDiffusion /data/LyCORIS /data/Codeformer /data/ModelScope /data/GFPGAN /data/ESRGAN /data/BSRGAN /data/RealESRGAN /data/SwinIR /data/LDSR /data/ScuNET /data/embeddings /data/VAE /data/Deepdanbooru /data/MiDaS /data/Lora /data/ControlNet /data/openpose echo "Downloading, this might take a while..." From 56b942237e93c113702598e90fe4058c869a220a Mon Sep 17 00:00:00 2001 From: AbdBarho Date: Thu, 4 May 2023 07:29:49 +0200 Subject: [PATCH 07/22] Update Auto (#379) Last version before pytorch 2 https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/5ab7f213bec2f816f9c5644becb32eb72c8ffb89 --- docker-compose.yml | 2 +- services/AUTOMATIC1111/Dockerfile | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index a577202..2853c5c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -28,7 +28,7 @@ services: <<: *base_service profiles: ["auto"] build: ./services/AUTOMATIC1111 - image: sd-auto:52 + image: sd-auto:53 environment: - CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api diff --git a/services/AUTOMATIC1111/Dockerfile b/services/AUTOMATIC1111/Dockerfile index a610d0c..19adbef 100644 --- a/services/AUTOMATIC1111/Dockerfile +++ b/services/AUTOMATIC1111/Dockerfile @@ -24,8 +24,9 @@ FROM python:3.10.9-slim ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1 -RUN --mount=type=cache,target=/root/.cache/pip \ - pip install torch==1.13.1+cu117 torchvision --extra-index-url https://download.pytorch.org/whl/cu117 +RUN --mount=type=cache,target=/root/.cache/pip pip install torch==1.13.1+cu117 torchvision --extra-index-url https://download.pytorch.org/whl/cu117 + +# RUN --mount=type=cache,target=/root/.cache/pip pip install torch==2.0.0+cu118 torchvision --extra-index-url https://download.pytorch.org/whl/cu117 RUN apt-get update && apt install fonts-dejavu-core rsync git jq moreutils -y && apt-get clean @@ -61,7 +62,7 @@ RUN --mount=type=cache,target=/root/.cache/pip \ RUN apt-get -y install libgoogle-perftools-dev && apt-get clean ENV LD_PRELOAD=libtcmalloc.so -ARG SHA=a9fed7c364061ae6efb37f797b6b522cb3cf7aa2 +ARG SHA=5ab7f213bec2f816f9c5644becb32eb72c8ffb89 RUN --mount=type=cache,target=/root/.cache/pip \ cd stable-diffusion-webui && \ git fetch && \ @@ -76,7 +77,8 @@ RUN \ python3 /docker/info.py ${ROOT}/modules/ui.py && \ mv ${ROOT}/style.css ${ROOT}/user.css && \ # one of the ugliest hacks I ever wrote \ - sed -i 's/in_app_dir = .*/in_app_dir = True/g' /usr/local/lib/python3.10/site-packages/gradio/routes.py + sed -i 's/in_app_dir = .*/in_app_dir = True/g' /usr/local/lib/python3.10/site-packages/gradio/routes.py && \ + git config --global --add safe.directory '*' WORKDIR ${ROOT} ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility From 2efaeb41cdcfddd17a86db096a26a57b971de32e Mon Sep 17 00:00:00 2001 From: AbdBarho Date: Thu, 4 May 2023 07:48:19 +0200 Subject: [PATCH 08/22] Add styles.csv support (#440) Follow up to #386 after https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/9334 has been merged. Closes #435 --- docker-compose.yml | 2 +- services/AUTOMATIC1111/entrypoint.sh | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 2853c5c..e6750be 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -28,7 +28,7 @@ services: <<: *base_service profiles: ["auto"] build: ./services/AUTOMATIC1111 - image: sd-auto:53 + image: sd-auto:54 environment: - CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api diff --git a/services/AUTOMATIC1111/entrypoint.sh b/services/AUTOMATIC1111/entrypoint.sh index dd96248..5f9e243 100755 --- a/services/AUTOMATIC1111/entrypoint.sh +++ b/services/AUTOMATIC1111/entrypoint.sh @@ -15,6 +15,10 @@ if [ ! -f /data/config/auto/ui-config.json ]; then echo '{}' >/data/config/auto/ui-config.json fi +if [ ! -f /data/config/auto/styles.csv ]; then + touch /data/config/auto/styles.csv +fi + declare -A MOUNTS MOUNTS["/root/.cache"]="/data/.cache" @@ -43,6 +47,7 @@ MOUNTS["${ROOT}/models/ModelScope"]="/data/ModelScope" MOUNTS["${ROOT}/embeddings"]="/data/embeddings" MOUNTS["${ROOT}/config.json"]="/data/config/auto/config.json" MOUNTS["${ROOT}/ui-config.json"]="/data/config/auto/ui-config.json" +MOUNTS["${ROOT}/styles.csv"]="/data/config/auto/styles.csv" MOUNTS["${ROOT}/extensions"]="/data/config/auto/extensions" # extra hacks From 0e5801e9d6c181a6e6535604698bc724799b104d Mon Sep 17 00:00:00 2001 From: AbdBarho Date: Thu, 4 May 2023 22:41:51 +0200 Subject: [PATCH 09/22] Update auto to pytorch 2 (#442) Closes #410 --- docker-compose.yml | 2 +- services/AUTOMATIC1111/Dockerfile | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index e6750be..68cb4b1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -28,7 +28,7 @@ services: <<: *base_service profiles: ["auto"] build: ./services/AUTOMATIC1111 - image: sd-auto:54 + image: sd-auto:55 environment: - CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api diff --git a/services/AUTOMATIC1111/Dockerfile b/services/AUTOMATIC1111/Dockerfile index 19adbef..580dea1 100644 --- a/services/AUTOMATIC1111/Dockerfile +++ b/services/AUTOMATIC1111/Dockerfile @@ -18,17 +18,20 @@ RUN . /clone.sh clip-interrogator https://github.com/pharmapsychotic/clip-interr FROM alpine:3.17 as xformers RUN apk add --no-cache aria2 -RUN aria2c -x 5 --dir / --out wheel.whl 'https://github.com/AbdBarho/stable-diffusion-webui-docker/releases/download/5.0.0/xformers-0.0.17.dev449-cp310-cp310-manylinux2014_x86_64.whl' +RUN aria2c -x 5 --dir / --out wheel.whl 'https://github.com/AbdBarho/stable-diffusion-webui-docker/releases/download/5.0.3/xformers-0.0.20.dev528-cp310-cp310-manylinux2014_x86_64-pytorch2.whl' + FROM python:3.10.9-slim ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1 -RUN --mount=type=cache,target=/root/.cache/pip pip install torch==1.13.1+cu117 torchvision --extra-index-url https://download.pytorch.org/whl/cu117 +RUN apt-get update && apt install fonts-dejavu-core rsync git jq moreutils aria2 -y && apt-get clean -# RUN --mount=type=cache,target=/root/.cache/pip pip install torch==2.0.0+cu118 torchvision --extra-index-url https://download.pytorch.org/whl/cu117 +RUN --mount=type=cache,target=/cache --mount=type=cache,target=/root/.cache/pip \ + aria2c -x 5 --dir /cache --out torch-2.0.0-cp310-cp310-linux_x86_64.whl -c \ + https://download.pytorch.org/whl/cu118/torch-2.0.0%2Bcu118-cp310-cp310-linux_x86_64.whl && \ + pip install /cache/torch-2.0.0-cp310-cp310-linux_x86_64.whl torchvision --index-url https://download.pytorch.org/whl/cu118 -RUN apt-get update && apt install fonts-dejavu-core rsync git jq moreutils -y && apt-get clean RUN --mount=type=cache,target=/root/.cache/pip \ @@ -38,8 +41,8 @@ RUN --mount=type=cache,target=/root/.cache/pip \ pip install -r requirements_versions.txt RUN --mount=type=cache,target=/root/.cache/pip \ - --mount=type=bind,from=xformers,source=/wheel.whl,target=/xformers-0.0.15-cp310-cp310-linux_x86_64.whl \ - pip install triton /xformers-0.0.15-cp310-cp310-linux_x86_64.whl + --mount=type=bind,from=xformers,source=/wheel.whl,target=/xformers-0.0.20.dev528-cp310-cp310-manylinux2014_x86_64.whl \ + pip install /xformers-0.0.20.dev528-cp310-cp310-manylinux2014_x86_64.whl ENV ROOT=/stable-diffusion-webui From 36f39043ded164e29901d2b075c2851b32fb2b3d Mon Sep 17 00:00:00 2001 From: AbdBarho Date: Thu, 4 May 2023 22:54:37 +0200 Subject: [PATCH 10/22] Only run if changed (#444) --- .github/workflows/docker.yml | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 0955d69..448a65c 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -4,9 +4,9 @@ on: push: branches: master pull_request: - paths: - - docker-compose.yml - - services + paths: + - docker-compose.yml + - services jobs: build: @@ -22,4 +22,18 @@ jobs: name: ${{ matrix.profile }} steps: - uses: actions/checkout@v3 + - uses: dorny/paths-filter@v2 + id: changes + with: + filters: | + auto: + - 'services/auto/**' + sygil: + - 'services/sygil/**' + invoke: + - 'services/invoke/**' + comfy: + - 'services/comfy/**' + - run: docker compose --profile ${{ matrix.profile }} build --progress plain + if: github.ref == 'refs/heads/master' || steps.changes.outputs.${{ matrix.profile }} == 'true' From a68734c9f9f50becf264a4dd6028fa096579dc1a Mon Sep 17 00:00:00 2001 From: AbdBarho Date: Thu, 4 May 2023 23:00:46 +0200 Subject: [PATCH 11/22] Revert "Only run if changed (#444)" This reverts commit 36f39043ded164e29901d2b075c2851b32fb2b3d. --- .github/workflows/docker.yml | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 448a65c..0955d69 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -4,9 +4,9 @@ on: push: branches: master pull_request: - paths: - - docker-compose.yml - - services + paths: + - docker-compose.yml + - services jobs: build: @@ -22,18 +22,4 @@ jobs: name: ${{ matrix.profile }} steps: - uses: actions/checkout@v3 - - uses: dorny/paths-filter@v2 - id: changes - with: - filters: | - auto: - - 'services/auto/**' - sygil: - - 'services/sygil/**' - invoke: - - 'services/invoke/**' - comfy: - - 'services/comfy/**' - - run: docker compose --profile ${{ matrix.profile }} build --progress plain - if: github.ref == 'refs/heads/master' || steps.changes.outputs.${{ matrix.profile }} == 'true' From 9ac33db795c8f3626eac98b6aa5f5d3b02def2bc Mon Sep 17 00:00:00 2001 From: Mat Date: Sat, 6 May 2023 07:38:36 +0200 Subject: [PATCH 12/22] Fix overwriting existing values in config.json in auto (#418) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `jq` merge direction in this case is right to left so if the user had set up custom paths it would replace them with the default ones. This PR switches the direction to use the defaults as fallback instead of overwriting user settings. ---- Didn't want to create an issue for the tiny change. Thanks for your work on the repo, it saved me a lot of time, 👍 --------- Co-authored-by: AbdBarho --- .gitignore | 4 ++ services/AUTOMATIC1111/config.json | 10 ---- services/AUTOMATIC1111/config.py | 78 ++++++++++++++++++++++++++++ services/AUTOMATIC1111/entrypoint.sh | 4 +- 4 files changed, 84 insertions(+), 12 deletions(-) delete mode 100644 services/AUTOMATIC1111/config.json create mode 100644 services/AUTOMATIC1111/config.py diff --git a/.gitignore b/.gitignore index f64b472..2a011a1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,6 @@ /.devcontainer /docker-compose.override.yml + +# VSCode specific +*.code-workspace +/.vscode diff --git a/services/AUTOMATIC1111/config.json b/services/AUTOMATIC1111/config.json deleted file mode 100644 index 7fff2b7..0000000 --- a/services/AUTOMATIC1111/config.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "outdir_samples": "", - "outdir_txt2img_samples": "/output/txt2img", - "outdir_img2img_samples": "/output/img2img", - "outdir_extras_samples": "/output/extras", - "outdir_txt2img_grids": "/output/txt2img-grids", - "outdir_img2img_grids": "/output/img2img-grids", - "outdir_save": "/output/saved", - "font": "DejaVuSans.ttf" -} diff --git a/services/AUTOMATIC1111/config.py b/services/AUTOMATIC1111/config.py new file mode 100644 index 0000000..b8d699e --- /dev/null +++ b/services/AUTOMATIC1111/config.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python3 + +"""Checks and sets default values for config.json before starting the container.""" + +import json +import re +import os.path +import sys + +DEFAULT_FILEPATH = '/data/config/auto/config.json' + +DEFAULT_OUTDIRS = { + "outdir_samples": "", + "outdir_txt2img_samples": "/output/txt2img", + "outdir_img2img_samples": "/output/img2img", + "outdir_extras_samples": "/output/extras", + "outdir_grids": "", + "outdir_txt2img_grids": "/output/txt2img-grids", + "outdir_img2img_grids": "/output/img2img-grids", + "outdir_save": "/output/saved", + "outdir_init_images": "/output/init-images", +} +RE_VALID_OUTDIR = re.compile(r"(^/output(/\.?[\w\-\_]+)+/?$)|(^\s?$)") + +DEFAULT_OTHER = { + "font": "DejaVuSans.ttf", +} + +def dict_to_json_file(target_file: str, data: dict): + """Write dictionary to specified json file""" + + with open(target_file, 'w') as f: + json.dump(data, f) + +def json_file_to_dict(config_file: str) -> dict|None: + """Load json file into a dictionary. Return None if file does not exist.""" + + if os.path.isfile(config_file): + with open(config_file, 'r') as f: + return json.load(f) + else: + return None + +def replace_if_invalid(value: str, replacement: str, pattern: str|re.Pattern[str]) -> str: + """Returns original value if valid, fallback value if invalid""" + + if re.match(pattern, value): + return value + else: + return replacement + +def check_and_replace_config(config_file: str, target_file: str = None): + """Checks given file for invalid values. Replaces those with fallback values (default: overwrites file).""" + + # Get current user config, or empty if file does not exists + data = json_file_to_dict(config_file) or {} + + # Check and fix output directories + for k, def_val in DEFAULT_OUTDIRS.items(): + if k not in data: + data[k] = def_val + else: + data[k] = replace_if_invalid(value=data[k], replacement=def_val, pattern=RE_VALID_OUTDIR) + + # Check and fix other default settings + for k, def_val in DEFAULT_OTHER.items(): + if k not in data: + data[k] = def_val + + # Write results to file + dict_to_json_file(target_file or config_file, data) + +if __name__ == '__main__': + if len(sys.argv) > 1: + check_and_replace_config(*sys.argv[1:]) + else: + check_and_replace_config(DEFAULT_FILEPATH) + diff --git a/services/AUTOMATIC1111/entrypoint.sh b/services/AUTOMATIC1111/entrypoint.sh index 5f9e243..54e709c 100755 --- a/services/AUTOMATIC1111/entrypoint.sh +++ b/services/AUTOMATIC1111/entrypoint.sh @@ -8,8 +8,8 @@ mkdir -p /data/config/auto/scripts/ find "${ROOT}/scripts/" -maxdepth 1 -type l -delete cp -vrfTs /data/config/auto/scripts/ "${ROOT}/scripts/" -cp -n /docker/config.json /data/config/auto/config.json -jq '. * input' /data/config/auto/config.json /docker/config.json | sponge /data/config/auto/config.json +# Set up config file +python /docker/config.py /data/config/auto/config.json if [ ! -f /data/config/auto/ui-config.json ]; then echo '{}' >/data/config/auto/ui-config.json From 7fb8b97b90aa7fd849c7d59eeed5a43e875af67a Mon Sep 17 00:00:00 2001 From: AbdBarho Date: Sat, 6 May 2023 09:48:38 +0200 Subject: [PATCH 13/22] Invoke 2.3.5 (#449) https://github.com/invoke-ai/InvokeAI/commit/d73f1c363c3f2fe00f14ed34e276b4366b32a886 --- docker-compose.yml | 13 ++++++++++--- services/invoke/Dockerfile | 19 ++++++++++--------- services/invoke/entrypoint.sh | 4 +--- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 68cb4b1..711cee8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -39,14 +39,21 @@ services: environment: - CLI_ARGS=--no-half --precision full --allow-code --enable-insecure-extension-access --api - invoke: + invoke: &invoke <<: *base_service profiles: ["invoke"] build: ./services/invoke/ - image: sd-invoke:27 + image: sd-invoke:28 environment: - PRELOAD=true - - CLI_ARGS=--no-nsfw_checker --no-safety_checker --xformers + - CLI_ARGS=--xformers + + # invoke-cpu: + # <<: *invoke + # profiles: ["invoke-cpu"] + # environment: + # - PRELOAD=true + # - CLI_ARGS=--always_use_cpu sygil: &sygil <<: *base_service diff --git a/services/invoke/Dockerfile b/services/invoke/Dockerfile index 514d525..5568ac0 100644 --- a/services/invoke/Dockerfile +++ b/services/invoke/Dockerfile @@ -1,6 +1,6 @@ FROM alpine:3.17 as xformers RUN apk add --no-cache aria2 -RUN aria2c -x 5 --dir / --out wheel.whl 'https://github.com/AbdBarho/stable-diffusion-webui-docker/releases/download/5.0.0/xformers-0.0.17.dev449-cp310-cp310-manylinux2014_x86_64.whl' +RUN aria2c -x 5 --dir / --out wheel.whl 'https://github.com/AbdBarho/stable-diffusion-webui-docker/releases/download/5.0.3/xformers-0.0.20.dev528-cp310-cp310-manylinux2014_x86_64-pytorch1.13.whl' @@ -22,27 +22,26 @@ RUN --mount=type=cache,target=/var/cache/apt \ ln -sf opencv4.pc opencv.pc - ENV ROOT=/InvokeAI RUN git clone https://github.com/invoke-ai/InvokeAI.git ${ROOT} WORKDIR ${ROOT} RUN --mount=type=cache,target=/root/.cache/pip \ git reset --hard 4463124bddd221c333d4c70e73aa2949ad35453d && \ - pip install . + pip install -e . -ARG BRANCH=main SHA=50eb02f68be912276a9c106d5e8038a5671a0386 +ARG BRANCH=main SHA=d73f1c363c3f2fe00f14ed34e276b4366b32a886 RUN --mount=type=cache,target=/root/.cache/pip \ git fetch && \ git reset --hard && \ git checkout ${BRANCH} && \ git reset --hard ${SHA} && \ - pip install -U . + pip install -U -e . RUN --mount=type=cache,target=/root/.cache/pip \ - --mount=type=bind,from=xformers,source=/wheel.whl,target=/xformers-0.0.17-cp310-cp310-linux_x86_64.whl \ - pip install -U opencv-python-headless triton /xformers-0.0.17-cp310-cp310-linux_x86_64.whl && \ + --mount=type=bind,from=xformers,source=/wheel.whl,target=/xformers-0.0.20-cp310-cp310-linux_x86_64.whl \ + pip install -U opencv-python-headless triton /xformers-0.0.20-cp310-cp310-linux_x86_64.whl && \ python3 -c "from patchmatch import patch_match" @@ -54,5 +53,7 @@ ENV PYTHONUNBUFFERED=1 PRELOAD=false HF_HOME=/root/.cache/huggingface CONFIG_DIR EXPOSE 7860 ENTRYPOINT ["/docker/entrypoint.sh"] -CMD invokeai --web --host 0.0.0.0 --port 7860 --root_dir ${ROOT} --config ${CONFIG_DIR}/models.yaml --outdir /output/invoke ${CLI_ARGS} -# TODO: make sure the config is persisted between sessions +CMD invokeai --web --host 0.0.0.0 --port 7860 --root_dir ${ROOT} --config ${CONFIG_DIR}/models.yaml \ + --outdir /output/invoke --embedding_directory /data/embeddings/ --lora_directory /data/Lora \ + --no-nsfw_checker --no-safety_checker ${CLI_ARGS} + diff --git a/services/invoke/entrypoint.sh b/services/invoke/entrypoint.sh index 3594c85..b137c45 100755 --- a/services/invoke/entrypoint.sh +++ b/services/invoke/entrypoint.sh @@ -4,7 +4,7 @@ set -Eeuo pipefail declare -A MOUNTS -mkdir -p ${CONFIG_DIR} +mkdir -p ${CONFIG_DIR} ${ROOT}/configs/stable-diffusion/ # cache MOUNTS["/root/.cache"]=/data/.cache/ @@ -20,8 +20,6 @@ MOUNTS["${ROOT}/models/realesrgan"]=/data/RealESRGAN/ MOUNTS["${ROOT}/models/ldm"]=/data/.cache/invoke/ldm/ -MOUNTS["${ROOT}/embeddings"]=/data/embeddings/ - # hacks for to_path in "${!MOUNTS[@]}"; do From d47e77f19c82411d0e1a32f6926c94478bdd1eea Mon Sep 17 00:00:00 2001 From: LEv145 <40071054+LEv145@users.noreply.github.com> Date: Sun, 7 May 2023 11:11:30 +0200 Subject: [PATCH 14/22] Update/fix mounts for comfyUI (#432) I updated the paths to make all paths work Now paths in ComfyUI are working Added: - `input` - `models/configs` - `models/gligen` - `models/diffusers` - `models/hypernetworks` Was broken: - `custom_nodes` - `models/clip_vision` - `models/clip` --------- Co-authored-by: LEv145 Co-authored-by: AbdBarho --- data/.gitignore | 1 + services/comfy/Dockerfile | 1 + services/comfy/entrypoint.sh | 28 +++------------------------ services/comfy/extra_model_paths.yaml | 24 +++++++++++++++++++++++ services/download/download.sh | 2 +- 5 files changed, 30 insertions(+), 26 deletions(-) create mode 100644 services/comfy/extra_model_paths.yaml diff --git a/data/.gitignore b/data/.gitignore index 9649426..3bb809d 100644 --- a/data/.gitignore +++ b/data/.gitignore @@ -24,3 +24,4 @@ /openpose /ModelScope /LyCORIS +/GLIGEN diff --git a/services/comfy/Dockerfile b/services/comfy/Dockerfile index 0df273f..ac0556f 100644 --- a/services/comfy/Dockerfile +++ b/services/comfy/Dockerfile @@ -36,6 +36,7 @@ RUN --mount=type=cache,target=/root/.cache/pip \ # add info COPY . /docker/ +RUN cp /docker/extra_model_paths.yaml ${ROOT} ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility NVIDIA_VISIBLE_DEVICES=all ENV PYTHONPATH="${PYTHONPATH}:${PWD}" CLI_ARGS="" diff --git a/services/comfy/entrypoint.sh b/services/comfy/entrypoint.sh index 5ffc6bc..f9faf7c 100755 --- a/services/comfy/entrypoint.sh +++ b/services/comfy/entrypoint.sh @@ -2,34 +2,12 @@ set -Eeuo pipefail -declare -A MOUNTS - - mkdir -vp /data/config/comfy/ -# cache -MOUNTS["/root/.cache"]=/data/.cache -# ui specific -MOUNTS["${ROOT}/models/checkpoints"]="/data/StableDiffusion" -MOUNTS["${ROOT}/models/controlnet"]="/data/ControlNet" -MOUNTS["${ROOT}/models/upscale_models/RealESRGAN"]="/data/RealESRGAN" -MOUNTS["${ROOT}/models/upscale_models/GFPGAN"]="/data/GFPGAN" -MOUNTS["${ROOT}/models/upscale_models/SwinIR"]="/data/SwinIR" -MOUNTS["${ROOT}/models/vae"]="/data/VAE" +declare -A MOUNTS -# data -MOUNTS["${ROOT}/models/loras"]="/data/Lora" -MOUNTS["${ROOT}/models/embeddings"]="/data/embeddings" - -# config -# TODO: I am not sure if this is final, maybe it should change in the future -MOUNTS["${ROOT}/models/clip"]="/data/.cache/comfy/clip" -MOUNTS["${ROOT}/models/clip_vision"]="/data/.cache/comfy/clip_vision" -MOUNTS["${ROOT}/models/custom_nodes"]="/data/config/comfy/custom_nodes" -MOUNTS["${ROOT}/models/style_models"]="/data/config/comfy/style_models" -MOUNTS["${ROOT}/models/t2i_adapter"]="/data/config/comfy/t2i_adapter" - -# output +MOUNTS["/root/.cache"]="/data/.cache" +MOUNTS["${ROOT}/input"]="/data/config/comfy/input" MOUNTS["${ROOT}/output"]="/output/comfy" for to_path in "${!MOUNTS[@]}"; do diff --git a/services/comfy/extra_model_paths.yaml b/services/comfy/extra_model_paths.yaml new file mode 100644 index 0000000..ba27ae2 --- /dev/null +++ b/services/comfy/extra_model_paths.yaml @@ -0,0 +1,24 @@ +a111: + base_path: /data + + checkpoints: StableDiffusion + configs: StableDiffusion + vae: VAE + loras: Lora + upscale_models: | + RealESRGAN + ESRGAN + SwinIR + GFPGAN + embeddings: embeddings + hypernetworks: Hypernetworks + controlnet: ControlNet + gligen: GLIGEN + custom_nodes: config/comfy/custom_nodes + + # TODO: I am unsure about these, need more testing + # clip: .cache/clip + # style_models: config/comfy/style_models + # t2i_adapter: config/comfy/t2i_adapter + # clip_vision: config/comfy/clip_vision + # diffusers: config/comfy/diffusers diff --git a/services/download/download.sh b/services/download/download.sh index 91e39d9..03835ac 100755 --- a/services/download/download.sh +++ b/services/download/download.sh @@ -3,7 +3,7 @@ set -Eeuo pipefail # TODO: maybe just use the .gitignore file to create all of these -mkdir -vp /data/.cache /data/StableDiffusion /data/LyCORIS /data/Codeformer /data/ModelScope /data/GFPGAN /data/ESRGAN /data/BSRGAN /data/RealESRGAN /data/SwinIR /data/LDSR /data/ScuNET /data/embeddings /data/VAE /data/Deepdanbooru /data/MiDaS /data/Lora /data/ControlNet /data/openpose +mkdir -vp /data/.cache /data/StableDiffusion /data/LyCORIS /data/Codeformer /data/ModelScope /data/GFPGAN /data/ESRGAN /data/BSRGAN /data/RealESRGAN /data/SwinIR /data/LDSR /data/ScuNET /data/embeddings /data/VAE /data/Deepdanbooru /data/MiDaS /data/Lora /data/ControlNet /data/openpose /data/GLIGEN echo "Downloading, this might take a while..." From c836f419219811a60007757b1ba7af9e87a8882a Mon Sep 17 00:00:00 2001 From: AbdBarho Date: Mon, 8 May 2023 19:29:38 +0200 Subject: [PATCH 15/22] Add ClipEncoder (#458) https://github.com/AbdBarho/stable-diffusion-webui-docker/pull/432#issuecomment-1537380951 --- data/.gitignore | 1 + docker-compose.yml | 2 +- services/comfy/extra_model_paths.yaml | 3 ++- services/download/download.sh | 22 +++++++++++++++++++++- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/data/.gitignore b/data/.gitignore index 3bb809d..90e640d 100644 --- a/data/.gitignore +++ b/data/.gitignore @@ -25,3 +25,4 @@ /ModelScope /LyCORIS /GLIGEN +/CLIPEncoder diff --git a/docker-compose.yml b/docker-compose.yml index 711cee8..a42425d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -74,7 +74,7 @@ services: <<: *base_service profiles: ["comfy"] build: ./services/comfy/ - image: sd-comfy:1 + image: sd-comfy:2 tty: true environment: - CLI_ARGS= diff --git a/services/comfy/extra_model_paths.yaml b/services/comfy/extra_model_paths.yaml index ba27ae2..d16dfef 100644 --- a/services/comfy/extra_model_paths.yaml +++ b/services/comfy/extra_model_paths.yaml @@ -14,10 +14,11 @@ a111: hypernetworks: Hypernetworks controlnet: ControlNet gligen: GLIGEN + clip: CLIPEncoder + custom_nodes: config/comfy/custom_nodes # TODO: I am unsure about these, need more testing - # clip: .cache/clip # style_models: config/comfy/style_models # t2i_adapter: config/comfy/t2i_adapter # clip_vision: config/comfy/clip_vision diff --git a/services/download/download.sh b/services/download/download.sh index 03835ac..68ea540 100755 --- a/services/download/download.sh +++ b/services/download/download.sh @@ -3,7 +3,27 @@ set -Eeuo pipefail # TODO: maybe just use the .gitignore file to create all of these -mkdir -vp /data/.cache /data/StableDiffusion /data/LyCORIS /data/Codeformer /data/ModelScope /data/GFPGAN /data/ESRGAN /data/BSRGAN /data/RealESRGAN /data/SwinIR /data/LDSR /data/ScuNET /data/embeddings /data/VAE /data/Deepdanbooru /data/MiDaS /data/Lora /data/ControlNet /data/openpose /data/GLIGEN +mkdir -vp /data/.cache \ + /data/StableDiffusion \ + /data/LyCORIS \ + /data/Codeformer \ + /data/ModelScope \ + /data/GFPGAN \ + /data/ESRGAN \ + /data/BSRGAN \ + /data/RealESRGAN \ + /data/SwinIR \ + /data/LDSR \ + /data/ScuNET \ + /data/embeddings \ + /data/VAE \ + /data/Deepdanbooru \ + /data/MiDaS \ + /data/Lora \ + /data/ControlNet \ + /data/openpose \ + /data/GLIGEN \ + /data/CLIPEncoder # this is different from the cached pre-train ViT saved in /data/.cache/clip TODO: find out how echo "Downloading, this might take a while..." From 71f4abb2dbf233cd78a1ba32187310adb193cb88 Mon Sep 17 00:00:00 2001 From: AbdBarho Date: Wed, 10 May 2023 07:32:58 +0200 Subject: [PATCH 16/22] Create custom_nodes dir (#461) Closes #460 --- services/comfy/entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/comfy/entrypoint.sh b/services/comfy/entrypoint.sh index f9faf7c..f5a7430 100755 --- a/services/comfy/entrypoint.sh +++ b/services/comfy/entrypoint.sh @@ -2,7 +2,7 @@ set -Eeuo pipefail -mkdir -vp /data/config/comfy/ +mkdir -vp /data/config/comfy/custom_nodes declare -A MOUNTS From 87b1509dc2b86ec1aa413d8b03dd7b6d0cccb2a6 Mon Sep 17 00:00:00 2001 From: AbdBarho Date: Tue, 16 May 2023 18:56:36 +0200 Subject: [PATCH 17/22] Update Auto to 1.2.1 (#466) https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/89f9faa63388756314e8a1d96cf86bf5e0663045 Fix #448 --- docker-compose.yml | 2 +- services/AUTOMATIC1111/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index a42425d..6053a37 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -28,7 +28,7 @@ services: <<: *base_service profiles: ["auto"] build: ./services/AUTOMATIC1111 - image: sd-auto:55 + image: sd-auto:56 environment: - CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api diff --git a/services/AUTOMATIC1111/Dockerfile b/services/AUTOMATIC1111/Dockerfile index 580dea1..c387e4e 100644 --- a/services/AUTOMATIC1111/Dockerfile +++ b/services/AUTOMATIC1111/Dockerfile @@ -65,7 +65,7 @@ RUN --mount=type=cache,target=/root/.cache/pip \ RUN apt-get -y install libgoogle-perftools-dev && apt-get clean ENV LD_PRELOAD=libtcmalloc.so -ARG SHA=5ab7f213bec2f816f9c5644becb32eb72c8ffb89 +ARG SHA=89f9faa63388756314e8a1d96cf86bf5e0663045 RUN --mount=type=cache,target=/root/.cache/pip \ cd stable-diffusion-webui && \ git fetch && \ From 110627415deb90d5141dd068afaca206d4bb6339 Mon Sep 17 00:00:00 2001 From: AbdBarho Date: Tue, 16 May 2023 18:58:52 +0200 Subject: [PATCH 18/22] Deprecate Sygil (#450) It has been a long and wonderful journey --- .github/workflows/docker.yml | 1 - README.md | 10 +----- docker-compose.yml | 15 --------- services/sygil/Dockerfile | 40 ------------------------ services/sygil/info.py | 13 -------- services/sygil/mount.sh | 32 ------------------- services/sygil/run.sh | 10 ------ services/sygil/userconfig_streamlit.yaml | 11 ------- 8 files changed, 1 insertion(+), 131 deletions(-) delete mode 100644 services/sygil/Dockerfile delete mode 100644 services/sygil/info.py delete mode 100755 services/sygil/mount.sh delete mode 100755 services/sygil/run.sh delete mode 100644 services/sygil/userconfig_streamlit.yaml diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 0955d69..8bb5799 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -14,7 +14,6 @@ jobs: matrix: profile: - auto - - sygil - invoke - comfy - download diff --git a/README.md b/README.md index 78a1732..659d510 100644 --- a/README.md +++ b/README.md @@ -26,14 +26,6 @@ This repository provides multiple UIs for you to play around with stable diffusi | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | | ![](https://user-images.githubusercontent.com/24505302/195158552-39f58cb6-cfcc-4141-9995-a626e3760752.jpg) | ![](https://user-images.githubusercontent.com/24505302/195158553-152a0ab8-c0fd-4087-b121-4823bcd8d6b5.jpg) | ![](https://user-images.githubusercontent.com/24505302/195158548-e118206e-c519-4915-85d6-4c248eb10fc0.jpg) | -### [Sygil (sd-webui / hlky)](https://github.com/Sygil-Dev/sygil-webui) - -[Full feature list here](https://github.com/Sygil-Dev/sygil-webui/blob/master/README.md), Screenshots: - -| Text to image | Image to image | Image Lab | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| ![](https://user-images.githubusercontent.com/24505302/189541298-f902b021-a1eb-4e4b-b2eb-b6a696a8ec80.jpg) | ![](https://user-images.githubusercontent.com/24505302/189541295-7d7f2162-2189-4e0a-abbd-703f4779e1cd.jpg) | ![](https://user-images.githubusercontent.com/24505302/189541294-aa7f7735-a973-4e17-ada0-1fe3acbb1772.jpg) | - ### [ComfyUI](https://github.com/comfyanonymous/ComfyUI) [Full feature list here](https://github.com/comfyanonymous/ComfyUI#features), Screenshot: @@ -58,7 +50,7 @@ Special thanks to everyone behind these awesome projects, without them, none of - [AUTOMATIC1111/stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui) - [InvokeAI](https://github.com/invoke-ai/InvokeAI) -- [Sygil-webui](https://github.com/Sygil-Dev/sygil-webui) - [ComfyUI](https://github.com/comfyanonymous/ComfyUI) - [CompVis/stable-diffusion](https://github.com/CompVis/stable-diffusion) +- [Sygil-webui](https://github.com/Sygil-Dev/sygil-webui) - and many many more. diff --git a/docker-compose.yml b/docker-compose.yml index 6053a37..f7567ee 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -55,21 +55,6 @@ services: # - PRELOAD=true # - CLI_ARGS=--always_use_cpu - sygil: &sygil - <<: *base_service - profiles: ["sygil"] - build: ./services/sygil/ - image: sd-sygil:16 - environment: - - CLI_ARGS=--optimized-turbo - - USE_STREAMLIT=0 - - sygil-sl: - <<: *sygil - profiles: ["sygil-sl"] - environment: - - USE_STREAMLIT=1 - comfy: &comfy <<: *base_service profiles: ["comfy"] diff --git a/services/sygil/Dockerfile b/services/sygil/Dockerfile deleted file mode 100644 index 7ed2b5e..0000000 --- a/services/sygil/Dockerfile +++ /dev/null @@ -1,40 +0,0 @@ -FROM python:3.8-slim - -ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1 - -RUN --mount=type=cache,target=/root/.cache/pip pip install torch==1.13.0 torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117 - -RUN apt-get update && apt install gcc libsndfile1 ffmpeg build-essential zip unzip git -y && apt-get clean - -RUN --mount=type=cache,target=/root/.cache/pip \ - git config --global http.postBuffer 1048576000 && \ - git clone https://github.com/Sygil-Dev/sygil-webui.git stable-diffusion && \ - cd stable-diffusion && \ - git reset --hard 5291437085bddd16d752f811b6552419a2044d12 && \ - pip install -r requirements.txt - - -ARG BRANCH=master SHA=571fb897edd58b714bb385dfaa1ad59aecef8bc7 -RUN --mount=type=cache,target=/root/.cache/pip \ - cd stable-diffusion && \ - git fetch && \ - git checkout ${BRANCH} && \ - git reset --hard ${SHA} && \ - pip install -r requirements.txt - -RUN --mount=type=cache,target=/root/.cache/pip pip install -U 'transformers>=4.24' - -# add info -COPY . /docker/ -RUN python /docker/info.py /stable-diffusion/frontend/frontend.py && \ - chmod +x /docker/mount.sh /docker/run.sh && \ - # streamlit \ - sed -i -- 's/8501/7860/g' /stable-diffusion/.streamlit/config.toml - -WORKDIR /stable-diffusion -ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility -ENV NVIDIA_VISIBLE_DEVICES=all -ENV PYTHONPATH="${PYTHONPATH}:${PWD}" STREAMLIT_SERVER_HEADLESS=true USE_STREAMLIT=0 CLI_ARGS="" -EXPOSE 7860 - -CMD /docker/mount.sh && /docker/run.sh diff --git a/services/sygil/info.py b/services/sygil/info.py deleted file mode 100644 index a8b418c..0000000 --- a/services/sygil/info.py +++ /dev/null @@ -1,13 +0,0 @@ -import sys -from pathlib import Path - -file = Path(sys.argv[1]) -file.write_text( - file.read_text()\ - .replace('

For help and advanced usage guides,', """ -

- Created using stable-diffusion-webui-docker. -

-

For help and advanced usage guides, -""", 1) -) diff --git a/services/sygil/mount.sh b/services/sygil/mount.sh deleted file mode 100755 index cc0dc9d..0000000 --- a/services/sygil/mount.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -set -Eeuo pipefail - -declare -A MOUNTS - -ROOT=/stable-diffusion/src - -# cache -MOUNTS["/root/.cache"]=/data/.cache -# ui specific -MOUNTS["${PWD}/models/realesrgan"]=/data/RealESRGAN -MOUNTS["${PWD}/models/ldsr"]=/data/LDSR -MOUNTS["${PWD}/models/custom"]=/data/StableDiffusion - -# hack -MOUNTS["${PWD}/models/gfpgan/GFPGANv1.3.pth"]=/data/GFPGAN/GFPGANv1.4.pth -MOUNTS["${PWD}/models/gfpgan/GFPGANv1.4.pth"]=/data/GFPGAN/GFPGANv1.4.pth -MOUNTS["${PWD}/gfpgan/weights"]=/data/.cache - - -for to_path in "${!MOUNTS[@]}"; do - set -Eeuo pipefail - from_path="${MOUNTS[${to_path}]}" - rm -rf "${to_path}" - mkdir -p "$(dirname "${to_path}")" - ln -sT "${from_path}" "${to_path}" - echo Mounted $(basename "${from_path}") -done - -# streamlit config -ln -sf /docker/userconfig_streamlit.yaml /stable-diffusion/configs/webui/userconfig_streamlit.yaml diff --git a/services/sygil/run.sh b/services/sygil/run.sh deleted file mode 100755 index 89f7959..0000000 --- a/services/sygil/run.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -set -Eeuo pipefail - -echo "USE_STREAMLIT = ${USE_STREAMLIT}" -if [ "${USE_STREAMLIT}" == "1" ]; then - python -u -m streamlit run scripts/webui_streamlit.py -else - python3 -u scripts/webui.py --outdir /output --ckpt /data/StableDiffusion/v1-5-pruned-emaonly.ckpt ${CLI_ARGS} -fi diff --git a/services/sygil/userconfig_streamlit.yaml b/services/sygil/userconfig_streamlit.yaml deleted file mode 100644 index 07a20af..0000000 --- a/services/sygil/userconfig_streamlit.yaml +++ /dev/null @@ -1,11 +0,0 @@ -# https://github.com/Sygil-Dev/sygil-webui/blob/master/configs/webui/webui_streamlit.yaml -general: - version: 1.24.6 - outdir: /output - default_model: "Stable Diffusion v1.5" - default_model_path: /data/StableDiffusion/v1-5-pruned-emaonly.ckpt - outdir_txt2img: /output/txt2img - outdir_img2img: /output/img2img - outdir_img2txt: /output/img2txt - optimized: True - optimized_turbo: True From 1df18b803cda07309507088128c7ab999d04de63 Mon Sep 17 00:00:00 2001 From: AbdBarho Date: Wed, 24 May 2023 16:53:59 +0200 Subject: [PATCH 19/22] Add extension dependencies (#485) It seems that users are struggling to follow the instructions on the wiki https://github.com/AbdBarho/stable-diffusion-webui-docker/pull/483#issuecomment-1561241372 --- docker-compose.yml | 2 +- services/AUTOMATIC1111/Dockerfile | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index f7567ee..2f1a83a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -28,7 +28,7 @@ services: <<: *base_service profiles: ["auto"] build: ./services/AUTOMATIC1111 - image: sd-auto:56 + image: sd-auto:57 environment: - CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api diff --git a/services/AUTOMATIC1111/Dockerfile b/services/AUTOMATIC1111/Dockerfile index c387e4e..6bfcda0 100644 --- a/services/AUTOMATIC1111/Dockerfile +++ b/services/AUTOMATIC1111/Dockerfile @@ -25,7 +25,12 @@ FROM python:3.10.9-slim ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1 -RUN apt-get update && apt install fonts-dejavu-core rsync git jq moreutils aria2 -y && apt-get clean +RUN --mount=type=cache,target=/var/cache/apt \ + apt-get update && \ + # we need those + apt-get install -y fonts-dejavu-core rsync git jq moreutils aria2 \ + # extensions needs those + ffmpeg libglfw3-dev libgles2-mesa-dev pkg-config libcairo2 libcairo2-dev RUN --mount=type=cache,target=/cache --mount=type=cache,target=/root/.cache/pip \ aria2c -x 5 --dir /cache --out torch-2.0.0-cp310-cp310-linux_x86_64.whl -c \ From a3ecd4a79c5c3c30b4feccfc827d822184439a7c Mon Sep 17 00:00:00 2001 From: AbdBarho Date: Mon, 29 May 2023 15:17:06 +0200 Subject: [PATCH 20/22] Update auto to 1.3.0 (#490) https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/20ae71faa8ef035c31aa3a410b707d792c8203a3 Pytorch 2.0.1 #489 --- docker-compose.yml | 2 +- services/AUTOMATIC1111/Dockerfile | 19 +++++++++---------- services/AUTOMATIC1111/entrypoint.sh | 1 + 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 2f1a83a..8f34fe3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -28,7 +28,7 @@ services: <<: *base_service profiles: ["auto"] build: ./services/AUTOMATIC1111 - image: sd-auto:57 + image: sd-auto:58 environment: - CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api diff --git a/services/AUTOMATIC1111/Dockerfile b/services/AUTOMATIC1111/Dockerfile index 6bfcda0..173b356 100644 --- a/services/AUTOMATIC1111/Dockerfile +++ b/services/AUTOMATIC1111/Dockerfile @@ -18,7 +18,7 @@ RUN . /clone.sh clip-interrogator https://github.com/pharmapsychotic/clip-interr FROM alpine:3.17 as xformers RUN apk add --no-cache aria2 -RUN aria2c -x 5 --dir / --out wheel.whl 'https://github.com/AbdBarho/stable-diffusion-webui-docker/releases/download/5.0.3/xformers-0.0.20.dev528-cp310-cp310-manylinux2014_x86_64-pytorch2.whl' +RUN aria2c -x 5 --dir / --out wheel.whl 'https://github.com/AbdBarho/stable-diffusion-webui-docker/releases/download/6.0.0/xformers-0.0.21.dev544-cp310-cp310-manylinux2014_x86_64-pytorch201.whl' FROM python:3.10.9-slim @@ -32,22 +32,23 @@ RUN --mount=type=cache,target=/var/cache/apt \ # extensions needs those ffmpeg libglfw3-dev libgles2-mesa-dev pkg-config libcairo2 libcairo2-dev + RUN --mount=type=cache,target=/cache --mount=type=cache,target=/root/.cache/pip \ - aria2c -x 5 --dir /cache --out torch-2.0.0-cp310-cp310-linux_x86_64.whl -c \ - https://download.pytorch.org/whl/cu118/torch-2.0.0%2Bcu118-cp310-cp310-linux_x86_64.whl && \ - pip install /cache/torch-2.0.0-cp310-cp310-linux_x86_64.whl torchvision --index-url https://download.pytorch.org/whl/cu118 + aria2c -x 5 --dir /cache --out torch-2.0.1-cp310-cp310-linux_x86_64.whl -c \ + https://download.pytorch.org/whl/cu118/torch-2.0.1%2Bcu118-cp310-cp310-linux_x86_64.whl && \ + pip install /cache/torch-2.0.1-cp310-cp310-linux_x86_64.whl torchvision --index-url https://download.pytorch.org/whl/cu118 RUN --mount=type=cache,target=/root/.cache/pip \ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git && \ cd stable-diffusion-webui && \ - git reset --hard d7aec59c4eb02f723b3d55c6f927a42e97acd679 && \ + git reset --hard 20ae71faa8ef035c31aa3a410b707d792c8203a3 && \ pip install -r requirements_versions.txt RUN --mount=type=cache,target=/root/.cache/pip \ - --mount=type=bind,from=xformers,source=/wheel.whl,target=/xformers-0.0.20.dev528-cp310-cp310-manylinux2014_x86_64.whl \ - pip install /xformers-0.0.20.dev528-cp310-cp310-manylinux2014_x86_64.whl + --mount=type=bind,from=xformers,source=/wheel.whl,target=/xformers-0.0.21.dev544-cp310-cp310-manylinux2014_x86_64.whl \ + pip install /xformers-0.0.21.dev544-cp310-cp310-manylinux2014_x86_64.whl ENV ROOT=/stable-diffusion-webui @@ -70,15 +71,13 @@ RUN --mount=type=cache,target=/root/.cache/pip \ RUN apt-get -y install libgoogle-perftools-dev && apt-get clean ENV LD_PRELOAD=libtcmalloc.so -ARG SHA=89f9faa63388756314e8a1d96cf86bf5e0663045 +ARG SHA=20ae71faa8ef035c31aa3a410b707d792c8203a3 RUN --mount=type=cache,target=/root/.cache/pip \ cd stable-diffusion-webui && \ git fetch && \ git reset --hard ${SHA} && \ pip install -r requirements_versions.txt -RUN --mount=type=cache,target=/root/.cache/pip pip install -U opencv-python-headless - COPY . /docker RUN \ diff --git a/services/AUTOMATIC1111/entrypoint.sh b/services/AUTOMATIC1111/entrypoint.sh index 54e709c..337a4d6 100755 --- a/services/AUTOMATIC1111/entrypoint.sh +++ b/services/AUTOMATIC1111/entrypoint.sh @@ -49,6 +49,7 @@ MOUNTS["${ROOT}/config.json"]="/data/config/auto/config.json" MOUNTS["${ROOT}/ui-config.json"]="/data/config/auto/ui-config.json" MOUNTS["${ROOT}/styles.csv"]="/data/config/auto/styles.csv" MOUNTS["${ROOT}/extensions"]="/data/config/auto/extensions" +MOUNTS["${ROOT}/config_states"]="/data/config/auto/config_states" # extra hacks MOUNTS["${ROOT}/repositories/CodeFormer/weights/facelib"]="/data/.cache" From 6695c2315000915203f843c80a4b8fa163e83cf8 Mon Sep 17 00:00:00 2001 From: AbdBarho Date: Mon, 29 May 2023 19:07:01 +0200 Subject: [PATCH 21/22] InvokeAI 2.3.5.post2 (#491) https://github.com/invoke-ai/InvokeAI/commit/f3b2e02921927d9317255b1c3811f47bd40a2bf9 #489 --- README.md | 2 +- docker-compose.yml | 2 +- services/invoke/Dockerfile | 22 ++++++++-------------- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 659d510..95e10c3 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ This repository provides multiple UIs for you to play around with stable diffusi | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | | ![](https://user-images.githubusercontent.com/24505302/189541954-46afd772-d0c8-4005-874c-e2eca40c02f2.jpg) | ![](https://user-images.githubusercontent.com/24505302/189541956-5b528de7-1b5d-479f-a1db-d3f5a53afc59.jpg) | ![](https://user-images.githubusercontent.com/24505302/189541957-cf78b352-a071-486d-8889-f26952779a61.jpg) | -### [InvokeAI (lstein)](https://github.com/invoke-ai/InvokeAI) +### [InvokeAI](https://github.com/invoke-ai/InvokeAI) [Full feature list here](https://github.com/invoke-ai/InvokeAI#features), Screenshots: diff --git a/docker-compose.yml b/docker-compose.yml index 8f34fe3..ab5bf8c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -43,7 +43,7 @@ services: <<: *base_service profiles: ["invoke"] build: ./services/invoke/ - image: sd-invoke:28 + image: sd-invoke:29 environment: - PRELOAD=true - CLI_ARGS=--xformers diff --git a/services/invoke/Dockerfile b/services/invoke/Dockerfile index 5568ac0..e3466d1 100644 --- a/services/invoke/Dockerfile +++ b/services/invoke/Dockerfile @@ -1,16 +1,11 @@ FROM alpine:3.17 as xformers RUN apk add --no-cache aria2 -RUN aria2c -x 5 --dir / --out wheel.whl 'https://github.com/AbdBarho/stable-diffusion-webui-docker/releases/download/5.0.3/xformers-0.0.20.dev528-cp310-cp310-manylinux2014_x86_64-pytorch1.13.whl' +RUN aria2c -x 5 --dir / --out wheel.whl 'https://github.com/AbdBarho/stable-diffusion-webui-docker/releases/download/6.0.0/xformers-0.0.21.dev544-cp310-cp310-manylinux2014_x86_64-pytorch201.whl' +FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime -FROM python:3.10-slim - -ENV DEBIAN_FRONTEND=noninteractive PIP_EXISTS_ACTION=w PIP_PREFER_BINARY=1 - - -RUN --mount=type=cache,target=/root/.cache/pip pip install torch==1.13.1+cu117 torchvision --extra-index-url https://download.pytorch.org/whl/cu117 - +ENV DEBIAN_FRONTEND=noninteractive PIP_EXISTS_ACTION=w PIP_PREFER_BINARY=1 # patch match: # https://github.com/invoke-ai/InvokeAI/blob/main/docs/installation/INSTALL_PATCHMATCH.md @@ -27,11 +22,11 @@ RUN git clone https://github.com/invoke-ai/InvokeAI.git ${ROOT} WORKDIR ${ROOT} RUN --mount=type=cache,target=/root/.cache/pip \ - git reset --hard 4463124bddd221c333d4c70e73aa2949ad35453d && \ + git reset --hard f3b2e02921927d9317255b1c3811f47bd40a2bf9 && \ pip install -e . -ARG BRANCH=main SHA=d73f1c363c3f2fe00f14ed34e276b4366b32a886 +ARG BRANCH=main SHA=f3b2e02921927d9317255b1c3811f47bd40a2bf9 RUN --mount=type=cache,target=/root/.cache/pip \ git fetch && \ git reset --hard && \ @@ -40,15 +35,14 @@ RUN --mount=type=cache,target=/root/.cache/pip \ pip install -U -e . RUN --mount=type=cache,target=/root/.cache/pip \ - --mount=type=bind,from=xformers,source=/wheel.whl,target=/xformers-0.0.20-cp310-cp310-linux_x86_64.whl \ - pip install -U opencv-python-headless triton /xformers-0.0.20-cp310-cp310-linux_x86_64.whl && \ + --mount=type=bind,from=xformers,source=/wheel.whl,target=/xformers-0.0.21-cp310-cp310-linux_x86_64.whl \ + pip install -U opencv-python-headless triton /xformers-0.0.21-cp310-cp310-linux_x86_64.whl && \ python3 -c "from patchmatch import patch_match" COPY . /docker/ -ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility -ENV NVIDIA_VISIBLE_DEVICES=all +ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility NVIDIA_VISIBLE_DEVICES=all ENV PYTHONUNBUFFERED=1 PRELOAD=false HF_HOME=/root/.cache/huggingface CONFIG_DIR=/data/config/invoke CLI_ARGS="" EXPOSE 7860 From 660c098da05dd24febee45111b9117c7a75c2ed2 Mon Sep 17 00:00:00 2001 From: AbdBarho Date: Fri, 2 Jun 2023 21:29:00 +0200 Subject: [PATCH 22/22] Change capabilities in docker-compose (#497) #479 --- docker-compose.yml | 2 +- services/AUTOMATIC1111/Dockerfile | 1 - services/comfy/Dockerfile | 2 +- services/invoke/Dockerfile | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index ab5bf8c..20e98f7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,7 +13,7 @@ x-base_service: &base_service devices: - driver: nvidia device_ids: ['0'] - capabilities: [gpu] + capabilities: [compute, utility] name: webui-docker diff --git a/services/AUTOMATIC1111/Dockerfile b/services/AUTOMATIC1111/Dockerfile index 173b356..6ef8fda 100644 --- a/services/AUTOMATIC1111/Dockerfile +++ b/services/AUTOMATIC1111/Dockerfile @@ -88,7 +88,6 @@ RUN \ git config --global --add safe.directory '*' WORKDIR ${ROOT} -ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility ENV NVIDIA_VISIBLE_DEVICES=all ENV CLI_ARGS="" EXPOSE 7860 diff --git a/services/comfy/Dockerfile b/services/comfy/Dockerfile index ac0556f..ddf60fb 100644 --- a/services/comfy/Dockerfile +++ b/services/comfy/Dockerfile @@ -38,7 +38,7 @@ RUN --mount=type=cache,target=/root/.cache/pip \ COPY . /docker/ RUN cp /docker/extra_model_paths.yaml ${ROOT} -ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility NVIDIA_VISIBLE_DEVICES=all +ENV NVIDIA_VISIBLE_DEVICES=all ENV PYTHONPATH="${PYTHONPATH}:${PWD}" CLI_ARGS="" EXPOSE 7860 ENTRYPOINT ["/docker/entrypoint.sh"] diff --git a/services/invoke/Dockerfile b/services/invoke/Dockerfile index e3466d1..3bc90b1 100644 --- a/services/invoke/Dockerfile +++ b/services/invoke/Dockerfile @@ -42,7 +42,7 @@ RUN --mount=type=cache,target=/root/.cache/pip \ COPY . /docker/ -ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility NVIDIA_VISIBLE_DEVICES=all +ENV NVIDIA_VISIBLE_DEVICES=all ENV PYTHONUNBUFFERED=1 PRELOAD=false HF_HOME=/root/.cache/huggingface CONFIG_DIR=/data/config/invoke CLI_ARGS="" EXPOSE 7860