diff --git a/src/diffusers/guiders/adaptive_projected_guidance.py b/src/diffusers/guiders/adaptive_projected_guidance.py index 10d05258bc3f..81137db106a0 100644 --- a/src/diffusers/guiders/adaptive_projected_guidance.py +++ b/src/diffusers/guiders/adaptive_projected_guidance.py @@ -17,6 +17,7 @@ import torch +from ..configuration_utils import register_to_config from .guider_utils import BaseGuidance, rescale_noise_cfg @@ -53,6 +54,7 @@ class AdaptiveProjectedGuidance(BaseGuidance): _input_predictions = ["pred_cond", "pred_uncond"] + @register_to_config def __init__( self, guidance_scale: float = 7.5, diff --git a/src/diffusers/guiders/auto_guidance.py b/src/diffusers/guiders/auto_guidance.py index dc1bf26ade39..159354559966 100644 --- a/src/diffusers/guiders/auto_guidance.py +++ b/src/diffusers/guiders/auto_guidance.py @@ -17,6 +17,7 @@ import torch +from ..configuration_utils import register_to_config from ..hooks import HookRegistry, LayerSkipConfig from ..hooks.layer_skip import _apply_layer_skip_hook from .guider_utils import BaseGuidance, rescale_noise_cfg @@ -60,6 +61,7 @@ class AutoGuidance(BaseGuidance): _input_predictions = ["pred_cond", "pred_uncond"] + @register_to_config def __init__( self, guidance_scale: float = 7.5, diff --git a/src/diffusers/guiders/classifier_free_guidance.py b/src/diffusers/guiders/classifier_free_guidance.py index cc3ffd5758b8..7e72b92fcee2 100644 --- a/src/diffusers/guiders/classifier_free_guidance.py +++ b/src/diffusers/guiders/classifier_free_guidance.py @@ -17,6 +17,7 @@ import torch +from ..configuration_utils import register_to_config from .guider_utils import BaseGuidance, rescale_noise_cfg @@ -67,6 +68,7 @@ class ClassifierFreeGuidance(BaseGuidance): _input_predictions = ["pred_cond", "pred_uncond"] + @register_to_config def __init__( self, guidance_scale: float = 7.5, diff --git a/src/diffusers/guiders/classifier_free_zero_star_guidance.py b/src/diffusers/guiders/classifier_free_zero_star_guidance.py index ea4c4c197f7a..85d5cc62d4e7 100644 --- a/src/diffusers/guiders/classifier_free_zero_star_guidance.py +++ b/src/diffusers/guiders/classifier_free_zero_star_guidance.py @@ -17,6 +17,7 @@ import torch +from ..configuration_utils import register_to_config from .guider_utils import BaseGuidance, rescale_noise_cfg @@ -58,6 +59,7 @@ class ClassifierFreeZeroStarGuidance(BaseGuidance): _input_predictions = ["pred_cond", "pred_uncond"] + @register_to_config def __init__( self, guidance_scale: float = 7.5, diff --git a/src/diffusers/guiders/entropy_rectifying_guidance.py b/src/diffusers/guiders/entropy_rectifying_guidance.py deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/src/diffusers/guiders/guider_utils.py b/src/diffusers/guiders/guider_utils.py index 1c7d6de796b5..555f8897c089 100644 --- a/src/diffusers/guiders/guider_utils.py +++ b/src/diffusers/guiders/guider_utils.py @@ -16,6 +16,7 @@ import torch +from ..configuration_utils import ConfigMixin from ..utils import get_logger @@ -23,12 +24,16 @@ from ..modular_pipelines.modular_pipeline import BlockState +GUIDER_CONFIG_NAME = "guider_config.json" + + logger = get_logger(__name__) # pylint: disable=invalid-name -class BaseGuidance: +class BaseGuidance(ConfigMixin): r"""Base class providing the skeleton for implementing guidance techniques.""" + config_name = GUIDER_CONFIG_NAME _input_predictions = None _identifier_key = "__guidance_identifier__" diff --git a/src/diffusers/guiders/perturbed_attention_guidance.py b/src/diffusers/guiders/perturbed_attention_guidance.py index cd75348ef5bd..dbba904d0bde 100644 --- a/src/diffusers/guiders/perturbed_attention_guidance.py +++ b/src/diffusers/guiders/perturbed_attention_guidance.py @@ -14,6 +14,7 @@ from typing import List, Optional, Union +from ..configuration_utils import register_to_config from ..hooks import LayerSkipConfig from .skip_layer_guidance import SkipLayerGuidance @@ -70,6 +71,7 @@ class PerturbedAttentionGuidance(SkipLayerGuidance): # complex to support joint latent conditioning in a model-agnostic manner without specializing the implementation # for each model architecture. + @register_to_config def __init__( self, guidance_scale: float = 7.5, diff --git a/src/diffusers/guiders/skip_layer_guidance.py b/src/diffusers/guiders/skip_layer_guidance.py index 4b8e556fbe96..e67b20df19fa 100644 --- a/src/diffusers/guiders/skip_layer_guidance.py +++ b/src/diffusers/guiders/skip_layer_guidance.py @@ -17,6 +17,7 @@ import torch +from ..configuration_utils import register_to_config from ..hooks import HookRegistry, LayerSkipConfig from ..hooks.layer_skip import _apply_layer_skip_hook from .guider_utils import BaseGuidance, rescale_noise_cfg @@ -86,6 +87,7 @@ class SkipLayerGuidance(BaseGuidance): _input_predictions = ["pred_cond", "pred_uncond", "pred_cond_skip"] + @register_to_config def __init__( self, guidance_scale: float = 7.5, diff --git a/src/diffusers/guiders/smoothed_energy_guidance.py b/src/diffusers/guiders/smoothed_energy_guidance.py index 5b3e2d6c6390..66c46064d46d 100644 --- a/src/diffusers/guiders/smoothed_energy_guidance.py +++ b/src/diffusers/guiders/smoothed_energy_guidance.py @@ -17,6 +17,7 @@ import torch +from ..configuration_utils import register_to_config from ..hooks import HookRegistry from ..hooks.smoothed_energy_guidance_utils import SmoothedEnergyGuidanceConfig, _apply_smoothed_energy_guidance_hook from .guider_utils import BaseGuidance, rescale_noise_cfg @@ -76,6 +77,7 @@ class SmoothedEnergyGuidance(BaseGuidance): _input_predictions = ["pred_cond", "pred_uncond", "pred_cond_seg"] + @register_to_config def __init__( self, guidance_scale: float = 7.5, diff --git a/src/diffusers/guiders/tangential_classifier_free_guidance.py b/src/diffusers/guiders/tangential_classifier_free_guidance.py index 28f55880aab5..b3187e526316 100644 --- a/src/diffusers/guiders/tangential_classifier_free_guidance.py +++ b/src/diffusers/guiders/tangential_classifier_free_guidance.py @@ -17,6 +17,7 @@ import torch +from ..configuration_utils import register_to_config from .guider_utils import BaseGuidance, rescale_noise_cfg @@ -49,6 +50,7 @@ class TangentialClassifierFreeGuidance(BaseGuidance): _input_predictions = ["pred_cond", "pred_uncond"] + @register_to_config def __init__( self, guidance_scale: float = 7.5, diff --git a/src/diffusers/modular_pipelines/modular_pipeline.py b/src/diffusers/modular_pipelines/modular_pipeline.py index 5cc27d5586b8..99db80d3151c 100644 --- a/src/diffusers/modular_pipelines/modular_pipeline.py +++ b/src/diffusers/modular_pipelines/modular_pipeline.py @@ -1911,7 +1911,7 @@ def update(self, **kwargs): loader.update(unet=new_unet_model, text_encoder=new_text_encoder) # Update configuration values - loader.update(requires_safety_checker=False, guidance_rescale=0.7) + loader.update(requires_safety_checker=False) # Update both components and configs together loader.update(unet=new_unet_model, requires_safety_checker=False)