refactor(nodes): model identifiers

- All models are identified by a key and optionally a submodel type via new model `ModelField`. Previously, a few model types had their own class, but not all of them. This inconsistency just added complexity without any benefit.
- Update all invocation to use the new format.
- In the node API, models are loaded by key or an instance of `ModelField` as a convenience.
- Add an enriched model schema for metadata. It includes key, hash, name, base and type.
This commit is contained in:
psychedelicious
2024-03-06 19:37:15 +11:00
parent afd9ae7712
commit 528ac5dd25
15 changed files with 229 additions and 288 deletions

View File

@ -35,17 +35,13 @@ from invokeai.app.invocations.metadata import MetadataItemField, MetadataItemOut
from invokeai.app.invocations.model import (
ClipField,
CLIPOutput,
LoraInfo,
LoraLoaderOutput,
LoRAModelField,
MainModelField,
ModelInfo,
ModelField,
ModelLoaderOutput,
SDXLLoraLoaderOutput,
UNetField,
UNetOutput,
VaeField,
VAEModelField,
VAEOutput,
)
from invokeai.app.invocations.primitives import (
@ -73,8 +69,8 @@ from invokeai.app.services.image_records.image_records_common import ImageCatego
from invokeai.app.services.shared.invocation_context import InvocationContext
from invokeai.app.services.workflow_records.workflow_records_common import WorkflowWithoutID
from invokeai.app.util.misc import SEED_MAX, get_random_seed
from invokeai.backend.model_management.model_manager import LoadedModelInfo
from invokeai.backend.model_management.models.base import BaseModelType, ModelType, SubModelType
from invokeai.backend.model_manager.config import BaseModelType, ModelType, SubModelType
from invokeai.backend.model_manager.load.load_base import LoadedModel
from invokeai.backend.stable_diffusion.diffusers_pipeline import PipelineIntermediateState
from invokeai.backend.stable_diffusion.diffusion.conditioning_data import (
BasicConditioningInfo,
@ -118,14 +114,10 @@ __all__ = [
"MetadataItemOutput",
"MetadataOutput",
# invokeai.app.invocations.model
"ModelInfo",
"LoraInfo",
"ModelField",
"UNetField",
"ClipField",
"VaeField",
"MainModelField",
"LoRAModelField",
"VAEModelField",
"UNetOutput",
"VAEOutput",
"CLIPOutput",
@ -166,7 +158,7 @@ __all__ = [
# invokeai.app.services.config.config_default
"InvokeAIAppConfig",
# invokeai.backend.model_management.model_manager
"LoadedModelInfo",
"LoadedModel",
# invokeai.backend.model_management.models.base
"BaseModelType",
"ModelType",