10 Commits
5.0.1 ... 5.0.2

Author SHA1 Message Date
AbdBarho
10c16e1971 Refactor invoke (#405)
Fixes a problem with cross attention class missing from diffusers


models are now taken from the huggingFace cache.


50eb02f68b
2023-04-16 10:56:27 +02:00
AJ Walter
555c26b7ce 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: `<<EOF` heredoc styles have been switched to `&& \`
* all: I added NVIDIA_DRIVER_CAPABILITIES and NVIDIA_VISIBLE_DEVICES to
expose my Nvidia card. This is most likely a selinux/podman problem, but
shouldn't change anything with docker to add it.
* docker-compose: I added selinux labeling. I tested this with real
docker (not just podman!) and it seems to work fine. Though I suggest
you try it too.

## Testing

Locally builds with buildah. 

Note: for caching to work properly, you still need to replace
`/root/.cache/pip` with `/root/.cache/pip,Z` on selinux systems.

Note: I was having some trouble running invoke. Thought it was this PR,
but it's a known issue. See
https://github.com/invoke-ai/InvokeAI/issues/3182

---------

Co-authored-by: AbdBarho <ka70911@gmail.com>
2023-04-16 10:32:03 +02:00
Simon Oelerich
5d379bf7bc Add mounts for openpose (#387)
Upon enabling the ControlNet addon from
https://github.com/AbdBarho/stable-diffusion-webui-docker/pull/385 one
might want to use the `openpose` preprocessors. Those are downloaded by
the addon the first time they are used. Without proper mounts those
networks will be downloaded on usage after each container start.
This PR enables those mounts to reduce data traffic.
2023-04-05 19:09:07 +02:00
Simon Oelerich
d2c1e551d7 Enable ControlNet mounts for AUTOMATIC1111 (#385)
The ControlNet addon
[sd-webui-controlnet](https://github.com/Mikubill/sd-webui-controlnet)
requires the `data/ControlNet` folder to be mounted into
`models/ControlNet`.
This PR enables said mount and adds the ControlNet folder to
`.gitignore` file.

---------

Co-authored-by: AbdBarho <ka70911@gmail.com>
2023-04-04 18:55:14 +02:00
AbdBarho
063665eae1 Update Auto (#365)
a9fed7c364
2023-03-14 18:30:08 +01:00
AbdBarho
bb54e89b34 Update Auto (#363)
27e319dc4f
2023-03-11 22:35:11 +01:00
AbdBarho
aa69f11230 Fix preload for Invoke (#346)
Refs #345
2023-02-27 19:59:36 +01:00
AbdBarho
c54e26348e Update Invoke (#343)
6e0c6d9cc9
2023-02-26 10:53:57 +01:00
AbdBarho
b36de9ef2b Add libgoogle-perftools-dev (#341)
- auto:
0cc0ee1bcb

Closes #326
2023-02-23 21:50:16 +01:00
AbdBarho
70d8d7f37f Update versions (#338)
- auto:
076d624a29
- invoke:
d3c1b747ee
2023-02-19 16:25:06 +01:00
10 changed files with 104 additions and 137 deletions

2
data/.gitignore vendored
View File

@@ -20,3 +20,5 @@
/VAE /VAE
/embeddings /embeddings
/Lora /Lora
/ControlNet
/openpose

View File

@@ -28,7 +28,7 @@ services:
<<: *base_service <<: *base_service
profiles: ["auto"] profiles: ["auto"]
build: ./services/AUTOMATIC1111 build: ./services/AUTOMATIC1111
image: sd-auto:45 image: sd-auto:51
environment: environment:
- CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api - CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api
@@ -43,10 +43,10 @@ services:
<<: *base_service <<: *base_service
profiles: ["invoke"] profiles: ["invoke"]
build: ./services/invoke/ build: ./services/invoke/
image: sd-invoke:23 image: sd-invoke:27
environment: environment:
- PRELOAD=true - PRELOAD=true
- CLI_ARGS= - CLI_ARGS=--no-nsfw_checker --no-safety_checker --xformers
sygil: &sygil sygil: &sygil

View File

@@ -1,14 +1,6 @@
# syntax=docker/dockerfile:1
FROM alpine/git:2.36.2 as download FROM alpine/git:2.36.2 as download
SHELL ["/bin/sh", "-ceuxo", "pipefail"] COPY clone.sh /clone.sh
RUN <<EOF
cat <<'EOE' > /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
RUN . /clone.sh taming-transformers https://github.com/CompVis/taming-transformers.git 24268930bf1dce879235a7fddd0b2355b84d7ea6 \ RUN . /clone.sh taming-transformers https://github.com/CompVis/taming-transformers.git 24268930bf1dce879235a7fddd0b2355b84d7ea6 \
&& rm -rf data assets **/*.ipynb && 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 FROM python:3.10.9-slim
SHELL ["/bin/bash", "-ceuxo", "pipefail"]
ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1 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 apt-get update && apt install fonts-dejavu-core rsync git jq moreutils -y && apt-get clean
RUN --mount=type=cache,target=/root/.cache/pip <<EOF RUN --mount=type=cache,target=/root/.cache/pip \
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git && \
cd stable-diffusion-webui cd stable-diffusion-webui && \
git reset --hard d7aec59c4eb02f723b3d55c6f927a42e97acd679 git reset --hard d7aec59c4eb02f723b3d55c6f927a42e97acd679 && \
pip install -r requirements_versions.txt pip install -r requirements_versions.txt
EOF
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.15-cp310-cp310-linux_x86_64.whl \ --mount=type=bind,from=xformers,source=/wheel.whl,target=/xformers-0.0.15-cp310-cp310-linux_x86_64.whl \
@@ -53,7 +43,7 @@ RUN --mount=type=cache,target=/root/.cache/pip \
ENV ROOT=/stable-diffusion-webui ENV ROOT=/stable-diffusion-webui
COPY --from=download /git/ ${ROOT} COPY --from=download /repositories/ ${ROOT}/repositories/
RUN mkdir ${ROOT}/interrogate && cp ${ROOT}/repositories/clip-interrogator/data/* ${ROOT}/interrogate RUN mkdir ${ROOT}/interrogate && cp ${ROOT}/repositories/clip-interrogator/data/* ${ROOT}/interrogate
RUN --mount=type=cache,target=/root/.cache/pip \ RUN --mount=type=cache,target=/root/.cache/pip \
pip install -r ${ROOT}/repositories/CodeFormer/requirements.txt pip install -r ${ROOT}/repositories/CodeFormer/requirements.txt
@@ -67,26 +57,30 @@ RUN --mount=type=cache,target=/root/.cache/pip \
# 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
ARG SHA=3715ece0adce7bf7c5e9c5ab3710b2fdc3848f39 # TODO: either remove if fixed in A1111 (unlikely) or move to the top with other apt stuff
RUN --mount=type=cache,target=/root/.cache/pip <<EOF RUN apt-get -y install libgoogle-perftools-dev && apt-get clean
cd stable-diffusion-webui ENV LD_PRELOAD=libtcmalloc.so
git fetch
git reset --hard ${SHA} ARG SHA=a9fed7c364061ae6efb37f797b6b522cb3cf7aa2
pip install -r requirements_versions.txt RUN --mount=type=cache,target=/root/.cache/pip \
EOF 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 RUN --mount=type=cache,target=/root/.cache/pip pip install -U opencv-python-headless
COPY . /docker COPY . /docker
RUN <<EOF RUN \
python3 /docker/info.py ${ROOT}/modules/ui.py python3 /docker/info.py ${ROOT}/modules/ui.py && \
mv ${ROOT}/style.css ${ROOT}/user.css mv ${ROOT}/style.css ${ROOT}/user.css && \
# one of the ugliest hacks I ever wrote # 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
EOF
WORKDIR ${ROOT} WORKDIR ${ROOT}
ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility
ENV NVIDIA_VISIBLE_DEVICES=all
ENV CLI_ARGS="" ENV CLI_ARGS=""
EXPOSE 7860 EXPOSE 7860
ENTRYPOINT ["/docker/entrypoint.sh"] ENTRYPOINT ["/docker/entrypoint.sh"]

View File

@@ -0,0 +1,11 @@
#!/bin/bash
set -Eeuox pipefail
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

View File

@@ -35,6 +35,8 @@ MOUNTS["${ROOT}/models/torch_deepdanbooru"]="/data/Deepdanbooru"
MOUNTS["${ROOT}/models/BLIP"]="/data/BLIP" MOUNTS["${ROOT}/models/BLIP"]="/data/BLIP"
MOUNTS["${ROOT}/models/midas"]="/data/MiDaS" MOUNTS["${ROOT}/models/midas"]="/data/MiDaS"
MOUNTS["${ROOT}/models/Lora"]="/data/Lora" MOUNTS["${ROOT}/models/Lora"]="/data/Lora"
MOUNTS["${ROOT}/models/ControlNet"]="/data/ControlNet"
MOUNTS["${ROOT}/models/openpose"]="/data/openpose"
MOUNTS["${ROOT}/embeddings"]="/data/embeddings" MOUNTS["${ROOT}/embeddings"]="/data/embeddings"
MOUNTS["${ROOT}/config.json"]="/data/config/auto/config.json" MOUNTS["${ROOT}/config.json"]="/data/config/auto/config.json"

View File

@@ -3,7 +3,7 @@
set -Eeuo pipefail set -Eeuo pipefail
# TODO: maybe just use the .gitignore file to create all of these # 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 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
echo "Downloading, this might take a while..." echo "Downloading, this might take a while..."

View File

@@ -1,5 +1,3 @@
# syntax=docker/dockerfile:1
FROM alpine:3.17 as xformers FROM alpine:3.17 as xformers
RUN apk add --no-cache aria2 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.0/xformers-0.0.17.dev449-cp310-cp310-manylinux2014_x86_64.whl'
@@ -7,66 +5,54 @@ RUN aria2c -x 5 --dir / --out wheel.whl 'https://github.com/AbdBarho/stable-diff
FROM python:3.10-slim FROM python:3.10-slim
SHELL ["/bin/bash", "-ceuxo", "pipefail"]
ENV DEBIAN_FRONTEND=noninteractive PIP_EXISTS_ACTION=w PIP_PREFER_BINARY=1 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 --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 <<EOF
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
EOF
# patch match: # patch match:
# https://github.com/invoke-ai/InvokeAI/blob/main/docs/installation/INSTALL_PATCHMATCH.md # https://github.com/invoke-ai/InvokeAI/blob/main/docs/installation/INSTALL_PATCHMATCH.md
RUN <<EOF RUN --mount=type=cache,target=/var/cache/apt \
apt-get update apt-get update && \
# apt-get install build-essential python3-opencv libopencv-dev -y apt-get install make g++ git libopencv-dev -y && \
apt-get install make g++ libopencv-dev -y apt-get clean && \
apt-get clean cd /usr/lib/x86_64-linux-gnu/pkgconfig/ && \
cd /usr/lib/x86_64-linux-gnu/pkgconfig/ ln -sf opencv4.pc opencv.pc
ln -sf opencv4.pc opencv.pc
EOF
ARG BRANCH=main SHA=6551527fe249dc7a44e3fab9db9451c0dc3ad851
RUN --mount=type=cache,target=/root/.cache/pip <<EOF
git fetch
git reset --hard
git checkout ${BRANCH}
git reset --hard ${SHA}
pip install .
# egrep -v '^-e .' environments-and-requirements/requirements-lin-cuda.txt > req.txt
# pip install -r req.txt
# rm req.txt
EOF
ENV ROOT=/InvokeAI
RUN git clone https://github.com/invoke-ai/InvokeAI.git ${ROOT}
WORKDIR ${ROOT}
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.15-cp310-cp310-linux_x86_64.whl \ git reset --hard 4463124bddd221c333d4c70e73aa2949ad35453d && \
pip install -U opencv-python-headless huggingface_hub triton /xformers-0.0.15-cp310-cp310-linux_x86_64.whl && \ 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 -U .
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 && \
python3 -c "from patchmatch import patch_match" python3 -c "from patchmatch import patch_match"
RUN touch invokeai.init
COPY . /docker/ COPY . /docker/
# mkdir configs && cp invokeai/configs/INITIAL_MODELS.yaml configs/models.yaml 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 EXPOSE 7860
ENTRYPOINT ["/docker/entrypoint.sh"] 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

View File

@@ -4,25 +4,25 @@ set -Eeuo pipefail
declare -A MOUNTS declare -A MOUNTS
mkdir -p ${CONFIG_DIR}
# cache # cache
MOUNTS["/root/.cache"]=/data/.cache/ MOUNTS["/root/.cache"]=/data/.cache/
# this is really just a hack to avoid migrations
rm -rf ${HF_HOME}/diffusers
# ui specific # ui specific
MOUNTS["${ROOT}/models/codeformer"]=/data/Codeformer/ MOUNTS["${ROOT}/models/codeformer"]=/data/Codeformer/
MOUNTS["${ROOT}/models/gfpgan/GFPGANv1.4.pth"]=/data/GFPGAN/GFPGANv1.4.pth 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/realesrgan"]=/data/RealESRGAN/
MOUNTS["${ROOT}/models/bert-base-uncased"]=/data/.cache/huggingface/transformers/ MOUNTS["${ROOT}/models/ldm"]=/data/.cache/invoke/ldm/
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}/embeddings"]=/data/embeddings/ MOUNTS["${ROOT}/embeddings"]=/data/embeddings/
# hacks # hacks
MOUNTS["${ROOT}/models/clipseg"]=/data/.cache/invoke/clipseg/
for to_path in "${!MOUNTS[@]}"; do for to_path in "${!MOUNTS[@]}"; do
set -Eeuo pipefail set -Eeuo pipefail
@@ -38,9 +38,10 @@ for to_path in "${!MOUNTS[@]}"; do
echo Mounted $(basename "${from_path}") echo Mounted $(basename "${from_path}")
done done
# if "${PRELOAD}" == "true"; then if "${PRELOAD}" == "true"; then
# set -Eeuo pipefail set -Eeuo pipefail
# python3 -u scripts/preload_models.py --skip-sd-weights --root ${ROOT} --config_file /docker/models.yaml invokeai-configure --root ${ROOT} --yes
# fi cp ${ROOT}/configs/models.yaml ${CONFIG_DIR}/models.yaml
fi
exec "$@" exec "$@"

View File

@@ -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: /stable-diffusion/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: /stable-diffusion/invokeai/configs/stable-diffusion/v1-inpainting-inference.yaml
width: 512
height: 512
default: false

View File

@@ -1,45 +1,39 @@
# syntax=docker/dockerfile:1
FROM python:3.8-slim FROM python:3.8-slim
SHELL ["/bin/bash", "-ceuxo", "pipefail"]
ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1 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 --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 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 <<EOF RUN --mount=type=cache,target=/root/.cache/pip \
git config --global http.postBuffer 1048576000 git config --global http.postBuffer 1048576000 && \
git clone https://github.com/Sygil-Dev/sygil-webui.git stable-diffusion git clone https://github.com/Sygil-Dev/sygil-webui.git stable-diffusion && \
cd stable-diffusion cd stable-diffusion && \
git reset --hard 5291437085bddd16d752f811b6552419a2044d12 git reset --hard 5291437085bddd16d752f811b6552419a2044d12 && \
pip install -r requirements.txt pip install -r requirements.txt
EOF
ARG BRANCH=master SHA=571fb897edd58b714bb385dfaa1ad59aecef8bc7 ARG BRANCH=master SHA=571fb897edd58b714bb385dfaa1ad59aecef8bc7
RUN --mount=type=cache,target=/root/.cache/pip <<EOF RUN --mount=type=cache,target=/root/.cache/pip \
cd stable-diffusion cd stable-diffusion && \
git fetch git fetch && \
git checkout ${BRANCH} git checkout ${BRANCH} && \
git reset --hard ${SHA} git reset --hard ${SHA} && \
pip install -r requirements.txt pip install -r requirements.txt
EOF
RUN --mount=type=cache,target=/root/.cache/pip pip install -U 'transformers>=4.24' RUN --mount=type=cache,target=/root/.cache/pip pip install -U 'transformers>=4.24'
# add info # add info
COPY . /docker/ COPY . /docker/
RUN <<EOF RUN python /docker/info.py /stable-diffusion/frontend/frontend.py && \
python /docker/info.py /stable-diffusion/frontend/frontend.py chmod +x /docker/mount.sh /docker/run.sh && \
chmod +x /docker/mount.sh /docker/run.sh # streamlit \
# streamlit sed -i -- 's/8501/7860/g' /stable-diffusion/.streamlit/config.toml
sed -i -- 's/8501/7860/g' /stable-diffusion/.streamlit/config.toml
EOF
WORKDIR /stable-diffusion 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="" ENV PYTHONPATH="${PYTHONPATH}:${PWD}" STREAMLIT_SERVER_HEADLESS=true USE_STREAMLIT=0 CLI_ARGS=""
EXPOSE 7860 EXPOSE 7860