lixbox's picture
Duplicate from Electricatom369/SD-webui-controlnet-docker
0e05ce6
import os
import subprocess
import sys
def on_start():
print("---------------")
print("Running script './on_start.sh' to download models ...")
print("---------------")
result = subprocess.run("./on_start.sh", shell=True, env=os.environ)
if result.returncode != 0:
raise RuntimeError(f"Error executing ./on_start.sh [exit code: {result.returncode}]")
def start():
print("---------------")
print(f"Launching {'API server' if '--nowebui' in sys.argv else 'Web UI'} with arguments: {' '.join(sys.argv[1:])}")
print("---------------")
import webui # type: ignore # noqa
if "--nowebui" in sys.argv:
webui.api_only()
else:
webui.webui()
def set_options():
import torch # type: ignore # noqa
if not torch.cuda.is_available():
# If no GPU is available, uninstall xformers and apply "--precision full --no-half --use-cpu all" to sys.argv.
os.system(f"{sys.executable} -m pip uninstall -y xformers")
sys.argv.extend(
[
"--precision",
"full",
"--no-half",
"--use-cpu",
"all",
]
)
else:
# Applies "--force-enable-xformers --xformers" to sys.argv when there's a GPU present.
sys.argv.extend(["--force-enable-xformers", "--xformers"])
is_shared_ui = str(os.environ.get("IS_SHARED_UI", "") or "").strip().lower() not in ("", "0", "false", "none", "no")
if not is_shared_ui:
# Provide access to extensions only if IS_SHARED_UI isn't set.
sys.argv.extend(["--enable-insecure-extension-access"])
if __name__ == "__main__":
set_options()
on_start()
start()