From a12c9117e698a3380b7bcb6e6e50bde4b879542d Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Fri, 4 Aug 2023 11:23:22 +0200 Subject: [PATCH] add requirement check install flag --- TODO.md | 6 +++--- extensions-builtin/sd-dynamic-thresholding | 2 +- installer.py | 3 ++- modules/sd_models.py | 12 ++++++++---- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/TODO.md b/TODO.md index f84b578b0..08c7e4655 100644 --- a/TODO.md +++ b/TODO.md @@ -12,12 +12,11 @@ Stuff to be fixed, in no particular order... Stuff to be added, in no particular order... - Diffusers: - - Add SD-XL Lora + - Add Hires + - Add Lora/Lyco mixer - Add ControlNet - Fix SD-XL Img2img/Inpaint - Add SD and SD-XL Pix2Pix - - Add VAE direct load from safetensors - - Fix Kandinsky 2.2 model - Fix DeepFloyd IF model - Redo Prompt parser for diffusers - Add unCLIP model @@ -54,6 +53,7 @@ Stuff to be added, in no particular order... - Templates for SD-XL training - Lora train UI - Redesign + - Extensions reporting framework - New UI - New inpainting canvas controls (move from backend to purely frontend) - New image browser (move from backend to purely frontend) diff --git a/extensions-builtin/sd-dynamic-thresholding b/extensions-builtin/sd-dynamic-thresholding index 639e40970..5349f0087 160000 --- a/extensions-builtin/sd-dynamic-thresholding +++ b/extensions-builtin/sd-dynamic-thresholding @@ -1 +1 @@ -Subproject commit 639e40970f9b88c019866a6babb34f3294465d39 +Subproject commit 5349f008721480a572ab9a917533afdd0dae7b9e diff --git a/installer.py b/installer.py index bb19322f1..b1b5d1520 100644 --- a/installer.py +++ b/installer.py @@ -588,7 +588,7 @@ def install_requirements(): if args.profile: pr = cProfile.Profile() pr.enable() - if args.skip_requirements: + if args.skip_requirements and not args.requirements: return log.info('Verifying requirements') with open('requirements.txt', 'r', encoding='utf8') as f: @@ -751,6 +751,7 @@ def add_args(parser): group.add_argument('--debug', default = False, action='store_true', help = "Run installer with debug logging, default: %(default)s") group.add_argument('--reset', default = False, action='store_true', help = "Reset main repository to latest version, default: %(default)s") group.add_argument('--upgrade', default = False, action='store_true', help = "Upgrade main repository to latest version, default: %(default)s") + group.add_argument('--requirements', default = False, action='store_true', help = "Force re-check of requirements, default: %(default)s") group.add_argument('--quick', default = False, action='store_true', help = "Run with startup sequence only, default: %(default)s") group.add_argument("--use-ipex", default = False, action='store_true', help="Use Intel OneAPI XPU backend, default: %(default)s") group.add_argument('--use-directml', default = False, action='store_true', help = "Use DirectML if no compatible GPU is detected, default: %(default)s") diff --git a/modules/sd_models.py b/modules/sd_models.py index 8e9d55042..d010ffd6b 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -67,9 +67,11 @@ class CheckpointInfo: else: # maybe a diffuser repo = [r for r in modelloader.diffuser_repos if filename == r['filename']] if len(repo) == 0: - error_message = f'Cannot find diffuser model: {filename}' - shared.log.error(error_message) - raise ValueError(error_message) + if filename.lower() != 'none': + shared.log.error(f'Cannot find diffuser model: {filename}') + else: + shared.log.info(f'Skipping model load: {filename}') + return self.name = repo[0]['name'] self.hash = repo[0]['hash'][:8] self.sha256 = repo[0]['hash'] @@ -532,6 +534,8 @@ def change_backend(): def load_diffuser(checkpoint_info=None, already_loaded_state_dict=None, timer=None, op='model'): # pylint: disable=unused-argument + if op != 'model' and checkpoint_info is None and (shared.cmd_opts.ckpt is None or shared.cmd_opts.ckpt.lower() == 'none'): + return import torch # pylint: disable=reimported,redefined-outer-name devices.set_cuda_params() if timer is None: @@ -570,7 +574,7 @@ def load_diffuser(checkpoint_info=None, already_loaded_state_dict=None, timer=No sd_model = None try: - if shared.cmd_opts.ckpt is not None and model_data.initial: # initial load + if shared.cmd_opts.ckpt is not None and model_data.initial: # initial load\ ckpt_basename = os.path.basename(shared.cmd_opts.ckpt) model_name = modelloader.find_diffuser(ckpt_basename) if model_name is not None: