-
-
Notifications
You must be signed in to change notification settings - Fork 70
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add fallback provisioning support for old builds. Update docs
- Loading branch information
1 parent
3a1eb96
commit 9b7dd32
Showing
5 changed files
with
263 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
This directory contains example provisioning scripts for auto-configuration of your container. | ||
|
||
Recent builds no longer contain micromamba for python package installation, so old builds are not fully compatible with the new format. If you are using an older build you should upgrade as soon as possible. | ||
|
||
The previous default, if you need it for reference can be found in `./mamba_base`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,188 @@ | ||
#!/bin/bash | ||
# This file will be sourced in init.sh | ||
# Namespace functions with provisioning_ | ||
|
||
# https://raw.githubusercontent.com/ai-dock/stable-diffusion-webui/main/config/provisioning/default.sh | ||
|
||
### Edit the following arrays to suit your workflow - values must be quoted and separated by newlines or spaces. | ||
|
||
DISK_GB_REQUIRED=30 | ||
|
||
MAMBA_PACKAGES=( | ||
#"package1" | ||
#"package2=version" | ||
) | ||
|
||
PIP_PACKAGES=( | ||
"bitsandbytes==0.41.2.post2" | ||
) | ||
|
||
EXTENSIONS=( | ||
"https://github.com/Mikubill/sd-webui-controlnet" | ||
"https://github.com/d8ahazard/sd_dreambooth_extension" | ||
"https://github.com/deforum-art/sd-webui-deforum" | ||
"https://github.com/adieyal/sd-dynamic-prompts" | ||
"https://github.com/ototadana/sd-face-editor" | ||
"https://github.com/AlUlkesh/stable-diffusion-webui-images-browser" | ||
"https://github.com/hako-mikan/sd-webui-regional-prompter" | ||
"https://github.com/Coyote-A/ultimate-upscale-for-automatic1111" | ||
"https://github.com/fkunn1326/openpose-editor" | ||
"https://github.com/Gourieff/sd-webui-reactor" | ||
) | ||
|
||
CHECKPOINT_MODELS=( | ||
"https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt" | ||
#"https://huggingface.co/stabilityai/stable-diffusion-2-1/resolve/main/v2-1_768-ema-pruned.ckpt" | ||
#"https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors" | ||
#"https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/resolve/main/sd_xl_refiner_1.0.safetensors" | ||
) | ||
|
||
LORA_MODELS=( | ||
#"https://civitai.com/api/download/models/16576" | ||
) | ||
|
||
VAE_MODELS=( | ||
"https://huggingface.co/stabilityai/sd-vae-ft-ema-original/resolve/main/vae-ft-ema-560000-ema-pruned.safetensors" | ||
"https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors" | ||
"https://huggingface.co/stabilityai/sdxl-vae/resolve/main/sdxl_vae.safetensors" | ||
) | ||
|
||
ESRGAN_MODELS=( | ||
"https://huggingface.co/ai-forever/Real-ESRGAN/resolve/main/RealESRGAN_x4.pth" | ||
"https://huggingface.co/FacehugmanIII/4x_foolhardy_Remacri/resolve/main/4x_foolhardy_Remacri.pth" | ||
"https://huggingface.co/Akumetsu971/SD_Anime_Futuristic_Armor/resolve/main/4x_NMKD-Siax_200k.pth" | ||
) | ||
|
||
CONTROLNET_MODELS=( | ||
"https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_canny-fp16.safetensors" | ||
#"https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_depth-fp16.safetensors" | ||
#"https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_hed-fp16.safetensors" | ||
#"https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_mlsd-fp16.safetensors" | ||
#"https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_normal-fp16.safetensors" | ||
"https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_openpose-fp16.safetensors" | ||
#"https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_scribble-fp16.safetensors" | ||
#"https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_seg-fp16.safetensors" | ||
"https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/t2iadapter_canny-fp16.safetensors" | ||
#"https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/t2iadapter_color-fp16.safetensors" | ||
#"https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/t2iadapter_depth-fp16.safetensors" | ||
#"https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/t2iadapter_keypose-fp16.safetensors" | ||
"https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/t2iadapter_openpose-fp16.safetensors" | ||
#"https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/t2iadapter_seg-fp16.safetensors" | ||
#"https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/t2iadapter_sketch-fp16.safetensors" | ||
#"https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/t2iadapter_style-fp16.safetensors" | ||
) | ||
|
||
|
||
### DO NOT EDIT BELOW HERE UNLESS YOU KNOW WHAT YOU ARE DOING ### | ||
|
||
function provisioning_start() { | ||
source /opt/ai-dock/etc/environment.sh | ||
DISK_GB_AVAILABLE=$(($(df --output=avail -m "${WORKSPACE}" | tail -n1) / 1000)) | ||
DISK_GB_USED=$(($(df --output=used -m "${WORKSPACE}" | tail -n1) / 1000)) | ||
DISK_GB_ALLOCATED=$(($DISK_GB_AVAILABLE + $DISK_GB_USED)) | ||
provisioning_print_header | ||
provisioning_get_mamba_packages | ||
provisioning_get_pip_packages | ||
provisioning_get_extensions | ||
provisioning_get_models \ | ||
"${WORKSPACE}/storage/stable_diffusion/models/ckpt" \ | ||
"${CHECKPOINT_MODELS[@]}" | ||
provisioning_get_models \ | ||
"${WORKSPACE}/storage/stable_diffusion/models/lora" \ | ||
"${LORA_MODELS[@]}" | ||
provisioning_get_models \ | ||
"${WORKSPACE}/storage/stable_diffusion/models/controlnet" \ | ||
"${CONTROLNET_MODELS[@]}" | ||
provisioning_get_models \ | ||
"${WORKSPACE}/storage/stable_diffusion/models/vae" \ | ||
"${VAE_MODELS[@]}" | ||
provisioning_get_models \ | ||
"${WORKSPACE}/storage/stable_diffusion/models/esrgan" \ | ||
"${ESRGAN_MODELS[@]}" | ||
|
||
PLATFORM_FLAGS="" | ||
if [[ $XPU_TARGET = "CPU" ]]; then | ||
PLATFORM_FLAGS="--use-cpu all --skip-torch-cuda-test --no-half" | ||
fi | ||
PROVISIONING_FLAGS="--skip-python-version-check --no-download-sd-model --do-not-download-clip --port 11404 --exit" | ||
FLAGS_COMBINED="${PLATFORM_FLAGS} $(cat /etc/a1111_webui_flags.conf) ${PROVISIONING_FLAGS}" | ||
|
||
# Start and exit because webui will probably require a restart | ||
cd /opt/stable-diffusion-webui && \ | ||
micromamba run -n webui -e LD_PRELOAD=libtcmalloc.so python launch.py \ | ||
${FLAGS_COMBINED} | ||
provisioning_print_end | ||
} | ||
|
||
function provisioning_get_mamba_packages() { | ||
if [[ -n $MAMBA_PACKAGES ]]; then | ||
$MAMBA_INSTALL -n webui ${MAMBA_PACKAGES[@]} | ||
fi | ||
} | ||
|
||
function provisioning_get_pip_packages() { | ||
if [[ -n $PIP_PACKAGES ]]; then | ||
micromamba run -n webui $PIP_INSTALL ${PIP_PACKAGES[@]} | ||
fi | ||
} | ||
|
||
function provisioning_get_extensions() { | ||
for repo in "${EXTENSIONS[@]}"; do | ||
dir="${repo##*/}" | ||
path="/opt/stable-diffusion-webui/extensions/${dir}" | ||
requirements="${path}/requirements.txt" | ||
if [[ -d $path ]]; then | ||
if [[ ${AUTO_UPDATE,,} == "true" ]]; then | ||
printf "Updating extension: %s...\n" "${repo}" | ||
( cd "$path" && git pull ) | ||
if [[ -e $requirements ]]; then | ||
micromamba -n webui run ${PIP_INSTALL} -r "$requirements" | ||
fi | ||
fi | ||
else | ||
printf "Downloading extension: %s...\n" "${repo}" | ||
git clone "${repo}" "${path}" --recursive | ||
if [[ -e $requirements ]]; then | ||
micromamba -n webui run ${PIP_INSTALL} -r "${requirements}" | ||
fi | ||
fi | ||
done | ||
} | ||
|
||
function provisioning_get_models() { | ||
if [[ -z $2 ]]; then return 1; fi | ||
dir="$1" | ||
mkdir -p "$dir" | ||
shift | ||
if [[ $DISK_GB_ALLOCATED -ge $DISK_GB_REQUIRED ]]; then | ||
arr=("$@") | ||
else | ||
printf "WARNING: Low disk space allocation - Only the first model will be downloaded!\n" | ||
arr=("$1") | ||
fi | ||
|
||
printf "Downloading %s model(s) to %s...\n" "${#arr[@]}" "$dir" | ||
for url in "${arr[@]}"; do | ||
printf "Downloading: %s\n" "${url}" | ||
provisioning_download "${url}" "${dir}" | ||
printf "\n" | ||
done | ||
} | ||
|
||
function provisioning_print_header() { | ||
printf "\n##############################################\n# #\n# Provisioning container #\n# #\n# This will take some time #\n# #\n# Your container will be ready on completion #\n# #\n##############################################\n\n" | ||
if [[ $DISK_GB_ALLOCATED -lt $DISK_GB_REQUIRED ]]; then | ||
printf "WARNING: Your allocated disk size (%sGB) is below the recommended %sGB - Some models will not be downloaded\n" "$DISK_GB_ALLOCATED" "$DISK_GB_REQUIRED" | ||
fi | ||
} | ||
|
||
function provisioning_print_end() { | ||
printf "\nProvisioning complete: Web UI will start now\n\n" | ||
} | ||
|
||
# Download from $1 URL to $2 file path | ||
function provisioning_download() { | ||
wget -qnc --content-disposition --show-progress -e dotbytes="${3:-4M}" -P "$2" "$1" | ||
} | ||
|
||
provisioning_start |
Oops, something went wrong.