From 38402c8e6ef2b0ad0cdf6e749296cdfbfdd6f623 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Tue, 26 Sep 2023 08:53:46 -0400 Subject: [PATCH] fix new k-diffusers --- installer.py | 1 + modules/loader.py | 3 +++ modules/modelloader.py | 16 +++++++++++++++- modules/sd_samplers_kdiffusion.py | 5 ++++- modules/ui_models.py | 8 +++++--- webui.py | 2 +- 6 files changed, 29 insertions(+), 6 deletions(-) diff --git a/installer.py b/installer.py index 41ec5b442..f2af2f764 100644 --- a/installer.py +++ b/installer.py @@ -746,6 +746,7 @@ def set_environment(): os.environ.setdefault('HF_HUB_DISABLE_TELEMETRY', '1') os.environ.setdefault('HF_HUB_DISABLE_EXPERIMENTAL_WARNING', '1') os.environ.setdefault('UVICORN_TIMEOUT_KEEP_ALIVE', '60') + os.environ.setdefault('K_DIFFUSION_USE_COMPILE', '0') if sys.platform == 'darwin': os.environ.setdefault('PYTORCH_ENABLE_MPS_FALLBACK', '1') diff --git a/modules/loader.py b/modules/loader.py index 54dafa9e4..9733b735b 100644 --- a/modules/loader.py +++ b/modules/loader.py @@ -7,7 +7,10 @@ from modules import timer, errors initialized = False logging.getLogger("DeepSpeed").disabled = True +# os.environ.setdefault('OMP_NUM_THREADS', 1) +# os.environ.setdefault('MKL_NUM_THREADS', 1) import torch # pylint: disable=C0411 +# torch.set_num_threads(1) try: import intel_extension_for_pytorch as ipex # pylint: disable=import-error, unused-import errors.log.debug(f'Loaded IPEX=={ipex.__version__}') diff --git a/modules/modelloader.py b/modules/modelloader.py index d96392d56..470f4d6ba 100644 --- a/modules/modelloader.py +++ b/modules/modelloader.py @@ -174,10 +174,24 @@ def download_diffusers_model(hub_id: str, cache_dir: str = None, download_config shared.log.debug(f"Diffusers authentication: {token}") hf.login(token) pipeline_dir = None + + ok = True try: pipeline_dir = DiffusionPipeline.download(hub_id, **download_config) except Exception as e: - shared.log.error(f"Diffusers download error: {hub_id} {e}") + ok = False + shared.log.warning(f"Diffusers download error: {hub_id} {e}") + if not ok: + try: + download_config.pop('load_connected_pipeline') + download_config.pop('variant') + pipeline_dir = hf.snapshot_download(hub_id, **download_config) + except Exception as e: + shared.log.warning(f"Diffusers hub download error: {hub_id} {e}") + + if pipeline_dir is None: + shared.log.error(f"Diffusers no pipeline folder: {hub_id}") + return try: model_info_dict = hf.model_info(hub_id).cardData if pipeline_dir is not None else None # pylint: disable=no-member # TODO Diffusers is this real error? except Exception: diff --git a/modules/sd_samplers_kdiffusion.py b/modules/sd_samplers_kdiffusion.py index fbe4aeb93..8b424d200 100644 --- a/modules/sd_samplers_kdiffusion.py +++ b/modules/sd_samplers_kdiffusion.py @@ -2,7 +2,10 @@ from collections import deque import inspect import torch import k_diffusion.sampling -from modules import prompt_parser, devices, sd_samplers_common + +from modules import prompt_parser +from modules import devices +from modules import sd_samplers_common from modules.shared import opts, state import modules.shared as shared diff --git a/modules/ui_models.py b/modules/ui_models.py index e2bb93d74..45292e681 100644 --- a/modules/ui_models.py +++ b/modules/ui_models.py @@ -144,7 +144,7 @@ def create_ui(): model_checkhash_btn.click(fn=sd_models.update_model_hashes, inputs=[], outputs=[models_outcome]) with gr.Row(): model_table = gr.DataFrame( - value = model_data, + value = None, headers = model_headers, label = 'Model data', show_label = True, @@ -209,6 +209,7 @@ def create_ui(): return f'Diffuser model downloaded: model="{hub_id}"' with gr.Column(scale=6): + gr.HTML('

Search for models

Select a model from the search results to download

') with gr.Row(): hf_search_text = gr.Textbox('', label = 'Search models', placeholder='search huggingface models') hf_search_btn = ToolButton(value="🔍", label="Search") @@ -224,12 +225,13 @@ def create_ui(): hf_token = gr.Textbox('', label = 'Huggingface token', placeholder='optional access token for private or gated models') hf_mirror = gr.Textbox('', label = 'Huggingface mirror', placeholder='optional mirror site for downloads') with gr.Column(scale=1): + gr.HTML('
') hf_download_model_btn = gr.Button(value="Download model", variant='primary') with gr.Row(): hf_headers = ['Name', 'Pipeline', 'Tags', 'Downloads', 'Updated', 'URL'] hf_types = ['str', 'str', 'str', 'number', 'date', 'markdown'] - hf_results = gr.DataFrame([], label = 'Search results', show_label = True, interactive = False, wrap = True, overflow_row_behaviour = 'paginate', max_rows = 10, headers = hf_headers, datatype = hf_types, type='array') + hf_results = gr.DataFrame(None, label = 'Search results', show_label = True, interactive = False, wrap = True, overflow_row_behaviour = 'paginate', max_rows = 10, headers = hf_headers, datatype = hf_types, type='array') hf_search_text.submit(fn=hf_search, inputs=[hf_search_text], outputs=[hf_results]) hf_search_btn.click(fn=hf_search, inputs=[hf_search_text], outputs=[hf_results]) @@ -377,7 +379,7 @@ def create_ui(): civit_previews_rehash = gr.Checkbox(value=True, label="Check alternative hash") with gr.Row(style={'margin-top': '1em'}): - gr.HTML('

Search for models

') + gr.HTML('

Search for models

Select a model, model version and and model variant from the search results to download
') with gr.Row(): with gr.Column(scale=1): civit_model_type = gr.Dropdown(label='Model type', choices=['SD 1.5', 'SD XL', 'LoRA', 'Other'], value='LoRA') diff --git a/webui.py b/webui.py index 914353bea..42bf13713 100644 --- a/webui.py +++ b/webui.py @@ -18,6 +18,7 @@ from modules import shared, extensions, extra_networks, ui_tempdir, ui_extra_net from modules.paths import create_paths from modules.call_queue import queue_lock, wrap_queued_call, wrap_gradio_gpu_call # pylint: disable=W0611,C0411,C0412 import modules.devices + import modules.sd_samplers import modules.upscaler import modules.img2img @@ -77,7 +78,6 @@ def check_rollback_vae(): def initialize(): log.debug('Initializing') - check_rollback_vae() modules.sd_samplers.list_samplers()