|
import os |
|
from subprocess import getoutput |
|
|
|
|
|
|
|
|
|
|
|
os.system(f'echo "Starting verbose diagnostic setup for stable-diffusion-webui..."') |
|
|
|
os.system(f'echo "Cloning Stable Diffusion WebUI repository from darkstorm2150..."') |
|
os.system(f"git clone https://github.com/darkstorm2150/stable-diffusion-webui /home/user/app/stable-diffusion-webui") |
|
|
|
os.system(f'echo "Setting working directory to stable-diffusion-webui root folder..."') |
|
os.chdir("/home/user/app/stable-diffusion-webui") |
|
|
|
|
|
os.system(f'echo "Removing numpy and torch from requirements.txt to prevent version conflicts..."') |
|
os.system(f"sed -i '/numpy/d' /home/user/app/stable-diffusion-webui/requirements.txt") |
|
os.system(f"sed -i '/torch/d' /home/user/app/stable-diffusion-webui/requirements.txt") |
|
|
|
os.system(f'echo "Downloading environment patch script from camenduru/webui..."') |
|
os.system(f"wget https://github.com/camenduru/webui/raw/main/env_patch.py -O /home/user/app/env_patch.py") |
|
|
|
os.system(f'echo "Patching modules/ui.py to import image_from_url_text from env_patch.py..."') |
|
os.system(f"sed -i -e '/import image_from_url_text/r /home/user/app/env_patch.py' /home/user/app/stable-diffusion-webui/modules/ui.py") |
|
|
|
os.system(f'echo "Removing Checkpoint Merger tab from UI..."') |
|
os.system(f"sed -i -e '/(modelmerger_interface, \"Checkpoint Merger\", \"modelmerger\"),/d' /home/user/app/stable-diffusion-webui/modules/ui.py") |
|
|
|
os.system(f'echo "Removing Training tab from UI..."') |
|
os.system(f"sed -i -e '/(train_interface, \"Train\", \"ti\"),/d' /home/user/app/stable-diffusion-webui/modules/ui.py") |
|
|
|
os.system(f'echo "Removing Extensions tab from UI..."') |
|
os.system(f"sed -i -e '/extensions_interface, \"Extensions\", \"extensions\"/d' /home/user/app/stable-diffusion-webui/modules/ui.py") |
|
|
|
os.system(f'echo "Removing Settings tab from UI..."') |
|
os.system(f"sed -i -e '/settings_interface, \"Settings\", \"settings\"/d' /home/user/app/stable-diffusion-webui/modules/ui.py") |
|
|
|
os.system(f'echo "Fixing Gradio shadowRoot access in script.js for Hugging Face compatibility..."') |
|
os.system(f'''sed -i -e "s/document.getElementsByTagName('gradio-app')\\[0\\].shadowRoot/!!document.getElementsByTagName('gradio-app')[0].shadowRoot ? document.getElementsByTagName('gradio-app')[0].shadowRoot : document/g" /home/user/app/stable-diffusion-webui/script.js''') |
|
|
|
os.system(f'echo "Enabling progress bars in UI for better user feedback..."') |
|
os.system(f"sed -i -e 's/ show_progress=False,/ show_progress=True,/g' /home/user/app/stable-diffusion-webui/modules/ui.py") |
|
|
|
os.system(f'echo "Modifying webui.py to enable queuing for async processing..."') |
|
os.system(f"sed -i -e 's/shared.demo.launch/shared.demo.queue().launch/g' /home/user/app/stable-diffusion-webui/webui.py") |
|
|
|
os.system(f'echo "Disabling queuing for input components to reduce latency..."') |
|
os.system(f"sed -i -e 's/inputs=\\[component\\],/&\\n queue=False,/g' /home/user/app/stable-diffusion-webui/modules/ui.py") |
|
|
|
os.system(f'echo "Disabling queuing for token counter outputs..."') |
|
os.system(f"sed -i -e 's/outputs=\\[token_counter\\]/outputs=[token_counter], queue=False/g' /home/user/app/stable-diffusion-webui/modules/ui.py") |
|
|
|
|
|
|
|
|
|
os.system(f'echo "Downloading header_patch.py to customize UI header banners..."') |
|
os.system(f"wget https://github.com/camenduru/webui/raw/main/header_patch.py -O /home/user/app/header_patch.py") |
|
|
|
os.system(f'echo "Injecting header_patch.py content into modules/ui.py under the demo section..."') |
|
os.system(f"sed -i -e '/demo:/r /home/user/app/header_patch.py' /home/user/app/stable-diffusion-webui/modules/ui.py") |
|
|
|
|
|
|
|
|
|
|
|
if "IS_SHARED_UI" in os.environ: |
|
os.system(f'echo "IS_SHARED_UI IS ENABLED: Loading shared configurations..."') |
|
|
|
|
|
os.system(f"echo 'Downloading shared-config.json for UI settings...'") |
|
os.system(f"wget https://github.com/camenduru/webui/raw/main/shared-config.json -O /home/user/app/shared-config.json") |
|
|
|
os.system(f"echo 'Downloading shared-ui-config.json for layout preferences...'") |
|
os.system(f"wget https://github.com/camenduru/webui/raw/main/shared-ui-config.json -O /home/user/app/shared-ui-config.json") |
|
|
|
|
|
os.system(f'echo "Starting WebUI with shared configurations..."') |
|
os.system(f"python launch.py --force-enable-xformers --disable-console-progressbars --enable-console-prompts --ui-config-file /home/user/app/shared-ui-config.json --ui-settings-file /home/user/app/shared-config.json --cors-allow-origins huggingface.co,hf.space --no-progressbar-hiding") |
|
else: |
|
os.system(f'echo "IS_SHARED_UI IS DISABLED: Setting up custom environment..."') |
|
|
|
|
|
os.system(f'echo "Installing run_n_times.py script for batch processing..."') |
|
os.system(f"wget https://gist.github.com/camenduru/9ec5f8141db9902e375967e93250860f/raw/d0bcf01786f20107c329c03f8968584ee67be12a/run_n_times.py -O /home/user/app/stable-diffusion-webui/scripts/run_n_times.py") |
|
|
|
|
|
os.system(f'echo "Installing image browser extension for managing outputs..."') |
|
os.system(f"git clone https://github.com/yfszzx/stable-diffusion-webui-images-browser /home/user/app/stable-diffusion-webui/extensions/stable-diffusion-webui-images-browser") |
|
|
|
os.system(f'echo "Installing Deforum animation extension..."') |
|
os.system(f"git clone https://github.com/deforum-art/deforum-for-automatic1111-webui /home/user/app/stable-diffusion-webui/extensions/deforum-for-automatic1111-webui") |
|
|
|
|
|
os.system(f'echo "Downloading Protogen X3.4 Stable Diffusion model..."') |
|
os.system(f"wget -q https://huggingface.co/darkstorm2150/Protogen_x3.4_Official_Release/resolve/main/ProtoGen_X3.4.safetensors -O /home/user/app/stable-diffusion-webui/models/Stable-diffusion/ProtoGen_X3.4.safetensors") |
|
|
|
|
|
os.system(f'echo "Downgrading NumPy to 1.26.4 for compatibility..."') |
|
os.system(f"pip install --no-cache-dir numpy==1.26.4") |
|
|
|
|
|
os.system(f'echo "Installing PyTorch 2.1.2..."') |
|
os.system(f"pip install torch==2.1.2+cu121 torchvision==0.16.2+cu121 --extra-index-url https://download.pytorch.org/whl/cu121 ") |
|
|
|
|
|
os.system(f'echo "Installing xformers for attention optimization..."') |
|
os.system(f"pip install xformers==0.0.25") |
|
|
|
|
|
os.system(f'echo "Removing NumPy 2.x (if present)..."') |
|
os.system(f"pip uninstall -y numpy && pip install --no-cache-dir numpy==1.26.4") |
|
|
|
|
|
os.system(f'echo "Reinstalling xformers to ensure NumPy 1.26.4 compatibility..."') |
|
os.system(f"pip uninstall -y xformers && pip install --no-cache-dir xformers==0.0.25") |
|
|
|
|
|
os.system(f'echo "Verifying NumPy, PyTorch, and xformers versions..."') |
|
os.system(f"python -c 'import numpy; print(numpy.__version__)'") |
|
os.system(f"python -c 'import torch; print(torch.__version__)'") |
|
os.system(f"python -c 'import xformers; print(xformers.__version__)") |
|
|
|
|
|
os.system(f'echo "Starting WebUI with custom configurations..."') |
|
os.system(f"python launch.py --force-enable-xformers --ui-config-file /home/user/app/shared-ui-config.json --ui-settings-file /home/user/app/shared-config.json --disable-console-progressbars --enable-console-prompts --cors-allow-origins huggingface.co,hf.space --no-progressbar-hiding --api --skip-torch-cuda-test") |