mirror of
https://github.com/vladmandic/automatic
synced 2026-09-20 01:31:13 +02:00
refactor(pipelines): split kandinsky into kandinsky3 and kandinsky5
K3 and K5 share only the marketing name: different diffusers pipeline classes (Kandinsky3Pipeline vs Kandinsky5T2I/I2IPipeline), different denoiser classes (Kandinsky3UNet vs Kandinsky5Transformer3DModel), no shared scaffolding. Separate packages so each spec lives next to the arch it serves. K2.1 and K2.2 stay outside both packages since they go through KandinskyCombinedPipeline.from_pretrained directly with no spec.
This commit is contained in:
@@ -1,23 +0,0 @@
|
||||
"""Kandinsky pipeline package.
|
||||
|
||||
Exports :data:`KANDINSKY3_UNET_SPEC` and :data:`KANDINSKY5_SPEC`.
|
||||
|
||||
Kandinsky ships several generations under one family:
|
||||
|
||||
- Kandinsky 2.1 / 2.2 are unet-based and load through diffusers'
|
||||
combined pipelines without going through the native loader, so no
|
||||
spec is needed.
|
||||
- Kandinsky 3 uses :class:`Kandinsky3UNet` in the ``unet`` subfolder of
|
||||
the repo, hence ``subfolder='unet'`` instead of the default
|
||||
``'transformer'``.
|
||||
- Kandinsky 5 uses the new :class:`Kandinsky5Transformer3DModel` and
|
||||
follows the default layout.
|
||||
"""
|
||||
|
||||
import diffusers
|
||||
|
||||
from pipelines.native_transformer import TransformerSpec
|
||||
|
||||
|
||||
KANDINSKY3_UNET_SPEC = TransformerSpec(cls=diffusers.Kandinsky3UNet, subfolder='unet')
|
||||
KANDINSKY5_SPEC = TransformerSpec(cls=diffusers.Kandinsky5Transformer3DModel)
|
||||
@@ -0,0 +1,13 @@
|
||||
"""Kandinsky 3.0 pipeline package.
|
||||
|
||||
Exports :data:`KANDINSKY3_UNET_SPEC`. Kandinsky 3 uses
|
||||
:class:`Kandinsky3UNet` in the ``unet`` subfolder of the repo, hence
|
||||
``subfolder='unet'`` instead of the default ``'transformer'``.
|
||||
"""
|
||||
|
||||
import diffusers
|
||||
|
||||
from pipelines.native_transformer import TransformerSpec
|
||||
|
||||
|
||||
KANDINSKY3_UNET_SPEC = TransformerSpec(cls=diffusers.Kandinsky3UNet, subfolder='unet')
|
||||
@@ -0,0 +1,12 @@
|
||||
"""Kandinsky 5.0 pipeline package.
|
||||
|
||||
Exports :data:`KANDINSKY5_SPEC`. Kandinsky 5 uses
|
||||
:class:`Kandinsky5Transformer3DModel` and follows the default layout.
|
||||
"""
|
||||
|
||||
import diffusers
|
||||
|
||||
from pipelines.native_transformer import TransformerSpec
|
||||
|
||||
|
||||
KANDINSKY5_SPEC = TransformerSpec(cls=diffusers.Kandinsky5Transformer3DModel)
|
||||
@@ -50,7 +50,7 @@ def load_kandinsky3(checkpoint_info, diffusers_load_config=None):
|
||||
load_args, _quant_args = model_quant.get_dit_args(diffusers_load_config)
|
||||
log.debug(f'Load model: type=Kandinsky30 repo="{repo_id}" config={diffusers_load_config} offload={shared.opts.diffusers_offload_mode} dtype={devices.dtype} args={load_args}')
|
||||
|
||||
from pipelines.kandinsky import KANDINSKY3_UNET_SPEC
|
||||
from pipelines.kandinsky3 import KANDINSKY3_UNET_SPEC
|
||||
unet = generic.load_transformer(repo_id, cls_name=diffusers.Kandinsky3UNet, load_config=diffusers_load_config, subfolder="unet", variant="fp16", native_spec=KANDINSKY3_UNET_SPEC)
|
||||
text_encoder = generic.load_text_encoder(repo_id, cls_name=transformers.T5EncoderModel, load_config=diffusers_load_config, subfolder="text_encoder", variant="fp16", allow_shared=False)
|
||||
|
||||
@@ -84,7 +84,7 @@ def load_kandinsky5(checkpoint_info, diffusers_load_config=None):
|
||||
load_args, _quant_args = model_quant.get_dit_args(diffusers_load_config)
|
||||
log.debug(f'Load model: type=Kandinsky50 repo="{repo_id}" config={diffusers_load_config} offload={shared.opts.diffusers_offload_mode} dtype={devices.dtype} args={load_args}')
|
||||
|
||||
from pipelines.kandinsky import KANDINSKY5_SPEC
|
||||
from pipelines.kandinsky5 import KANDINSKY5_SPEC
|
||||
transformer = generic.load_transformer(repo_id, cls_name=diffusers.Kandinsky5Transformer3DModel, load_config=diffusers_load_config, native_spec=KANDINSKY5_SPEC)
|
||||
text_encoder = generic.load_text_encoder(repo_id, cls_name=transformers.Qwen2_5_VLForConditionalGeneration, load_config=diffusers_load_config)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user