From 4f5c096150b3267344e642ea6af5ea75bc81ce62 Mon Sep 17 00:00:00 2001 From: Chen Mingyi <65432252+mingyi456@users.noreply.github.com> Date: Tue, 16 Sep 2025 20:26:27 +0800 Subject: [PATCH 1/4] Fix bug with VAE slicing in autoencoder_dc.py --- src/diffusers/models/autoencoders/autoencoder_dc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/diffusers/models/autoencoders/autoencoder_dc.py b/src/diffusers/models/autoencoders/autoencoder_dc.py index d3f31de8546b..783f22e97daf 100644 --- a/src/diffusers/models/autoencoders/autoencoder_dc.py +++ b/src/diffusers/models/autoencoders/autoencoder_dc.py @@ -617,7 +617,7 @@ def decode(self, z: torch.Tensor, return_dict: bool = True) -> Union[DecoderOutp returned. """ if self.use_slicing and z.size(0) > 1: - decoded_slices = [self._decode(z_slice).sample for z_slice in z.split(1)] + decoded_slices = [self._decode(z_slice) for z_slice in z.split(1)] decoded = torch.cat(decoded_slices) else: decoded = self._decode(z) From 955f8fc98401355b96c84d15cd674c3e5ea42132 Mon Sep 17 00:00:00 2001 From: mingyi456 Date: Tue, 6 Oct 2026 16:30:15 +0800 Subject: [PATCH 2/4] Crude implementation of single file support --- src/diffusers/loaders/single_file_model.py | 16 ++++++++++++++++ .../condition_embedder_anima.py | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/diffusers/loaders/single_file_model.py b/src/diffusers/loaders/single_file_model.py index 1556227673f4..d6b0a5141044 100644 --- a/src/diffusers/loaders/single_file_model.py +++ b/src/diffusers/loaders/single_file_model.py @@ -84,6 +84,18 @@ else: _LOW_CPU_MEM_USAGE_DEFAULT = False + +def convert_anima_text_conditioner_to_diffusers(checkpoint, **kwargs): + # print(kwargs) + converted_state_dict = {} + for k in list(checkpoint.keys()): + if "llm_adapter" in k: + converted_state_dict[k.removeprefix("net.").removeprefix("model.diffusion_model.").removeprefix("llm_adapter.")] = checkpoint.pop(k) + else: + _ = checkpoint.pop(k) + return converted_state_dict + + SINGLE_FILE_LOADABLE_CLASSES = { "StableCascadeUNet": { "checkpoint_mapping_fn": convert_stable_cascade_unet_single_file_to_diffusers, @@ -192,6 +204,10 @@ "checkpoint_mapping_fn": convert_cosmos_transformer_checkpoint_to_diffusers, "default_subfolder": "transformer", }, + "AnimaTextConditioner": { + "checkpoint_mapping_fn": convert_anima_text_conditioner_to_diffusers, + "default_subfolder": "text_conditioner", + }, "QwenImageTransformer2DModel": { "checkpoint_mapping_fn": lambda checkpoint, **kwargs: checkpoint, "default_subfolder": "transformer", diff --git a/src/diffusers/models/condition_embedders/condition_embedder_anima.py b/src/diffusers/models/condition_embedders/condition_embedder_anima.py index 40fda447ec68..71de1b8fe05f 100644 --- a/src/diffusers/models/condition_embedders/condition_embedder_anima.py +++ b/src/diffusers/models/condition_embedders/condition_embedder_anima.py @@ -17,7 +17,7 @@ import torch.nn.functional as F from ...configuration_utils import ConfigMixin, register_to_config -from ...loaders import PeftAdapterMixin +from ...loaders import PeftAdapterMixin, FromOriginalModelMixin from ..attention import AttentionModuleMixin from ..attention_dispatch import dispatch_attention_fn from ..modeling_utils import ModelMixin @@ -226,7 +226,7 @@ def forward( return hidden_states -class AnimaTextConditioner(ModelMixin, ConfigMixin, PeftAdapterMixin): +class AnimaTextConditioner(ModelMixin, ConfigMixin, FromOriginalModelMixin, PeftAdapterMixin): r""" Text conditioner used by Anima to map Qwen3 hidden states and T5 token ids to Cosmos text embeddings. From 4ea267998be87ef7d06467761430f16b4153c4ca Mon Sep 17 00:00:00 2001 From: mingyi456 Date: Tue, 6 Oct 2026 16:34:02 +0800 Subject: [PATCH 3/4] Move conversion function to single_file_utils.py --- src/diffusers/loaders/single_file_model.py | 13 +------------ src/diffusers/loaders/single_file_utils.py | 9 +++++++++ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/diffusers/loaders/single_file_model.py b/src/diffusers/loaders/single_file_model.py index d6b0a5141044..1a86bc1338ff 100644 --- a/src/diffusers/loaders/single_file_model.py +++ b/src/diffusers/loaders/single_file_model.py @@ -36,6 +36,7 @@ convert_autoencoder_dc_checkpoint_to_diffusers, convert_chroma_transformer_checkpoint_to_diffusers, convert_controlnet_checkpoint, + convert_anima_text_conditioner_to_diffusers, convert_cosmos_transformer_checkpoint_to_diffusers, convert_ernie_image_transformer_checkpoint_to_diffusers, convert_flux2_transformer_checkpoint_to_diffusers, @@ -84,18 +85,6 @@ else: _LOW_CPU_MEM_USAGE_DEFAULT = False - -def convert_anima_text_conditioner_to_diffusers(checkpoint, **kwargs): - # print(kwargs) - converted_state_dict = {} - for k in list(checkpoint.keys()): - if "llm_adapter" in k: - converted_state_dict[k.removeprefix("net.").removeprefix("model.diffusion_model.").removeprefix("llm_adapter.")] = checkpoint.pop(k) - else: - _ = checkpoint.pop(k) - return converted_state_dict - - SINGLE_FILE_LOADABLE_CLASSES = { "StableCascadeUNet": { "checkpoint_mapping_fn": convert_stable_cascade_unet_single_file_to_diffusers, diff --git a/src/diffusers/loaders/single_file_utils.py b/src/diffusers/loaders/single_file_utils.py index 3e160be02b4b..c72e784113d1 100644 --- a/src/diffusers/loaders/single_file_utils.py +++ b/src/diffusers/loaders/single_file_utils.py @@ -3721,6 +3721,15 @@ def swap_scale_shift(weight): return converted_state_dict +def convert_anima_text_conditioner_to_diffusers(checkpoint, **kwargs): + # print(kwargs) + converted_state_dict = {} + for k in list(checkpoint.keys()): + if "llm_adapter" in k: + converted_state_dict[k.removeprefix("net.").removeprefix("model.diffusion_model.").removeprefix("llm_adapter.")] = checkpoint.pop(k) + else: + _ = checkpoint.pop(k) + return converted_state_dict def convert_cosmos_transformer_checkpoint_to_diffusers(checkpoint, **kwargs): converted_state_dict = {key: checkpoint.pop(key) for key in list(checkpoint.keys())} From 07f3409146060e3951424008e98ade2fbaa02313 Mon Sep 17 00:00:00 2001 From: mingyi456 Date: Tue, 6 Oct 2026 19:00:26 +0800 Subject: [PATCH 4/4] Remove commented code --- src/diffusers/loaders/single_file_utils.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/diffusers/loaders/single_file_utils.py b/src/diffusers/loaders/single_file_utils.py index c72e784113d1..6d8ac4f13ad7 100644 --- a/src/diffusers/loaders/single_file_utils.py +++ b/src/diffusers/loaders/single_file_utils.py @@ -3722,7 +3722,6 @@ def swap_scale_shift(weight): return converted_state_dict def convert_anima_text_conditioner_to_diffusers(checkpoint, **kwargs): - # print(kwargs) converted_state_dict = {} for k in list(checkpoint.keys()): if "llm_adapter" in k: