further tweaks to model management

- Work around problem with OmegaConf.update() that prevented model names
  from containing periods.
- Fix logic bug in !delete_model that didn't check for existence of model
  in config file.
This commit is contained in:
Lincoln Stein 2023-01-16 17:11:59 -05:00
parent 9460763eff
commit 088cd2c4dd
3 changed files with 19 additions and 18 deletions

View File

@ -1,14 +1,14 @@
stable-diffusion-2_1-768: stable-diffusion-2.1-768:
description: Stable Diffusion version 2.1 diffusers model, trained on 768x768 images (5.21 GB) description: Stable Diffusion version 2.1 diffusers model, trained on 768x768 images (5.21 GB)
repo_id: stabilityai/stable-diffusion-2-1 repo_id: stabilityai/stable-diffusion-2-1
format: diffusers format: diffusers
recommended: True recommended: True
stable-diffusion-2_1-base: stable-diffusion-2.1-base:
description: Stable Diffusion version 2.1 diffusers base model, trained on 512x512 images (5.21 GB) description: Stable Diffusion version 2.1 diffusers base model, trained on 512x512 images (5.21 GB)
repo_id: stabilityai/stable-diffusion-2-1-base repo_id: stabilityai/stable-diffusion-2-1-base
format: diffusers format: diffusers
recommended: False recommended: False
stable-diffusion-1_5: stable-diffusion-1.5:
description: Stable Diffusion version 1.5 weight file (4.27 GB) description: Stable Diffusion version 1.5 weight file (4.27 GB)
repo_id: runwayml/stable-diffusion-v1-5 repo_id: runwayml/stable-diffusion-v1-5
format: diffusers format: diffusers
@ -16,7 +16,7 @@ stable-diffusion-1_5:
default: True default: True
vae: vae:
repo_id: stabilityai/sd-vae-ft-mse repo_id: stabilityai/sd-vae-ft-mse
stable-diffusion-1_4: stable-diffusion-1.4:
description: The original Stable Diffusion version 1.4 weight file (4.27 GB) description: The original Stable Diffusion version 1.4 weight file (4.27 GB)
repo_id: CompVis/stable-diffusion-v1-4 repo_id: CompVis/stable-diffusion-v1-4
recommended: False recommended: False
@ -25,7 +25,7 @@ stable-diffusion-1_4:
repo_id: stabilityai/sd-vae-ft-mse repo_id: stabilityai/sd-vae-ft-mse
width: 512 width: 512
height: 512 height: 512
inpainting-1_5: inpainting-1.5:
description: RunwayML SD 1.5 model optimized for inpainting (ckpt version) (4.27 GB) description: RunwayML SD 1.5 model optimized for inpainting (ckpt version) (4.27 GB)
repo_id: runwayml/stable-diffusion-inpainting repo_id: runwayml/stable-diffusion-inpainting
config: v1-inpainting-inference.yaml config: v1-inpainting-inference.yaml
@ -37,12 +37,12 @@ inpainting-1_5:
recommended: True recommended: True
width: 512 width: 512
height: 512 height: 512
waifu-diffusion-1_4: waifu-diffusion-1.4:
description: Latest waifu diffusion 1.4 (diffusers version) description: Latest waifu diffusion 1.4 (diffusers version)
format: diffusers format: diffusers
repo_id: hakurei/waifu-diffusion repo_id: hakurei/waifu-diffusion
recommended: True recommended: True
waifu-diffusion-1_3: waifu-diffusion-1.3:
description: Stable Diffusion 1.4 fine tuned on anime-styled images (ckpt version) (4.27 GB) description: Stable Diffusion 1.4 fine tuned on anime-styled images (ckpt version) (4.27 GB)
repo_id: hakurei/waifu-diffusion-v1-3 repo_id: hakurei/waifu-diffusion-v1-3
config: v1-inference.yaml config: v1-inference.yaml
@ -54,7 +54,7 @@ waifu-diffusion-1_3:
recommended: False recommended: False
width: 512 width: 512
height: 512 height: 512
trinart-2_0: trinart-2.0:
description: An SD model finetuned with ~40,000 assorted high resolution manga/anime-style pictures (2.13 GB) description: An SD model finetuned with ~40,000 assorted high resolution manga/anime-style pictures (2.13 GB)
repo_id: naclbit/trinart_stable_diffusion_v2 repo_id: naclbit/trinart_stable_diffusion_v2
format: diffusers format: diffusers
@ -73,19 +73,19 @@ trinart_characters-2_0:
recommended: False recommended: False
width: 512 width: 512
height: 512 height: 512
anything-4_0: anything-4.0:
description: High-quality, highly detailed anime style images with just a few prompts description: High-quality, highly detailed anime style images with just a few prompts
format: diffusers format: diffusers
repo_id: andite/anything-v4.0 repo_id: andite/anything-v4.0
recommended: False recommended: False
papercut-1_0: papercut-1.0:
description: SD 1.5 fine-tuned for papercut art (use "PaperCut" in your prompts) (2.13 GB) description: SD 1.5 fine-tuned for papercut art (use "PaperCut" in your prompts) (2.13 GB)
repo_id: Fictiverse/Stable_Diffusion_PaperCut_Model repo_id: Fictiverse/Stable_Diffusion_PaperCut_Model
format: diffusers format: diffusers
vae: vae:
repo_id: stabilityai/sd-vae-ft-mse repo_id: stabilityai/sd-vae-ft-mse
recommended: False recommended: False
voxel_art-1_0: voxel_art-1.0:
description: Stable Diffusion trained on voxel art (use "VoxelArt" in your prompts) (4.27 GB) description: Stable Diffusion trained on voxel art (use "VoxelArt" in your prompts) (4.27 GB)
repo_id: Fictiverse/Stable_Diffusion_VoxelArt_Model repo_id: Fictiverse/Stable_Diffusion_VoxelArt_Model
config: v1-inference.yaml config: v1-inference.yaml

