From 2dee638550da45f40355a90970202da6bf965816 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 28 Dec 2023 10:55:13 -0500 Subject: [PATCH 1/6] fix: Re-add memory leak fix Looks like this was lost in a merge at some point grokuku/stable-diffusion#2 --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 1a5b8e8..b55402a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,7 +34,8 @@ RUN apt-get update -y -q=2 && \ python3-opencv \ libopencv-dev \ dotnet-sdk-7.0 \ - git && \ + git \ + libgoogle-perftools-dev && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* From ead42adf3530b6da2e556564d811263f86e3d8a6 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 28 Dec 2023 11:04:04 -0500 Subject: [PATCH 2/6] fix(sdnext): Fix embeddings source location embeddings folder differs compared to stable-diffusion-webui -- in sd.next it is located in models/embeddings instead of top level https://github.com/vladmandic/automatic/blob/439542d3df3d2d6cefbe2360966a6566bc1de341/modules/shared.py#L385 --- 04.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/04.sh b/04.sh index 5ef7d4f..931347e 100755 --- a/04.sh +++ b/04.sh @@ -71,7 +71,7 @@ sl_folder ${SD04_DIR}/webui/models Stable-diffusion ${BASE_DIR}/models stable-di sl_folder ${SD04_DIR}/webui/models hypernetworks ${BASE_DIR}/models hypernetwork sl_folder ${SD04_DIR}/webui/models Lora ${BASE_DIR}/models lora sl_folder ${SD04_DIR}/webui/models VAE ${BASE_DIR}/models vae -sl_folder ${SD04_DIR}/webui embeddings ${BASE_DIR}/models embeddings +sl_folder ${SD04_DIR}/webui/models embeddings ${BASE_DIR}/models embeddings sl_folder ${SD04_DIR}/webui/models ESRGAN ${BASE_DIR}/models upscale sl_folder ${SD04_DIR}/webui/models Codeformer ${BASE_DIR}/models codeformer sl_folder ${SD04_DIR}/webui/models GFPGAN ${BASE_DIR}/models gfpgan From 52ebda0a59a7e827a2bb4e3aabee46b98f7f8b33 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 28 Dec 2023 11:55:55 -0500 Subject: [PATCH 3/6] docs: Improve readme and doc examples * Move docker-compose example into its own file to make git history more readable * Move old changelog into own file * Will be covered in the future by Releases? * Add WEBUI_VERSION usage to readme * Add notes/behavior for individual projects where improvements have been added --- CHANGELOG.md | 36 +++++++++++++ README.md | 123 +++++++++++++++++++-------------------------- docker-compose.yml | 20 ++++++++ 3 files changed, 108 insertions(+), 71 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 docker-compose.yml diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..99ee52d --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,36 @@ +**Subsequent changelog history can be found in Releases** + +- **Version 2.0.2** : + move .cache folder to stable-diffusion/temp to avoid filling unraid's docker.img file. + (hopefully) fix all the things I broke in the last update :) + +- **Version 2.0.0** : + Utilize Conda to manage dependencies efficiently. + Prepared for Reactor in Auto1111, SD-Next, and ComfyUI. + More common folders merged in the models folder. + Split install scripts for easier maintenance. + Implemented various fixes. + +- **Version 1.5.1** : + Added a fix for Automatic1111/dreambooth + +- **Version 1.5.0** : + Added StableSwarm and VoltaML + +- **Version 1.4.0** : + Added FaceFusion + +- **Version 1.3.0** : + Added Kubin (Kubin is only for testing, not production ready) + Corrected update of ComfyUI at startup not working + +- **Version 1.2.0** : + Added Lama-cleaner and Kohya + +- **Version 1.1.0** : + Added Focus as interface 06 + Small Fixes + +- **Version 1.0.0** : + Lots of modifications on directory structure. + Before using this version it's best to do a backup, do a clean install and restore models,loras, ect from the backup. \ No newline at end of file diff --git a/README.md b/README.md index c2f3417..0369aa6 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,10 @@ [![Docker Pulls](https://img.shields.io/docker/pulls/holaflenain/stable-diffusion)](https://hub.docker.com/r/holaflenain/stable-diffusion) -The goal of this docker container is to provide an easy way to run different WebUI and other tools related to Image Generation (mostly stable-diffusion). - +The goal of this docker container is to provide an easy way to run different WebUI/projects and other tools related to Image Generation (mostly stable-diffusion). + +# Projects + Please consult each respective website for a comprehensive description and usage guidelines. | WEBUI | Name | | | |-------|-------------------|----------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------| @@ -21,9 +23,23 @@ Please consult each respective website for a comprehensive description and usage | 70 | Kohya | Kohya's GUI provides a Windows-focused Gradio GUI for Kohya's Stable Diffusion trainers | https://github.com/bmaltais/kohya_ss | -## Usage +# Usage + +Unraid template available on [superboki's Repository](https://github.com/superboki/UNRAID-FR/tree/main/stable-diffusion-advanced) (search stable-diffusion in community apps) + +## Choosing a Project -Unraid template available on superboki's Repository (search diffusion in community apps) +Use the environmental variable `WEBUI_VERSION` to choose which [project](#projects) to install and use based on the number in the **WEBUI** column. [easy diffusion](https://github.com/easydiffusion/easydiffusion) (`01`) is installed if none is specified. + +Example: To use SD.Next => `WEBUI_VERSION=04` + +``` +docker run ... -e WEBUI_VERSION=04 ... holaflenain/stable-diffusion +``` + +or modify `WEBUI_VERSION` in [docker-compose.yml](/docker-compose.yml) + +## Docker Notes ### Using PUID and PGID @@ -45,36 +61,11 @@ Then add to your docker command like so: docker run -d ... -e "PUID=1000" -e "PGID=1000" ... holaflenain/stable-diffusion ``` -or substitute them in the docker-compose examples below. - -#### Docker Compose Example +or substitute them in [docker-compose.yml](/docker-compose.yml) +### Docker Compose -Using Easy-Diffusion as an example: - -```yaml -version: '3.1' -services: - stable-diffusion-test: - image: holaflenain/stable-diffusion:latest - container_name: stable-diffusion - environment: - - WEBUI_VERSION=01 - - NVIDIA_VISIBLE_DEVICES=all - - TZ=Europe/Paris - - PUID=1000 - - PGID=1000 - ports: - - '9000:9000/tcp' - volumes: - - '/my/own/datadir:/config:rw' - # or specify individual dirs - #- '/my/own/datadir:/config:rw' # config/program dir - #- '/my/own/datadir/outputs:/config/outputs:rw' - #- '/my/own/datadir/cache:/config/cache:rw' - runtime: nvidia - -``` +Reference [docker-compose.yml](/docker-compose.yml) which uses Easy-Diffusion as an example. ## Directory Structure @@ -105,46 +96,36 @@ By default, each user interface will save data in its own directory, which is au ├── 50-lama-cleaner └── 51-facefusion +## Project Notes + +Some projects have modified install/startup changes to address performance or suggested fixes. + +General changes are listed below and **specified in notes if they apply.** Specific project modifications are listed below these. + +###### Clean Environment + +When the container starts if the installed project is outdated compared to the _upstream project_ then the latest code is pulled and dependencies for installation are wiped and re-installed. Subsequent container starts will be much faster since the project will not be re-installed. This behavior can be **forced** by setting the docker environmental variable `CLEAN_ENV=true`. -## History -- **Version 2.0.2** : -move .cache folder to stable-diffusion/temp to avoid filling unraid's docker.img file. -(hopefully) fix all the things I broke in the last update :) - -- **Version 2.0.0** : -Utilize Conda to manage dependencies efficiently. -Prepared for Reactor in Auto1111, SD-Next, and ComfyUI. -More common folders merged in the models folder. -Split install scripts for easier maintenance. -Implemented various fixes. - -- **Version 1.5.1** : -Added a fix for Automatic1111/dreambooth - -- **Version 1.5.0** : -Added StableSwarm and VoltaML - -- **Version 1.4.0** : -Added FaceFusion - -- **Version 1.3.0** : -Added Kubin (Kubin is only for testing, not production ready) -Corrected update of ComfyUI at startup not working - -- **Version 1.2.0** : -Added Lama-cleaner and Kohya - -- **Version 1.1.0** : -Added Focus as interface 06 -Small Fixes - -- **Version 1.0.0** : -Lots of modifications on directory structure. -Before using this version it's best to do a backup, do a clean install and restore models,loras, ect from the backup. -## Troubleshoot : -First thing to try when a UI refuse to launch, remove the cache and the numbered folder (ex :02-sd-webui ) then relaunch the container +#### Stable Diffusion WebUI (02) Notes + +* Uses [Clean Environment](#clean-environment) performance improvement + +#### SD.Next (04) Notes + +* Uses [Clean Environment](#clean-environment) performance improvement +* Uses an updated `malloc` library to fix a [memory leak](https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/6850#issuecomment-1432435503) + * This can be turned off by removing the line `export LD_PRELOAD=libtcmalloc.so` from `04-SD-Next/webui/webui-user.sh` (but do not delete the file!) + +# History + +See [**Changelog**](/CHANGELOG.md) -## Support : +# Support + Support for the container available here : https://forums.unraid.net/topic/143645-support-stable-diffusion-advanced/ -Support for the WebUIs available on their respective pages. \ No newline at end of file +Support for the WebUIs available on their respective pages. + +## Troubleshooting + +First thing to try when a UI refuse to launch, remove the cache and the numbered folder (ex :02-sd-webui ) then relaunch the container \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..339531b --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,20 @@ +version: '3.1' +services: + stable-diffusion-test: + image: holaflenain/stable-diffusion:latest + container_name: stable-diffusion + environment: + - WEBUI_VERSION=01 + - NVIDIA_VISIBLE_DEVICES=all + - TZ=Europe/Paris + - PUID=1000 + - PGID=1000 + ports: + - '9000:9000/tcp' + volumes: + - '/my/own/datadir:/config:rw' + # or specify individual dirs + #- '/my/own/datadir:/config:rw' # config/program dir + #- '/my/own/datadir/outputs:/config/outputs:rw' + #- '/my/own/datadir/cache:/config/cache:rw' + runtime: nvidia \ No newline at end of file From ada4ee74badd1ec2be7a8f84881e34b132b7a18c Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Thu, 28 Dec 2023 12:38:28 -0500 Subject: [PATCH 4/6] fix(sdnext): Use more robust memory fix solution * Use libtcmalloc-minimal4 since its already installed (no additional dependencies * Export only if dependency is found * Export in startup script so we don't have to modify user files ie webui-user.sh --- 04.sh | 13 ++++++++----- Dockerfile | 3 +-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/04.sh b/04.sh index 5ef7d4f..992488c 100755 --- a/04.sh +++ b/04.sh @@ -45,11 +45,14 @@ if [ ! -f "$SD04_DIR/parameters.txt" ]; then fi # Load updated malloc to fix memory leak # https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/6850#issuecomment-1432435503 -if [ ! -f "$SD04_DIR/webui/webui-user.sh" ]; then -cat >"$SD04_DIR/webui/webui-user.sh" < Date: Thu, 28 Dec 2023 12:42:01 -0500 Subject: [PATCH 5/6] docs: Update sd.next memory leak documentation #13 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0369aa6..81a3369 100644 --- a/README.md +++ b/README.md @@ -114,8 +114,8 @@ When the container starts if the installed project is outdated compared to the _ #### SD.Next (04) Notes * Uses [Clean Environment](#clean-environment) performance improvement -* Uses an updated `malloc` library to fix a [memory leak](https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/6850#issuecomment-1432435503) - * This can be turned off by removing the line `export LD_PRELOAD=libtcmalloc.so` from `04-SD-Next/webui/webui-user.sh` (but do not delete the file!) +* Uses an updated `malloc` library to fix a [memory leak](https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/6722) + * This can be turned off by adding the docker environmental variable `NO_TCMALLOC=true` # History From 0ea0566d4fe6111e2afdb7f34619919ec6a61f1e Mon Sep 17 00:00:00 2001 From: Webifi Date: Thu, 28 Dec 2023 22:48:09 -0600 Subject: [PATCH 6/6] Add ComfyUI-Manager --- 05.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/05.sh b/05.sh index bd43839..03c47a0 100755 --- a/05.sh +++ b/05.sh @@ -26,6 +26,13 @@ if [ ! -d ${SD05_DIR}/ComfyUI ]; then git clone https://github.com/comfyanonymous/ComfyUI ${SD05_DIR}/ComfyUI fi +if [ ! -d ${SD05_DIR}/ComfyUI/custom_nodes/ComfyUI-Manager ]; then + git clone https://github.com/ltdrdata/ComfyUI-Manager.git ${SD05_DIR}/ComfyUI/custom_nodes/ComfyUI-Manager +fi + +cd ${SD05_DIR}/ComfyUI/custom_nodes/ComfyUI-Manager +git pull -X ours + cd ${SD05_DIR}/ComfyUI git pull -X ours @@ -34,9 +41,11 @@ sl_folder ${SD05_DIR}/ComfyUI/models checkpoints ${BASE_DIR}/models stable-diffu sl_folder ${SD05_DIR}/ComfyUI/models hypernetworks ${BASE_DIR}/models hypernetwork sl_folder ${SD05_DIR}/ComfyUI/models loras ${BASE_DIR}/models lora sl_folder ${SD05_DIR}/ComfyUI/models vae ${BASE_DIR}/models vae +sl_folder ${SD05_DIR}/ComfyUI/models vae_approx ${BASE_DIR}/models vae_approx sl_folder ${SD05_DIR}/ComfyUI/models embeddings ${BASE_DIR}/models embeddings sl_folder ${SD05_DIR}/ComfyUI/models upscale_models ${BASE_DIR}/models upscale sl_folder ${SD05_DIR}/ComfyUI/models clip_vision ${BASE_DIR}/models clip_vision +sl_folder ${SD05_DIR}/ComfyUI/models clip ${BASE_DIR}/models clip sl_folder ${SD05_DIR}/ComfyUI/models controlnet ${BASE_DIR}/models controlnet if [ -d ${SD05_DIR}/venv ]; then