stable-diffusion-webui
168 строк · 5.7 Кб
1import importlib2import logging3import os4import sys5import warnings6from threading import Thread7
8from modules.timer import startup_timer9
10
11def imports():12logging.getLogger("torch.distributed.nn").setLevel(logging.ERROR) # sshh...13logging.getLogger("xformers").addFilter(lambda record: 'A matching Triton is not available' not in record.getMessage())14
15import torch # noqa: F40116startup_timer.record("import torch")17import pytorch_lightning # noqa: F40118startup_timer.record("import torch")19warnings.filterwarnings(action="ignore", category=DeprecationWarning, module="pytorch_lightning")20warnings.filterwarnings(action="ignore", category=UserWarning, module="torchvision")21
22os.environ.setdefault('GRADIO_ANALYTICS_ENABLED', 'False')23import gradio # noqa: F40124startup_timer.record("import gradio")25
26from modules import paths, timer, import_hook, errors # noqa: F40127startup_timer.record("setup paths")28
29import ldm.modules.encoders.modules # noqa: F40130startup_timer.record("import ldm")31
32import sgm.modules.encoders.modules # noqa: F40133startup_timer.record("import sgm")34
35from modules import shared_init36shared_init.initialize()37startup_timer.record("initialize shared")38
39from modules import processing, gradio_extensons, ui # noqa: F40140startup_timer.record("other imports")41
42
43def check_versions():44from modules.shared_cmd_options import cmd_opts45
46if not cmd_opts.skip_version_check:47from modules import errors48errors.check_versions()49
50
51def initialize():52from modules import initialize_util53initialize_util.fix_torch_version()54initialize_util.fix_asyncio_event_loop_policy()55initialize_util.validate_tls_options()56initialize_util.configure_sigint_handler()57initialize_util.configure_opts_onchange()58
59from modules import sd_models60sd_models.setup_model()61startup_timer.record("setup SD model")62
63from modules.shared_cmd_options import cmd_opts64
65from modules import codeformer_model66warnings.filterwarnings(action="ignore", category=UserWarning, module="torchvision.transforms.functional_tensor")67codeformer_model.setup_model(cmd_opts.codeformer_models_path)68startup_timer.record("setup codeformer")69
70from modules import gfpgan_model71gfpgan_model.setup_model(cmd_opts.gfpgan_models_path)72startup_timer.record("setup gfpgan")73
74initialize_rest(reload_script_modules=False)75
76
77def initialize_rest(*, reload_script_modules=False):78"""79Called both from initialize() and when reloading the webui.
80"""
81from modules.shared_cmd_options import cmd_opts82
83from modules import sd_samplers84sd_samplers.set_samplers()85startup_timer.record("set samplers")86
87from modules import extensions88extensions.list_extensions()89startup_timer.record("list extensions")90
91from modules import initialize_util92initialize_util.restore_config_state_file()93startup_timer.record("restore config state file")94
95from modules import shared, upscaler, scripts96if cmd_opts.ui_debug_mode:97shared.sd_upscalers = upscaler.UpscalerLanczos().scalers98scripts.load_scripts()99return100
101from modules import sd_models102sd_models.list_models()103startup_timer.record("list SD models")104
105from modules import localization106localization.list_localizations(cmd_opts.localizations_dir)107startup_timer.record("list localizations")108
109with startup_timer.subcategory("load scripts"):110scripts.load_scripts()111
112if reload_script_modules:113for module in [module for name, module in sys.modules.items() if name.startswith("modules.ui")]:114importlib.reload(module)115startup_timer.record("reload script modules")116
117from modules import modelloader118modelloader.load_upscalers()119startup_timer.record("load upscalers")120
121from modules import sd_vae122sd_vae.refresh_vae_list()123startup_timer.record("refresh VAE")124
125from modules import textual_inversion126textual_inversion.textual_inversion.list_textual_inversion_templates()127startup_timer.record("refresh textual inversion templates")128
129from modules import script_callbacks, sd_hijack_optimizations, sd_hijack130script_callbacks.on_list_optimizers(sd_hijack_optimizations.list_optimizers)131sd_hijack.list_optimizers()132startup_timer.record("scripts list_optimizers")133
134from modules import sd_unet135sd_unet.list_unets()136startup_timer.record("scripts list_unets")137
138def load_model():139"""140Accesses shared.sd_model property to load model.
141After it's available, if it has been loaded before this access by some extension,
142its optimization may be None because the list of optimizaers has neet been filled
143by that time, so we apply optimization again.
144"""
145from modules import devices146devices.torch_npu_set_device()147
148shared.sd_model # noqa: B018149
150if sd_hijack.current_optimizer is None:151sd_hijack.apply_optimizations()152
153devices.first_time_calculation()154if not shared.cmd_opts.skip_load_model_at_start:155Thread(target=load_model).start()156
157from modules import shared_items158shared_items.reload_hypernetworks()159startup_timer.record("reload hypernetworks")160
161from modules import ui_extra_networks162ui_extra_networks.initialize()163ui_extra_networks.register_default_pages()164
165from modules import extra_networks166extra_networks.initialize()167extra_networks.register_default_extra_networks()168startup_timer.record("initialize extra networks")169