From cdde93b8bbcf19b607411dcc9dbdcf7b22981b84 Mon Sep 17 00:00:00 2001 From: AbdBarho Date: Sat, 24 Jun 2023 10:06:30 +0200 Subject: [PATCH] v8 (#516) https://github.com/comfyanonymous/ComfyUI/commit/8607c2d42d10b0108de02528e813cc703e58813f --- .devscripts/migratev7tov8.sh | 28 +++++++++++++++++++ data/.gitignore | 26 +----------------- docker-compose.yml | 10 +++---- services/AUTOMATIC1111/entrypoint.sh | 39 +++++++++++++-------------- services/comfy/Dockerfile | 13 ++++----- services/comfy/extra_model_paths.yaml | 24 ++++++++--------- services/download/checksums.sha256 | 16 +++++------ services/download/download.sh | 36 +++++++------------------ services/download/links.txt | 4 +-- services/invoke/Dockerfile | 2 +- services/invoke/entrypoint.sh | 8 +++--- 11 files changed, 93 insertions(+), 113 deletions(-) create mode 100644 .devscripts/migratev7tov8.sh diff --git a/.devscripts/migratev7tov8.sh b/.devscripts/migratev7tov8.sh new file mode 100644 index 0000000..421da1e --- /dev/null +++ b/.devscripts/migratev7tov8.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +set -Eeuo pipefail + +echo "Renaming..." + +# compatible with default auto-names +mv -v ./data/StableDiffusion ./data/Stable-diffusion +mv -v ./data/Deepdanbooru ./data/torch_deepdanbooru + +# casing problem on windows +mv -v ./data/Hypernetworks ./data/hypernetworks1 +mv -v ./data/hypernetworks1 ./data/hypernetworks + +mv -v ./data/MiDaS ./data/midas1 +mv -v ./data/midas1 ./data/midas + + +echo "Moving folders..." + +mkdir -pv ./final + +mv -v ./data/config ./final/config +mv -v ./data/.cache ./final/.cache +mv -v ./data/embeddings ./final/embeddings +mv -v ./data ./final/models + +mv -v ./final ./data diff --git a/data/.gitignore b/data/.gitignore index 90e640d..946349a 100644 --- a/data/.gitignore +++ b/data/.gitignore @@ -1,28 +1,4 @@ -# for all of the stuff downloaded by transformers, pytorch, and others /.cache -# for UIs /config -# for all stable diffusion models (main, waifu diffusion, etc..) -/StableDiffusion -# others -/Codeformer -/GFPGAN -/ESRGAN -/BSRGAN -/RealESRGAN -/SwinIR -/MiDaS -/BLIP -/ScuNET -/LDSR -/Deepdanbooru -/Hypernetworks -/VAE /embeddings -/Lora -/ControlNet -/openpose -/ModelScope -/LyCORIS -/GLIGEN -/CLIPEncoder +/models diff --git a/docker-compose.yml b/docker-compose.yml index 20e98f7..bff738d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,7 +6,8 @@ x-base_service: &base_service volumes: - &v1 ./data:/data - &v2 ./output:/output - stop_signal: SIGINT + stop_signal: SIGKILL + tty: true deploy: resources: reservations: @@ -28,7 +29,7 @@ services: <<: *base_service profiles: ["auto"] build: ./services/AUTOMATIC1111 - image: sd-auto:58 + image: sd-auto:59 environment: - CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api @@ -43,7 +44,7 @@ services: <<: *base_service profiles: ["invoke"] build: ./services/invoke/ - image: sd-invoke:29 + image: sd-invoke:30 environment: - PRELOAD=true - CLI_ARGS=--xformers @@ -59,8 +60,7 @@ services: <<: *base_service profiles: ["comfy"] build: ./services/comfy/ - image: sd-comfy:2 - tty: true + image: sd-comfy:3 environment: - CLI_ARGS= diff --git a/services/AUTOMATIC1111/entrypoint.sh b/services/AUTOMATIC1111/entrypoint.sh index 337a4d6..095c2d1 100755 --- a/services/AUTOMATIC1111/entrypoint.sh +++ b/services/AUTOMATIC1111/entrypoint.sh @@ -19,30 +19,14 @@ if [ ! -f /data/config/auto/styles.csv ]; then touch /data/config/auto/styles.csv fi +# copy models from original models folder +rsync -a --info=NAME ${ROOT}/models/VAE-approx/ /data/models/VAE-approx/ +rsync -a --info=NAME ${ROOT}/models/karlo/ /data/models/karlo/ + declare -A MOUNTS MOUNTS["/root/.cache"]="/data/.cache" - -# main -MOUNTS["${ROOT}/models/Stable-diffusion"]="/data/StableDiffusion" -MOUNTS["${ROOT}/models/VAE"]="/data/VAE" -MOUNTS["${ROOT}/models/Codeformer"]="/data/Codeformer" -MOUNTS["${ROOT}/models/GFPGAN"]="/data/GFPGAN" -MOUNTS["${ROOT}/models/ESRGAN"]="/data/ESRGAN" -MOUNTS["${ROOT}/models/BSRGAN"]="/data/BSRGAN" -MOUNTS["${ROOT}/models/RealESRGAN"]="/data/RealESRGAN" -MOUNTS["${ROOT}/models/SwinIR"]="/data/SwinIR" -MOUNTS["${ROOT}/models/ScuNET"]="/data/ScuNET" -MOUNTS["${ROOT}/models/LDSR"]="/data/LDSR" -MOUNTS["${ROOT}/models/hypernetworks"]="/data/Hypernetworks" -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}/models"]="/data/models" MOUNTS["${ROOT}/embeddings"]="/data/embeddings" MOUNTS["${ROOT}/config.json"]="/data/config/auto/config.json" @@ -66,8 +50,21 @@ for to_path in "${!MOUNTS[@]}"; do echo Mounted $(basename "${from_path}") done +echo "Installing extension dependencies (if any)" + +# because we build our container as root: +chown -R root ~/.cache/ +chmod 766 ~/.cache/ + +shopt -s nullglob +list=(./extensions/*/requirements.txt) +for req in "${list[@]}"; do + pip install -r "$req" +done + if [ -f "/data/config/auto/startup.sh" ]; then pushd ${ROOT} + echo "Running startup script" . /data/config/auto/startup.sh popd fi diff --git a/services/comfy/Dockerfile b/services/comfy/Dockerfile index ddf60fb..69aaf49 100644 --- a/services/comfy/Dockerfile +++ b/services/comfy/Dockerfile @@ -1,14 +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.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/6.0.0/xformers-0.0.21.dev544-cp310-cp310-manylinux2014_x86_64-pytorch201.whl' - -FROM python:3.10.9-slim +FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime 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 @@ -21,13 +18,13 @@ RUN --mount=type=cache,target=/root/.cache/pip \ 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 + --mount=type=bind,from=xformers,source=/wheel.whl,target=/xformers-0.0.21-cp310-cp310-linux_x86_64.whl \ + pip install /xformers-0.0.21-cp310-cp310-linux_x86_64.whl WORKDIR ${ROOT} -ARG BRANCH=master SHA=884ea653c8d6fe19b3724f45a04a0d74cd881f2f +ARG BRANCH=master SHA=8607c2d42d10b0108de02528e813cc703e58813f RUN --mount=type=cache,target=/root/.cache/pip \ git fetch && \ git checkout ${BRANCH} && \ diff --git a/services/comfy/extra_model_paths.yaml b/services/comfy/extra_model_paths.yaml index d16dfef..eb374eb 100644 --- a/services/comfy/extra_model_paths.yaml +++ b/services/comfy/extra_model_paths.yaml @@ -1,20 +1,20 @@ a111: base_path: /data - checkpoints: StableDiffusion - configs: StableDiffusion - vae: VAE - loras: Lora + checkpoints: models/Stable-diffusion + configs: models/Stable-diffusion + vae: models/VAE + loras: models/Lora upscale_models: | - RealESRGAN - ESRGAN - SwinIR - GFPGAN + models/RealESRGAN + models/ESRGAN + models/SwinIR + models/GFPGAN + hypernetworks: models/hypernetworks + controlnet: models/ControlNet + gligen: models/GLIGEN + clip: models/CLIPEncoder embeddings: embeddings - hypernetworks: Hypernetworks - controlnet: ControlNet - gligen: GLIGEN - clip: CLIPEncoder custom_nodes: config/comfy/custom_nodes diff --git a/services/download/checksums.sha256 b/services/download/checksums.sha256 index a64d6a4..ec4ed16 100644 --- a/services/download/checksums.sha256 +++ b/services/download/checksums.sha256 @@ -1,8 +1,8 @@ -cc6cb27103417325ff94f52b7a5d2dde45a7515b25c255d8e396c90014281516 /data/StableDiffusion/v1-5-pruned-emaonly.ckpt -c6bbc15e3224e6973459ba78de4998b80b50112b0ae5b5c67113d56b4e366b19 /data/StableDiffusion/sd-v1-5-inpainting.ckpt -c6a580b13a5bc05a5e16e4dbb80608ff2ec251a162311590c1f34c013d7f3dab /data/VAE/vae-ft-mse-840000-ema-pruned.ckpt -e2cd4703ab14f4d01fd1383a8a8b266f9a5833dacee8e6a79d3bf21a1b6be5ad /data/GFPGAN/GFPGANv1.4.pth -4fa0d38905f75ac06eb49a7951b426670021be3018265fd191d2125df9d682f1 /data/RealESRGAN/RealESRGAN_x4plus.pth -f872d837d3c90ed2e05227bed711af5671a6fd1c9f7d7e91c911a61f155e99da /data/RealESRGAN/RealESRGAN_x4plus_anime_6B.pth -c209caecac2f97b4bb8f4d726b70ac2ac9b35904b7fc99801e1f5e61f9210c13 /data/LDSR/model.ckpt -9d6ad53c5dafeb07200fb712db14b813b527edd262bc80ea136777bdb41be2ba /data/LDSR/project.yaml +cc6cb27103417325ff94f52b7a5d2dde45a7515b25c255d8e396c90014281516 /data/models/Stable-diffusion/v1-5-pruned-emaonly.ckpt +c6bbc15e3224e6973459ba78de4998b80b50112b0ae5b5c67113d56b4e366b19 /data/models/Stable-diffusion/sd-v1-5-inpainting.ckpt +c6a580b13a5bc05a5e16e4dbb80608ff2ec251a162311590c1f34c013d7f3dab /data/models/VAE/vae-ft-mse-840000-ema-pruned.ckpt +e2cd4703ab14f4d01fd1383a8a8b266f9a5833dacee8e6a79d3bf21a1b6be5ad /data/models/GFPGAN/GFPGANv1.4.pth +4fa0d38905f75ac06eb49a7951b426670021be3018265fd191d2125df9d682f1 /data/models/RealESRGAN/RealESRGAN_x4plus.pth +f872d837d3c90ed2e05227bed711af5671a6fd1c9f7d7e91c911a61f155e99da /data/models/RealESRGAN/RealESRGAN_x4plus_anime_6B.pth +c209caecac2f97b4bb8f4d726b70ac2ac9b35904b7fc99801e1f5e61f9210c13 /data/models/LDSR/model.ckpt +9d6ad53c5dafeb07200fb712db14b813b527edd262bc80ea136777bdb41be2ba /data/models/LDSR/project.yaml diff --git a/services/download/download.sh b/services/download/download.sh index 68ea540..fbe5a70 100755 --- a/services/download/download.sh +++ b/services/download/download.sh @@ -4,30 +4,18 @@ 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 \ - /data/CLIPEncoder # this is different from the cached pre-train ViT saved in /data/.cache/clip TODO: find out how + /data/config/ \ + /data/models/ \ + /data/models/Stable-diffusion \ + /data/models/GFPGAN \ + /data/models/RealESRGAN \ + /data/models/LDSR \ + /data/models/VAE echo "Downloading, this might take a while..." -aria2c -x 10 --disable-ipv6 --input-file /docker/links.txt --dir /data --continue +aria2c -x 10 --disable-ipv6 --input-file /docker/links.txt --dir /data/models --continue echo "Checking SHAs..." @@ -39,11 +27,5 @@ https://github.com/AbdBarho/stable-diffusion-webui-docker/blob/master/LICENSE https://github.com/CompVis/stable-diffusion/blob/main/LICENSE https://github.com/AUTOMATIC1111/stable-diffusion-webui/blob/master/LICENSE.txt https://github.com/invoke-ai/InvokeAI/blob/main/LICENSE -https://github.com/sd-webui/stable-diffusion-webui/blob/master/LICENSE -https://github.com/cszn/BSRGAN/blob/main/LICENSE -https://github.com/sczhou/CodeFormer/blob/master/LICENSE -https://github.com/TencentARC/GFPGAN/blob/master/LICENSE -https://github.com/xinntao/Real-ESRGAN/blob/master/LICENSE -https://github.com/xinntao/ESRGAN/blob/master/LICENSE -https://github.com/cszn/SCUNet/blob/main/LICENSE +And licenses of all UIs, third party libraries, and extensions. EOF diff --git a/services/download/links.txt b/services/download/links.txt index 693c911..3616449 100644 --- a/services/download/links.txt +++ b/services/download/links.txt @@ -1,9 +1,9 @@ https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt - out=StableDiffusion/v1-5-pruned-emaonly.ckpt + out=Stable-diffusion/v1-5-pruned-emaonly.ckpt https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.ckpt out=VAE/vae-ft-mse-840000-ema-pruned.ckpt https://huggingface.co/runwayml/stable-diffusion-inpainting/resolve/main/sd-v1-5-inpainting.ckpt - out=StableDiffusion/sd-v1-5-inpainting.ckpt + out=Stable-diffusion/sd-v1-5-inpainting.ckpt https://github.com/TencentARC/GFPGAN/releases/download/v1.3.4/GFPGANv1.4.pth out=GFPGAN/GFPGANv1.4.pth https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth diff --git a/services/invoke/Dockerfile b/services/invoke/Dockerfile index 3bc90b1..209c368 100644 --- a/services/invoke/Dockerfile +++ b/services/invoke/Dockerfile @@ -48,6 +48,6 @@ 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 --embedding_directory /data/embeddings/ --lora_directory /data/Lora \ + --outdir /output/invoke --embedding_directory /data/embeddings/ --lora_directory /data/models/Lora \ --no-nsfw_checker --no-safety_checker ${CLI_ARGS} diff --git a/services/invoke/entrypoint.sh b/services/invoke/entrypoint.sh index b137c45..348bb2b 100755 --- a/services/invoke/entrypoint.sh +++ b/services/invoke/entrypoint.sh @@ -13,10 +13,10 @@ MOUNTS["/root/.cache"]=/data/.cache/ 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/GFPGAN/ -MOUNTS["${ROOT}/models/realesrgan"]=/data/RealESRGAN/ +MOUNTS["${ROOT}/models/codeformer"]=/data/models/Codeformer/ +MOUNTS["${ROOT}/models/gfpgan/GFPGANv1.4.pth"]=/data/models/GFPGAN/GFPGANv1.4.pth +MOUNTS["${ROOT}/models/gfpgan/weights"]=/data/models/GFPGAN/ +MOUNTS["${ROOT}/models/realesrgan"]=/data/models/RealESRGAN/ MOUNTS["${ROOT}/models/ldm"]=/data/.cache/invoke/ldm/