21 Commits
1.0.2 ... 1.2.0

Author SHA1 Message Date
AbdBarho
43a5e5e85f Update versions (#99)
- auto:
ca3e5519e8
- hlky:
1fd28eed1e
- lstein:
b40bfb5116
2022-09-26 08:31:47 +02:00
Rafael Goes
5bbc21ea3d Adding embeddings volume for auto textual inversion (#98)
Adding embeddings volume mapping for AUTOMATIC1111, enabling textual
inversion feature. As discussed in #93
2022-09-25 18:56:38 +02:00
AbdBarho
09366ed955 Ignore Updates 2022-09-25 12:42:33 +02:00
AbdBarho
d4874e7c3a Update versions (#96)
- auto:
a2bea2f97a
- hlky:
f585ab1923
   - New UI is still in works & extremely unstable
- lstein: No new updates, especially not to the UI
2022-09-24 11:10:11 +02:00
AbdBarho
7638fb4e5e Fix CLIP model caching #88 (#95)
Refs #88
hacky solution but works for now
2022-09-24 09:57:57 +02:00
AbdBarho
15a61a99d6 Explicit path to GFPGAN model (#91)
Refs #89
2022-09-23 16:38:50 +02:00
AbdBarho
556a50f49b Pin transformers version (#90)
Refs #88
2022-09-23 16:24:14 +02:00
AbdBarho
b899f4e516 Update (#87)
### Update versions

- auto:
d6fd71f36f
- hlky:
2a911049aa
2022-09-23 10:34:01 +02:00
AbdBarho
a8c85b4699 Update versions (#86)
- auto:
5a1951f175
  - Now with LDSR support
- hlky:
fa6a31b23c
- lstein: prepare for new UI

Closes #85
2022-09-21 19:10:27 +02:00
Abdullah Barhoum
a96285d10b Update License 2022-09-20 19:35:10 +02:00
AbdBarho
83b78fe504 Update versions (#82)
### Update versions

- auto: dd911a47b3
- hlky: 17748cbc9c
- lstein: 50d607ffea
2022-09-19 22:02:46 +02:00
AbdBarho
84f9cb84e7 Update versions (#77)
AUTOMATIC1111/stable-diffusion-webui@9e892d9

lstein/stable-diffusion@9bcb0df

transformers==4.22 for caching

Refs #78
2022-09-18 13:49:06 +02:00
AbdBarho
6a66ff6abb Update hlky to dev (#76)
Update hlky to dev

abb0c1c377
2022-09-17 16:09:54 +02:00
AbdBarho
59892da866 Custom Models Auto (#75) 2022-09-17 13:44:00 +02:00
Abdullah Barhoum
fceb83c2b0 Dev hlky 2022-09-16 21:10:40 +02:00
AbdBarho
17b01a7627 Parallel Downloads (#74) 2022-09-16 20:07:50 +02:00
Abdullah Barhoum
b96d7c30d0 make executable 2022-09-16 18:37:41 +02:00
AbdBarho
aae83bb8f2 Update lstein to dev branch (#73) 2022-09-16 16:40:20 +02:00
AbdBarho
10763a8f61 Update Git Post Buffer 2022-09-16 06:51:14 +02:00
AbdBarho
64e8f093d2 Create stale.yml 2022-09-16 06:41:49 +02:00
AbdBarho
3e0a137c23 Remove outdated (#69) 2022-09-15 22:48:38 +02:00
22 changed files with 244 additions and 234 deletions

5
.github/pull_request_template.md vendored Normal file
View File

@@ -0,0 +1,5 @@
### Update versions
- auto: https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/
- hlky: https://github.com/sd-webui/stable-diffusion-webui/commit/
- lstein: https://github.com/lstein/stable-diffusion/commit/

21
.github/workflows/stale.yml vendored Normal file
View File

@@ -0,0 +1,21 @@
name: 'Close stale issues and PRs'
on:
schedule:
- cron: '30 1 * * *'
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v5
with:
only-labels: awaiting-response
stale-issue-message: This issue is stale because it has been open 14 days with no activity. Remove stale label or comment or this will be closed in 7 days.
stale-pr-message: This PR is stale because it has been open 14 days with no activity. Remove stale label or comment or this will be closed in 7 days.
close-issue-message: This issue was closed because it has been stalled for 7 days with no activity.
close-pr-message: This PR was closed because it has been stalled for 7 days with no activity.
days-before-issue-stale: 14
days-before-pr-stale: 14
days-before-issue-close: 7
days-before-pr-close: 7
ignore-updates: true

1
.gitignore vendored
View File

@@ -1,2 +1,3 @@
/dev /dev
/.devcontainer /.devcontainer
embeddings/*

View File

@@ -86,4 +86,11 @@ administration of justice, law enforcement, immigration or asylum
processes, such as predicting an individual will commit fraud/crime processes, such as predicting an individual will commit fraud/crime
commitment (e.g. by text profiling, drawing causal relationships between commitment (e.g. by text profiling, drawing causal relationships between
assertions made in documents, indiscriminate and arbitrarily-targeted assertions made in documents, indiscriminate and arbitrarily-targeted
use). use).
By using this software, you also agree to the following licenses:
https://github.com/CompVis/stable-diffusion/blob/main/LICENSE
https://github.com/TencentARC/GFPGAN/blob/master/LICENSE
https://github.com/xinntao/Real-ESRGAN/blob/master/LICENSE

View File

@@ -16,6 +16,7 @@ This repository provides multiple UIs for you to play around with stable diffusi
- Loopback, prompt weighting, prompt matrix, X/Y plot - Loopback, prompt weighting, prompt matrix, X/Y plot
- Live preview of the generated images. - Live preview of the generated images.
- Highly optimized 4GB GPU support, or even CPU only! - Highly optimized 4GB GPU support, or even CPU only!
- Textual inversion allows you to use pretrained textual inversion embeddings
- [Full feature list here](https://github.com/AUTOMATIC1111/stable-diffusion-webui-feature-showcase) - [Full feature list here](https://github.com/AUTOMATIC1111/stable-diffusion-webui-feature-showcase)
| Text to image | Image to image | Extras | | Text to image | Image to image | Extras |
@@ -41,13 +42,18 @@ Screenshots:
### lstein ### lstein
[lstein's fork](https://github.com/lstein/stable-diffusion) is very mature when it comes to the cli, but less so for the WebUI. [lstein's fork](https://github.com/lstein/stable-diffusion) is very mature when it comes to the cli, and the WebUI has potential.
| Text to image | Image to image | Extras |
| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| ![](https://user-images.githubusercontent.com/24505302/190662506-dabdc967-93af-4d78-8533-394604d29ba4.jpg) | ![](https://user-images.githubusercontent.com/24505302/190662557-7640d9f0-30d8-4527-97b0-07d3f48108d4.jpg) | ![](https://user-images.githubusercontent.com/24505302/190662588-37a01fad-f993-4674-9ae6-8714aa229f7b.jpg) |
## Setup & Usage ## Setup & Usage
Visit the wiki for [Setup](https://github.com/AbdBarho/stable-diffusion-webui-docker/wiki/Setup) and [Usage](https://github.com/AbdBarho/stable-diffusion-webui-docker/wiki/Usage) instructions, checkout the [FAQ](https://github.com/AbdBarho/stable-diffusion-webui-docker/wiki/FAQ) page if you face any problems, or create a new issue! Visit the wiki for [Setup](https://github.com/AbdBarho/stable-diffusion-webui-docker/wiki/Setup) and [Usage](https://github.com/AbdBarho/stable-diffusion-webui-docker/wiki/Usage) instructions, checkout the [FAQ](https://github.com/AbdBarho/stable-diffusion-webui-docker/wiki/FAQ) page if you face any problems, or create a new issue!
## Contributing ## Contributing
Contributions are welcome! create an issue first of what you want to contribute (before you implement anything) so we can talk about it. Contributions are welcome! create an issue first of what you want to contribute (before you implement anything) so we can talk about it.
## Disclaimer ## Disclaimer

1
cache/.gitignore vendored
View File

@@ -2,3 +2,4 @@
/transformers /transformers
/weights /weights
/models /models
/custom-models

View File

@@ -38,8 +38,9 @@ services:
- *v1 - *v1
- *v2 - *v2
- ./services/AUTOMATIC1111/config.json:/stable-diffusion-webui/config.json - ./services/AUTOMATIC1111/config.json:/stable-diffusion-webui/config.json
- ./embeddings:/stable-diffusion-webui/embeddings
environment: environment:
- CLI_ARGS=--medvram --opt-split-attention - CLI_ARGS=--allow-code --medvram
automatic1111-cpu: automatic1111-cpu:
<<: *automatic <<: *automatic
@@ -52,3 +53,6 @@ services:
<<: *base_service <<: *base_service
profiles: ["lstein"] profiles: ["lstein"]
build: ./services/lstein/ build: ./services/lstein/
environment:
- PRELOAD=false
- CLI_ARGS=

View File

@@ -1,13 +1,19 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM alpine/git:2.36.2 as download FROM alpine/git:2.36.2 as download
RUN git clone https://github.com/CompVis/stable-diffusion.git repositories/stable-diffusion && cd repositories/stable-diffusion && git reset --hard 69ae4b35e0a0f6ee1af8bb9a5d0016ccb27e36dc
RUN git clone https://github.com/sczhou/CodeFormer.git repositories/CodeFormer && cd repositories/CodeFormer && git reset --hard c5b4593074ba6214284d6acd5f1719b6c5d739af
RUN git clone https://github.com/salesforce/BLIP.git repositories/BLIP && cd repositories/BLIP && git reset --hard 48211a1594f1321b00f14c9f7a5b4813144b2fb9
RUN git clone https://github.com/Hafiidz/latent-diffusion.git repositories/latent-diffusion && cd repositories/latent-diffusion && git reset --hard abf33e7002d59d9085081bce93ec798dcabd49af
RUN <<EOF RUN <<EOF
# because taming-transformers is huge # because taming-transformers is huge
git config --global http.postBuffer 1048576000 git config --global http.postBuffer 1048576000
git clone https://github.com/sczhou/CodeFormer.git repositories/CodeFormer
git clone https://github.com/CompVis/stable-diffusion.git repositories/stable-diffusion
git clone https://github.com/salesforce/BLIP.git repositories/BLIP
git clone https://github.com/CompVis/taming-transformers.git repositories/taming-transformers git clone https://github.com/CompVis/taming-transformers.git repositories/taming-transformers
git reset --hard 24268930bf1dce879235a7fddd0b2355b84d7ea6
rm -rf repositories/taming-transformers/data repositories/taming-transformers/assets rm -rf repositories/taming-transformers/data repositories/taming-transformers/assets
EOF EOF
@@ -27,27 +33,27 @@ RUN apt-get update && apt install fonts-dejavu-core rsync -y && apt-get clean
RUN <<EOF RUN <<EOF
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 13eec4f3d4081fdc43883c5ef02e471a2b6c7212 git reset --hard 7e77938230d4fefb6edccdba0b80b61d8416673e
conda env update --file environment-wsl2.yaml -n base
conda clean -a -y
pip install --prefer-binary --no-cache-dir -r requirements.txt pip install --prefer-binary --no-cache-dir -r requirements.txt
EOF EOF
ENV ROOT=/stable-diffusion-webui \ ENV ROOT=/stable-diffusion-webui \
WORKDIR=/stable-diffusion-webui/repositories/stable-diffusion WORKDIR=/stable-diffusion-webui/repositories/stable-diffusion
COPY --from=download /git/ ${ROOT} COPY --from=download /git/ ${ROOT}
RUN pip install --prefer-binary --no-cache-dir -r ${ROOT}/repositories/CodeFormer/requirements.txt RUN pip install --prefer-binary --no-cache-dir -r ${ROOT}/repositories/CodeFormer/requirements.txt
# 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=2ddaeb318a9626502ef4bf949a312253d8021ff0 ARG SHA=ca3e5519e8b6dc020c5e7ae508738afb5dc6f3ec
RUN <<EOF RUN <<EOF
cd stable-diffusion-webui cd stable-diffusion-webui
git pull --rebase git pull --rebase
git reset --hard ${SHA} git reset --hard ${SHA}
pip install --prefer-binary --no-cache-dir -r requirements.txt pip install --prefer-binary --no-cache-dir -r requirements.txt
pip install --prefer-binary --no-cache-dir -r requirements_versions.txt
EOF EOF
RUN pip install --prefer-binary -U --no-cache-dir opencv-python-headless RUN pip install --prefer-binary -U --no-cache-dir opencv-python-headless
@@ -55,10 +61,15 @@ RUN pip install --prefer-binary -U --no-cache-dir opencv-python-headless
ENV TRANSFORMERS_CACHE=/cache/transformers TORCH_HOME=/cache/torch CLI_ARGS="" ENV TRANSFORMERS_CACHE=/cache/transformers TORCH_HOME=/cache/torch CLI_ARGS=""
COPY . /docker COPY . /docker
RUN chmod +x /docker/mount.sh && python3 /docker/info.py ${ROOT}/modules/ui.py RUN <<EOF
chmod +x /docker/mount.sh && python3 /docker/info.py ${ROOT}/modules/ui.py
# hackiest of hacks, change default cache dir of clip #88
# https://github.com/openai/CLIP/blob/d50d76daa670286dd6cacf3bcd80b5e4823fc8e1/clip/clip.py#L94
sed -i -- 's/download_root: str = None/download_root: str = "\/cache\/weights"/' /opt/conda/lib/python3.8/site-packages/clip/clip.py
EOF
WORKDIR ${WORKDIR} WORKDIR ${WORKDIR}
EXPOSE 7860 EXPOSE 7860
# run, -u to not buffer stdout / stderr # run, -u to not buffer stdout / stderr
CMD /docker/mount.sh && python3 -u ../../webui.py --listen --port 7860 --hide-ui-dir-config ${CLI_ARGS} CMD /docker/mount.sh && \
python3 -u ../../webui.py --listen --port 7860 --hide-ui-dir-config --ckpt-dir /cache/custom-models --ckpt /cache/models/model.ckpt --gfpgan-model /cache/models/GFPGANv1.3.pth ${CLI_ARGS}

View File

@@ -1,14 +0,0 @@
# WebUI for AUTOMATIC1111
The WebUI of [AUTOMATIC1111/stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui) as docker container!
## Setup
Clone this repo, download the `model.ckpt` and `GFPGANv1.3.pth` and put into the `models` folder as mentioned in [the main README](../README.md), then run
```
cd AUTOMATIC1111
docker compose up --build
```
You can change the cli parameters in `AUTOMATIC1111/docker-compose.yml`. The full list of cil parameters can be found [here](https://github.com/AUTOMATIC1111/stable-diffusion-webui/blob/master/modules/shared.py)

View File

@@ -9,40 +9,71 @@
"font": "DejaVuSans.ttf", "font": "DejaVuSans.ttf",
"__WARNING__": "DON'T CHANGE ANYTHING BEFORE THIS", "__WARNING__": "DON'T CHANGE ANYTHING BEFORE THIS",
"samples_filename_format": "",
"outdir_grids": "",
"save_to_dirs": false,
"grid_save_to_dirs": false,
"save_to_dirs_prompt_len": 10,
"samples_save": true,
"samples_format": "png",
"grid_save": true,
"return_grid": true,
"grid_format": "png",
"grid_extended_filename": false,
"grid_only_if_multiple": true,
"n_rows": -1,
"jpeg_quality": 80,
"export_for_4chan": true,
"enable_pnginfo": true,
"add_model_hash_to_info": false, "add_model_hash_to_info": false,
"code_former_weight": 0.5,
"directories_filename_pattern": "",
"directories_max_prompt_words": 8,
"enable_batch_seeds": true,
"enable_emphasis": true, "enable_emphasis": true,
"save_txt": false, "enable_pnginfo": true,
"enable_quantization": false,
"ESRGAN_tile": 192, "ESRGAN_tile": 192,
"ESRGAN_tile_overlap": 8, "ESRGAN_tile_overlap": 8,
"random_artist_categories": [], "export_for_4chan": true,
"upscale_at_full_resolution_padding": 16,
"show_progressbar": true,
"show_progress_every_n_steps": 7,
"multiple_tqdm": true,
"face_restoration_model": null, "face_restoration_model": null,
"code_former_weight": 0.5,
"save_images_before_face_restoration": false,
"face_restoration_unload": false, "face_restoration_unload": false,
"filter_nsfw": false,
"grid_extended_filename": false,
"grid_format": "png",
"grid_only_if_multiple": true,
"grid_save": true,
"grid_save_to_dirs": false,
"img2img_color_correction": false,
"img2img_fix_steps": false,
"interrogate_clip_dict_limit": 1500,
"interrogate_clip_max_length": 48,
"interrogate_clip_min_length": 24,
"interrogate_clip_num_beams": 1,
"interrogate_keep_models_in_memory": false, "interrogate_keep_models_in_memory": false,
"interrogate_use_builtin_artists": true, "interrogate_use_builtin_artists": true,
"interrogate_clip_num_beams": 1, "jpeg_quality": 80,
"interrogate_clip_min_length": 24, "js_modal_lightbox": true,
"interrogate_clip_max_length": 48, "js_modal_lightbox_initialy_zoomed": true,
"interrogate_clip_dict_limit": 1500.0 "ldsr_post_down": 1,
"ldsr_pre_down": 1,
"ldsr_steps": 30,
"memmon_poll_rate": 8,
"multiple_tqdm": true,
"n_rows": -1,
"outdir_grids": "",
"random_artist_categories": [],
"realesrgan_enabled_models": [
"Real-ESRGAN 4x plus",
"Real-ESRGAN 4x plus anime 6B",
"Real-ESRGAN 2x plus",
"Real-ESRGAN AnimeVideo",
"Real-ESRGAN General WDN x4x3",
"Real-ESRGAN General x4x3"
],
"return_grid": true,
"samples_filename_format": "",
"samples_filename_pattern": "",
"samples_format": "png",
"samples_log_stdout": false,
"samples_save": true,
"save_images_before_color_correction": false,
"save_images_before_face_restoration": false,
"save_selected_only": false,
"save_to_dirs": false,
"save_to_dirs_prompt_len": 10,
"save_txt": false,
"sd_model_checkpoint": null,
"show_progress_every_n_steps": 7,
"show_progressbar": true,
"SWIN_tile": 192,
"SWIN_tile_overlap": 8,
"upscale_at_full_resolution_padding": 16,
"upscaler_for_hires_fix": null,
"upscaler_for_img2img": null,
"use_original_name_batch": false
} }

View File

@@ -4,8 +4,9 @@ set -e
declare -A MODELS declare -A MODELS
MODELS["${WORKDIR}/models/ldm/stable-diffusion-v1/model.ckpt"]=model.ckpt
MODELS["${ROOT}/GFPGANv1.3.pth"]=GFPGANv1.3.pth MODELS["${ROOT}/GFPGANv1.3.pth"]=GFPGANv1.3.pth
MODELS["${WORKDIR}/repositories/latent-diffusion/experiments/pretrained_models/model.chkpt"]=LDSR.ckpt
MODELS["${WORKDIR}/repositories/latent-diffusion/experiments/pretrained_models/project.yaml"]=LDSR.yaml
MODELS_DIR=/cache/models MODELS_DIR=/cache/models
@@ -32,5 +33,4 @@ rm -rf ${ROOT}/repositories/CodeFormer/weights/CodeFormer ${ROOT}/repositories/C
ln -sf -T /cache/weights ${ROOT}/repositories/CodeFormer/weights/CodeFormer ln -sf -T /cache/weights ${ROOT}/repositories/CodeFormer/weights/CodeFormer
ln -sf -T /cache/weights ${ROOT}/repositories/CodeFormer/weights/facelib ln -sf -T /cache/weights ${ROOT}/repositories/CodeFormer/weights/facelib
# mount config mkdir -p /cache/torch /cache/transformers /cache/weights /cache/models /cache/custom-models
# ln -sf /docker/config.json ${WORKDIR}/config.json

View File

@@ -1,6 +1,6 @@
FROM bash:alpine3.15 FROM bash:alpine3.15
RUN apk add parallel RUN apk add parallel aria2
COPY . /docker COPY . /docker
RUN chmod +x /docker/download.sh RUN chmod +x /docker/download.sh
ENTRYPOINT ["/docker/download.sh"] ENTRYPOINT ["/docker/download.sh"]

View File

@@ -2,32 +2,19 @@
set -Eeuo pipefail set -Eeuo pipefail
# [[ "$(sha256sum -b $file | head -c 64)" == "$sha" ]] mkdir -p /cache/torch /cache/transformers /cache/weights /cache/models /cache/custom-models
declare -A MODELS cat <<EOF
By using this software, you agree to the following licenses:
https://github.com/CompVis/stable-diffusion/blob/main/LICENSE
https://github.com/TencentARC/GFPGAN/blob/master/LICENSE
https://github.com/xinntao/Real-ESRGAN/blob/master/LICENSE
EOF
MODELS['model.ckpt']='https://www.googleapis.com/storage/v1/b/aai-blog-files/o/sd-v1-4.ckpt?alt=media' echo "Downloading, this might take a while..."
MODELS['GFPGANv1.3.pth']='https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth'
MODELS['RealESRGAN_x4plus.pth']='https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth'
MODELS['RealESRGAN_x4plus_anime_6B.pth']='https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth'
MODELS['LDSR.yaml']='https://heibox.uni-heidelberg.de/f/31a76b13ea27482981b4/?dl=1'
MODELS['LDSR.ckpt']='https://heibox.uni-heidelberg.de/f/578df07c8fc04ffbadf3/?dl=1'
echo "Downloading..." aria2c --input-file /docker/links.txt --dir /cache/models --continue
for file in "${!MODELS[@]}"; do
url=${MODELS[$file]}
full_path="/cache/models/$file"
if [[ -f "$full_path" ]]; then
echo "- $file exists"
continue
fi
mkdir -p $(dirname $full_path)
wget --tries=10 -c -O $full_path $url
done
echo "Checking SHAs..." echo "Checking SHAs..."
time parallel --will-cite -a /docker/checksums.sha256 "echo -n {} | sha256sum -c" parallel --will-cite -a /docker/checksums.sha256 "echo -n {} | sha256sum -c"

View File

@@ -0,0 +1,12 @@
https://www.googleapis.com/storage/v1/b/aai-blog-files/o/sd-v1-4.ckpt?alt=media
out=model.ckpt
https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth
out=GFPGANv1.3.pth
https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth
out=RealESRGAN_x4plus.pth
https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth
out=RealESRGAN_x4plus_anime_6B.pth
https://heibox.uni-heidelberg.de/f/31a76b13ea27482981b4/?dl=1
out=LDSR.yaml
https://heibox.uni-heidelberg.de/f/578df07c8fc04ffbadf3/?dl=1
out=LDSR.ckpt

View File

@@ -13,6 +13,7 @@ RUN apt-get update && apt install fonts-dejavu-core rsync gcc -y && apt-get clea
RUN <<EOF RUN <<EOF
git config --global http.postBuffer 1048576000
git clone https://github.com/sd-webui/stable-diffusion-webui.git stable-diffusion git clone https://github.com/sd-webui/stable-diffusion-webui.git stable-diffusion
cd stable-diffusion cd stable-diffusion
git reset --hard 7623a5734740025d79b710f3744bff9276e1467b git reset --hard 7623a5734740025d79b710f3744bff9276e1467b
@@ -20,15 +21,11 @@ conda env update --file environment.yaml -n base
conda clean -a -y conda clean -a -y
EOF EOF
# new dependency, should be added to the environment.yaml
RUN pip install -U --no-cache-dir pyperclip
# 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 BRANCH=master # ARG BRANCH=master SHA=d0bb60a139d60e6c2b9be4e18e0e29a86aa5af59
ARG SHA=833a91047df999302f699637768741cecee9c37b ARG BRANCH=dev SHA=1fd28eed1ebc3aa04b9b00e2a899f3bf07f64bdc
# ARG BRANCH=dev
# ARG SHA=b4de6caf697d311c1238c15a4c863fa529a35522
RUN <<EOF RUN <<EOF
cd stable-diffusion cd stable-diffusion
git fetch git fetch
@@ -38,26 +35,16 @@ conda env update --file environment.yaml -n base
conda clean -a -y conda clean -a -y
EOF EOF
# Latent diffusion RUN pip install -U --no-cache-dir pyperclip
RUN <<EOF
git clone https://github.com/Hafiidz/latent-diffusion.git
cd latent-diffusion
git reset --hard e1a84a89fcbb49881546cf2acf1e7e250923dba0
# hacks all the way down
mv ldm ldm_latent &&
sed -i -- 's/from ldm/from ldm_latent/g' *.py
# dont forget to update the yaml!!
EOF
# add info # add info
COPY . /docker/ COPY . /docker/
RUN python /docker/info.py /stable-diffusion/frontend/frontend.py && chmod +x /docker/mount.sh RUN python /docker/info.py /stable-diffusion/frontend/frontend.py && chmod +x /docker/mount.sh
WORKDIR /stable-diffusion WORKDIR /stable-diffusion
ENV TRANSFORMERS_CACHE=/cache/transformers TORCH_HOME=/cache/torch CLI_ARGS="" ENV TRANSFORMERS_CACHE=/cache/transformers TORCH_HOME=/cache/torch PYTHONPATH="${PYTHONPATH}:${PWD}" CLI_ARGS=""
EXPOSE 7860 EXPOSE 7860
# run, -u to not buffer stdout / stderr # run, -u to not buffer stdout / stderr
CMD /docker/mount.sh && \ CMD /docker/mount.sh && \
python3 -u scripts/webui.py --outdir /output --ckpt /cache/models/model.ckpt --ldsr-dir /latent-diffusion --inbrowser ${CLI_ARGS} python3 -u scripts/webui.py --outdir /output --ckpt /cache/models/model.ckpt ${CLI_ARGS}
# STREAMLIT_SERVER_PORT=7860 python -m streamlit run scripts/webui_streamlit.py # STREAMLIT_SERVER_PORT=7860 python -m streamlit run scripts/webui_streamlit.py --theme.base dark

View File

@@ -9,8 +9,8 @@ ROOT=/stable-diffusion/src
MODELS["${ROOT}/gfpgan/experiments/pretrained_models/GFPGANv1.3.pth"]=GFPGANv1.3.pth MODELS["${ROOT}/gfpgan/experiments/pretrained_models/GFPGANv1.3.pth"]=GFPGANv1.3.pth
MODELS["${ROOT}/realesrgan/experiments/pretrained_models/RealESRGAN_x4plus.pth"]=RealESRGAN_x4plus.pth MODELS["${ROOT}/realesrgan/experiments/pretrained_models/RealESRGAN_x4plus.pth"]=RealESRGAN_x4plus.pth
MODELS["${ROOT}/realesrgan/experiments/pretrained_models/RealESRGAN_x4plus_anime_6B.pth"]=RealESRGAN_x4plus_anime_6B.pth MODELS["${ROOT}/realesrgan/experiments/pretrained_models/RealESRGAN_x4plus_anime_6B.pth"]=RealESRGAN_x4plus_anime_6B.pth
MODELS["/latent-diffusion/experiments/pretrained_models/model.ckpt"]=LDSR.ckpt MODELS["${ROOT}/latent-diffusion/experiments/pretrained_models/model.ckpt"]=LDSR.ckpt
# MODELS["/latent-diffusion/experiments/pretrained_models/project.yaml"]=LDSR.yaml MODELS["${ROOT}/latent-diffusion/experiments/pretrained_models/project.yaml"]=LDSR.yaml
MODELS_DIR=/cache/models MODELS_DIR=/cache/models
@@ -25,14 +25,9 @@ for path in "${!MODELS[@]}"; do
fi fi
done done
# hack for latent-diffusion
if test -f "${MODELS_DIR}/LDSR.yaml"; then
sed 's/ldm\./ldm_latent\./g' "${MODELS_DIR}/LDSR.yaml" >/latent-diffusion/experiments/pretrained_models/project.yaml
fi
# force facexlib cache # force facexlib cache
mkdir -p /cache/weights/ /stable-diffusion/gfpgan/ mkdir -p /cache/weights/ /stable-diffusion/gfpgan/
ln -sf /cache/weights/ /stable-diffusion/gfpgan/ ln -sf /cache/weights/ /stable-diffusion/gfpgan/
# streamlit config # streamlit config
ln -sf /docker/webui_streamlit.yaml /stable-diffusion/configs/webui/webui_streamlit.yaml ln -sf /docker/userconfig_streamlit.yaml /stable-diffusion/configs/webui/userconfig_streamlit.yaml

View File

@@ -0,0 +1,8 @@
general:
outdir: /outputs
default_model: "Stable Diffusion v1.4"
default_model_path: /cache/models/model.ckpt
outdir_txt2img: /outputs/txt2img-samples
outdir_img2img: /outputs/img2img-samples
optimized: True
optimized_turbo: True

View File

@@ -1,102 +0,0 @@
# UI defaults configuration file. It is automatically loaded if located at configs/webui/webui_streamlit.yaml.
general:
gpu: 0
outdir: /outputs
ckpt: "/cache/models/model.ckpt"
fp:
name: "embeddings/alex/embeddings_gs-11000.pt"
GFPGAN_dir: "./src/gfpgan"
RealESRGAN_dir: "./src/realesrgan"
RealESRGAN_model: "RealESRGAN_x4plus"
outdir_txt2img: /outputs/txt2img-samples
outdir_img2img: /outputs/img2img-samples
gfpgan_cpu: False
esrgan_cpu: False
extra_models_cpu: False
extra_models_gpu: False
save_metadata: True
skip_grid: False
skip_save: False
grid_format: "jpg:95"
save_format: "png"
n_rows: -1
no_verify_input: False
no_half: False
precision: "autocast"
optimized: False
optimized_turbo: False
update_preview: True
update_preview_frequency: 1
txt2img:
prompt:
height: 512
width: 512
cfg_scale: 5.0
seed: ""
batch_count: 1
batch_size: 1
sampling_steps: 50
default_sampler: "k_lms"
separate_prompts: False
normalize_prompt_weights: True
save_individual_images: True
save_grid: True
group_by_prompt: True
save_as_jpg: False
use_GFPGAN: True
use_RealESRGAN: True
RealESRGAN_model: "RealESRGAN_x4plus"
variant_amount: 0.0
variant_seed: ""
img2img:
prompt:
sampling_steps: 50
# Adding an int to toggles enables the corresponding feature.
# 0: Create prompt matrix (separate multiple prompts using |, and get all combinations of them)
# 1: Normalize Prompt Weights (ensure sum of weights add up to 1.0)
# 2: Loopback (use images from previous batch when creating next batch)
# 3: Random loopback seed
# 4: Save individual images
# 5: Save grid
# 6: Sort samples by prompt
# 7: Write sample info files
# 8: jpg samples
# 9: Fix faces using GFPGAN
# 10: Upscale images using Real-ESRGAN
sampler_name: k_lms
denoising_strength: 0.45
# 0: Keep masked area
# 1: Regenerate only masked area
mask_mode: 0
# 0: Just resize
# 1: Crop and resize
# 2: Resize and fill
resize_mode: 0
# Leave blank for random seed:
seed: ""
ddim_eta: 0.0
cfg_scale: 5.0
batch_count: 1
batch_size: 1
height: 512
width: 512
# Textual inversion embeddings file path:
fp: ""
loopback: True
random_seed_loopback: True
separate_prompts: False
normalize_prompt_weights: True
save_individual_images: True
save_grid: True
group_by_prompt: True
save_as_jpg: False
use_GFPGAN: True
use_RealESRGAN: True
RealESRGAN_model: "RealESRGAN_x4plus"
variant_amount: 0.0
variant_seed: ""
gfpgan:
strength: 100

View File

@@ -6,26 +6,51 @@ SHELL ["/bin/bash", "-ceuxo", "pipefail"]
ENV DEBIAN_FRONTEND=noninteractive ENV DEBIAN_FRONTEND=noninteractive
RUN conda install python=3.8.5 && conda clean -a -y # now it requires python3.9
RUN conda install python=3.9 && conda clean -a -y
RUN conda install pytorch==1.11.0 torchvision==0.12.0 cudatoolkit=11.3 -c pytorch && conda clean -a -y RUN conda install pytorch==1.11.0 torchvision==0.12.0 cudatoolkit=11.3 -c pytorch && conda clean -a -y
RUN apt-get update && apt install fonts-dejavu-core rsync gcc -y && apt-get clean RUN apt-get update && apt install fonts-dejavu-core rsync gcc -y && apt-get clean
RUN <<EOF RUN <<EOF
git clone https://github.com/lstein/stable-diffusion.git git clone https://github.com/invoke-ai/InvokeAI.git stable-diffusion
cd stable-diffusion cd stable-diffusion
git reset --hard 751283a2de81bee4bb571fbabe4adb19f1d85b97 git reset --hard a1739a73b48bfe98b6abcb67f5a0197a9ad270e0
sed -i -- 's/python=3.8.5/python=3.9/g' environment.yaml
conda env update --file environment.yaml -n base conda env update --file environment.yaml -n base
conda clean -a -y conda clean -a -y
EOF EOF
ENV TRANSFORMERS_CACHE=/cache/transformers TORCH_HOME=/cache/torch CLI_ARGS=""
ARG BRANCH=development SHA=b40bfb5116b7fc618f78a0d152005ceb46153443
# this breaks on generation:
# there is a new UI anyway, but it is not by any means ready.
# ARG BRANCH=development SHA=bdbc76fcd4bd3362312dc91b087d9af66de423b1
RUN <<EOF
cd stable-diffusion
git fetch
git reset --hard
git checkout ${BRANCH}
git reset --hard ${SHA}
conda env update --file environment.yaml -n base
conda clean -a -y
EOF
RUN pip uninstall opencv-python -y && pip install --prefer-binary --force-reinstall --no-cache-dir opencv-python-headless transformers==4.19.2
COPY . /docker/
RUN <<EOF
python3 /docker/info.py /stable-diffusion/static/dream_web/index.html
chmod +x /docker/mount.sh
sed -i -- 's/outputs\//\/output/g' /stable-diffusion/backend/server.py
EOF
ENV TRANSFORMERS_CACHE=/cache/transformers TORCH_HOME=/cache/torch PRELOAD=false CLI_ARGS=""
WORKDIR /stable-diffusion WORKDIR /stable-diffusion
EXPOSE 7860 EXPOSE 7860
# run, -u to not buffer stdout / stderr
CMD mkdir -p /stable-diffusion/models/ldm/stable-diffusion-v1/ && \ CMD /docker/mount.sh && \
ln -sf /cache/models/model.ckpt /stable-diffusion/models/ldm/stable-diffusion-v1/model.ckpt && \
python3 -u scripts/dream.py --outdir /output --web --host 0.0.0.0 --port 7860 ${CLI_ARGS} python3 -u scripts/dream.py --outdir /output --web --host 0.0.0.0 --port 7860 ${CLI_ARGS}
# python3 -u backend/server.py --host 0.0.0.0 --port 9090

View File

@@ -1,14 +0,0 @@
# WebUI for lstein
The WebUI of [lstein/stable-diffusion](https://github.com/lstein/stable-diffusion) as docker container!
Although it is a simple UI, the project has a lot of potential.
## Setup
Clone this repo, download the `model.ckpt` and put into the `models` folder as mentioned in [the main README](../README.md), then run
```
cd lstein
docker compose up --build
```

10
services/lstein/info.py Normal file
View File

@@ -0,0 +1,10 @@
import sys
from pathlib import Path
file = Path(sys.argv[1])
file.write_text(
file.read_text()\
.replace('GitHub site</a>', """
GitHub site</a>, Deployed with <a href="https://github.com/AbdBarho/stable-diffusion-webui-docker/">stable-diffusion-webui-docker</a>
""", 1)
)

29
services/lstein/mount.sh Executable file
View File

@@ -0,0 +1,29 @@
#!/bin/bash
set -eu
ROOT=/stable-diffusion
mkdir -p "${ROOT}/models/ldm/stable-diffusion-v1/"
ln -sf /cache/models/model.ckpt "${ROOT}/models/ldm/stable-diffusion-v1/model.ckpt"
base="${ROOT}/src/gfpgan/experiments/pretrained_models/"
mkdir -p "${base}"
# TODO: "real" GFPGANv1.4.pth
ln -sf /cache/models/GFPGANv1.3.pth "${base}/GFPGANv1.4.pth"
echo "Mounted GFPGANv1.3.pth"
# facexlib
FACEX_WEIGHTS=/opt/conda/lib/python3.9/site-packages/facexlib/weights
rm -rf "${FACEX_WEIGHTS}"
mkdir -p /cache/weights
ln -sf -T /cache/weights "${FACEX_WEIGHTS}"
REALESRGAN_WEIGHTS=/opt/conda/lib/python3.9/site-packages/realesrgan/weights
rm -rf "${REALESRGAN_WEIGHTS}"
ln -sf -T /cache/weights "${REALESRGAN_WEIGHTS}"
if "${PRELOAD}" == "true"; then
python3 -u scripts/preload_models.py
fi