View File

@ -613,8 +613,6 @@ def import_diffuser_model(path_or_repo:str, gen, opt, completer)->str:
description = model_description): description = model_description):
print('** model failed to import') print('** model failed to import')
return None return None
if input('Make this the default model? [n] ').startswith(('y','Y')):
manager.set_default_model(model_name)
return model_name return model_name
def import_ckpt_model(path_or_url:str, gen, opt, completer)->str: def import_ckpt_model(path_or_url:str, gen, opt, completer)->str:
@ -647,8 +645,6 @@ def import_ckpt_model(path_or_url:str, gen, opt, completer)->str:
print('** model failed to import') print('** model failed to import')
return None return None
if input('Make this the default model? [n] ').startswith(('y','Y')):
manager.set_model_default(model_name)
return model_name return model_name
def _verify_load(model_name:str, gen)->bool: def _verify_load(model_name:str, gen)->bool:
@ -726,6 +722,9 @@ def del_config(model_name:str, gen, opt, completer):
if model_name == current_model: if model_name == current_model:
print("** Can't delete active model. !switch to another model first. **") print("** Can't delete active model. !switch to another model first. **")
return return
if model_name not in gen.model_manager.config:
print(f"** Unknown model {model_name}")
return
gen.model_manager.del_model(model_name) gen.model_manager.del_model(model_name)
gen.model_manager.commit(opt.conf) gen.model_manager.commit(opt.conf)
print(f'** {model_name} deleted') print(f'** {model_name} deleted')

View File

@ -230,6 +230,9 @@ class ModelManager(object):
Delete the named model. Delete the named model.
''' '''
omega = self.config omega = self.config
if model_name not in omega:
print(f'** Unknown model {model_name}')
return
del omega[model_name] del omega[model_name]
if model_name in self.stack: if model_name in self.stack:
self.stack.remove(model_name) self.stack.remove(model_name)
@ -253,9 +256,8 @@ class ModelManager(object):
assert (clobber or model_name not in omega), f'attempt to overwrite existing model definition "{model_name}"' assert (clobber or model_name not in omega), f'attempt to overwrite existing model definition "{model_name}"'
if model_name not in omega: omega[model_name] = model_attributes
omega[model_name] = dict()
OmegaConf.update(omega,model_name,model_attributes,merge=False)
if 'weights' in omega[model_name]: if 'weights' in omega[model_name]:
omega[model_name]['weights'].replace('\\','/') omega[model_name]['weights'].replace('\\','/')