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..a68d087 100644 --- a/data/.gitignore +++ b/data/.gitignore @@ -1,28 +1,2 @@ -# 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 +/* +!/.gitignore 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/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/