mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
fix(mm): regression from change to legacy conf dir change
This commit is contained in:
@ -604,7 +604,7 @@ class ModelInstallService(ModelInstallServiceBase):
|
|||||||
|
|
||||||
info.path = model_path.as_posix()
|
info.path = model_path.as_posix()
|
||||||
|
|
||||||
# add 'main' specific fields
|
# Checkpoints have a config file needed for conversion - resolve this to an absolute path
|
||||||
if isinstance(info, CheckpointConfigBase):
|
if isinstance(info, CheckpointConfigBase):
|
||||||
legacy_conf = (self.app_config.legacy_conf_path / info.config_path).resolve()
|
legacy_conf = (self.app_config.legacy_conf_path / info.config_path).resolve()
|
||||||
info.config_path = legacy_conf.as_posix()
|
info.config_path = legacy_conf.as_posix()
|
||||||
|
@ -35,8 +35,6 @@ class ControlNetLoader(GenericDiffusersLoader):
|
|||||||
|
|
||||||
def _convert_model(self, config: AnyModelConfig, model_path: Path, output_path: Path) -> Path:
|
def _convert_model(self, config: AnyModelConfig, model_path: Path, output_path: Path) -> Path:
|
||||||
assert isinstance(config, CheckpointConfigBase)
|
assert isinstance(config, CheckpointConfigBase)
|
||||||
config_file = config.config_path
|
|
||||||
|
|
||||||
image_size = (
|
image_size = (
|
||||||
512
|
512
|
||||||
if config.base == BaseModelType.StableDiffusion1
|
if config.base == BaseModelType.StableDiffusion1
|
||||||
@ -46,7 +44,7 @@ class ControlNetLoader(GenericDiffusersLoader):
|
|||||||
)
|
)
|
||||||
|
|
||||||
self._logger.info(f"Converting {model_path} to diffusers format")
|
self._logger.info(f"Converting {model_path} to diffusers format")
|
||||||
with open(self._app_config.root_path / config_file, "r") as config_stream:
|
with open(config.config_path, "r") as config_stream:
|
||||||
convert_controlnet_to_diffusers(
|
convert_controlnet_to_diffusers(
|
||||||
model_path,
|
model_path,
|
||||||
output_path,
|
output_path,
|
||||||
|
@ -76,7 +76,6 @@ class StableDiffusionDiffusersModel(GenericDiffusersLoader):
|
|||||||
assert isinstance(config, MainCheckpointConfig)
|
assert isinstance(config, MainCheckpointConfig)
|
||||||
base = config.base
|
base = config.base
|
||||||
|
|
||||||
config_file = config.config_path
|
|
||||||
prediction_type = config.prediction_type.value
|
prediction_type = config.prediction_type.value
|
||||||
upcast_attention = config.upcast_attention
|
upcast_attention = config.upcast_attention
|
||||||
image_size = (
|
image_size = (
|
||||||
@ -92,7 +91,7 @@ class StableDiffusionDiffusersModel(GenericDiffusersLoader):
|
|||||||
model_path,
|
model_path,
|
||||||
output_path,
|
output_path,
|
||||||
model_type=self.model_base_to_model_type[base],
|
model_type=self.model_base_to_model_type[base],
|
||||||
original_config_file=self._app_config.root_path / config_file,
|
original_config_file=config.config_path,
|
||||||
extract_ema=True,
|
extract_ema=True,
|
||||||
from_safetensors=model_path.suffix == ".safetensors",
|
from_safetensors=model_path.suffix == ".safetensors",
|
||||||
precision=self._torch_dtype,
|
precision=self._torch_dtype,
|
||||||
|
@ -178,13 +178,14 @@ class ModelProbe(object):
|
|||||||
fields["type"] in [ModelType.Main, ModelType.ControlNet, ModelType.VAE]
|
fields["type"] in [ModelType.Main, ModelType.ControlNet, ModelType.VAE]
|
||||||
and fields["format"] is ModelFormat.Checkpoint
|
and fields["format"] is ModelFormat.Checkpoint
|
||||||
):
|
):
|
||||||
fields["config_path"] = cls._get_checkpoint_config_path(
|
ckpt_config_path = cls._get_checkpoint_config_path(
|
||||||
model_path,
|
model_path,
|
||||||
model_type=fields["type"],
|
model_type=fields["type"],
|
||||||
base_type=fields["base"],
|
base_type=fields["base"],
|
||||||
variant_type=fields["variant"],
|
variant_type=fields["variant"],
|
||||||
prediction_type=fields["prediction_type"],
|
prediction_type=fields["prediction_type"],
|
||||||
).as_posix()
|
)
|
||||||
|
fields["config_path"] = str(ckpt_config_path)
|
||||||
|
|
||||||
# additional fields needed for main non-checkpoint models
|
# additional fields needed for main non-checkpoint models
|
||||||
elif fields["type"] == ModelType.Main and fields["format"] in [
|
elif fields["type"] == ModelType.Main and fields["format"] in [
|
||||||
@ -298,23 +299,23 @@ class ModelProbe(object):
|
|||||||
config_file = LEGACY_CONFIGS[base_type][variant_type]
|
config_file = LEGACY_CONFIGS[base_type][variant_type]
|
||||||
if isinstance(config_file, dict): # need another tier for sd-2.x models
|
if isinstance(config_file, dict): # need another tier for sd-2.x models
|
||||||
config_file = config_file[prediction_type]
|
config_file = config_file[prediction_type]
|
||||||
|
config_file = f"stable-diffusion/{config_file}"
|
||||||
elif model_type is ModelType.ControlNet:
|
elif model_type is ModelType.ControlNet:
|
||||||
config_file = (
|
config_file = (
|
||||||
"../controlnet/cldm_v15.yaml"
|
"controlnet/cldm_v15.yaml"
|
||||||
if base_type is BaseModelType.StableDiffusion1
|
if base_type is BaseModelType.StableDiffusion1
|
||||||
else "../controlnet/cldm_v21.yaml"
|
else "controlnet/cldm_v21.yaml"
|
||||||
)
|
)
|
||||||
elif model_type is ModelType.VAE:
|
elif model_type is ModelType.VAE:
|
||||||
config_file = (
|
config_file = (
|
||||||
"../stable-diffusion/v1-inference.yaml"
|
"stable-diffusion/v1-inference.yaml"
|
||||||
if base_type is BaseModelType.StableDiffusion1
|
if base_type is BaseModelType.StableDiffusion1
|
||||||
else "../stable-diffusion/v2-inference.yaml"
|
else "stable-diffusion/v2-inference.yaml"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
raise InvalidModelConfigException(
|
raise InvalidModelConfigException(
|
||||||
f"{model_path}: Unrecognized combination of model_type={model_type}, base_type={base_type}"
|
f"{model_path}: Unrecognized combination of model_type={model_type}, base_type={base_type}"
|
||||||
)
|
)
|
||||||
assert isinstance(config_file, str)
|
|
||||||
return Path(config_file)
|
return Path(config_file)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
Reference in New Issue
Block a user