| 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() | |