Skip to content

Commit a263e1a

Browse files
committed
_always_upcast_modules -> _precision_sensitive_module_patterns
1 parent 1335d7e commit a263e1a

27 files changed

+35
-33
lines changed

src/diffusers/models/autoencoders/autoencoder_asym_kl.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class AsymmetricAutoencoderKL(ModelMixin, ConfigMixin):
6060
Synthesis with Latent Diffusion Models](https://arxiv.org/abs/2112.10752) paper.
6161
"""
6262

63-
_always_upcast_modules = ["decoder"]
63+
_precision_sensitive_module_patterns = ["decoder"]
6464

6565
@register_to_config
6666
def __init__(

src/diffusers/models/autoencoders/vq_model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ class VQModel(ModelMixin, ConfigMixin):
7171
Type of normalization layer to use. Can be one of `"group"` or `"spatial"`.
7272
"""
7373

74-
_always_upcast_modules = ["quantize"]
74+
_precision_sensitive_module_patterns = ["quantize"]
7575

7676
@register_to_config
7777
def __init__(

src/diffusers/models/modeling_utils.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ class ModelMixin(torch.nn.Module, PushToHubMixin):
163163
_keys_to_ignore_on_load_unexpected = None
164164
_no_split_modules = None
165165
_keep_in_fp32_modules = None
166-
_always_upcast_modules = None
166+
_precision_sensitive_module_patterns = None
167167

168168
def __init__(self):
169169
super().__init__()
@@ -344,10 +344,11 @@ def enable_layerwise_upcasting(
344344
memory footprint from model weights, but may lead to some quality degradation in the outputs. Most degradations
345345
are negligible, mostly stemming from weight casting in normalization and modulation layers.
346346
347-
By default, most models in diffusers set the `_always_upcast_modules` attribute to ignore patch embedding,
348-
positional embedding and normalization layers. This is because these layers are most likely precision-critical
349-
for quality. If you wish to change this behavior, you can set the `_always_upcast_modules` attribute to `None`,
350-
or call [`~hooks.layerwise_upcasting.apply_layerwise_upcasting`] with custom arguments.
347+
By default, most models in diffusers set the `_precision_sensitive_module_patterns` attribute to ignore patch
348+
embedding, positional embedding and normalization layers. This is because these layers are most likely
349+
precision-critical for quality. If you wish to change this behavior, you can set the
350+
`_precision_sensitive_module_patterns` attribute to `None`, or call
351+
[`~hooks.layerwise_upcasting.apply_layerwise_upcasting`] with custom arguments.
351352
352353
Example:
353354
Using [`~models.ModelMixin.enable_layerwise_upcasting`]:
@@ -386,8 +387,8 @@ def enable_layerwise_upcasting(
386387
user_provided_patterns = False
387388
if self._keep_in_fp32_modules is not None:
388389
skip_modules_pattern += tuple(self._keep_in_fp32_modules)
389-
if self._always_upcast_modules is not None:
390-
skip_modules_pattern += tuple(self._always_upcast_modules)
390+
if self._precision_sensitive_module_patterns is not None:
391+
skip_modules_pattern += tuple(self._precision_sensitive_module_patterns)
391392
skip_modules_pattern = tuple(set(skip_modules_pattern))
392393

393394
if is_peft_available() and not user_provided_patterns:

src/diffusers/models/transformers/auraflow_transformer_2d.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ class AuraFlowTransformer2DModel(ModelMixin, ConfigMixin, FromOriginalModelMixin
276276
"""
277277

278278
_no_split_modules = ["AuraFlowJointTransformerBlock", "AuraFlowSingleTransformerBlock", "AuraFlowPatchEmbed"]
279-
_always_upcast_modules = ["pos_embed", "norm"]
279+
_precision_sensitive_module_patterns = ["pos_embed", "norm"]
280280
_supports_gradient_checkpointing = True
281281

282282
@register_to_config

src/diffusers/models/transformers/cogvideox_transformer_3d.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ class CogVideoXTransformer3DModel(ModelMixin, ConfigMixin, PeftAdapterMixin):
212212
Scaling factor to apply in 3D positional embeddings across temporal dimensions.
213213
"""
214214

215-
_always_upcast_modules = ["patch_embed", "norm"]
215+
_precision_sensitive_module_patterns = ["patch_embed", "norm"]
216216
_supports_gradient_checkpointing = True
217217
_no_split_modules = ["CogVideoXBlock", "CogVideoXPatchEmbed"]
218218

src/diffusers/models/transformers/dit_transformer_2d.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ class DiTTransformer2DModel(ModelMixin, ConfigMixin):
6464
A small constant added to the denominator in normalization layers to prevent division by zero.
6565
"""
6666

67-
_always_upcast_modules = ["pos_embed", "norm"]
67+
_precision_sensitive_module_patterns = ["pos_embed", "norm"]
6868
_supports_gradient_checkpointing = True
6969

7070
@register_to_config

src/diffusers/models/transformers/hunyuan_transformer_2d.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ class HunyuanDiT2DModel(ModelMixin, ConfigMixin):
244244
Whether or not to use style condition and image meta size. True for version <=1.1, False for version >= 1.2
245245
"""
246246

247-
_always_upcast_modules = ["pos_embed", "norm", "pooler"]
247+
_precision_sensitive_module_patterns = ["pos_embed", "norm", "pooler"]
248248

249249
@register_to_config
250250
def __init__(

src/diffusers/models/transformers/latte_transformer_3d.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ class LatteTransformer3DModel(ModelMixin, ConfigMixin):
6565
The number of frames in the video-like data.
6666
"""
6767

68-
_always_upcast_modules = ["pos_embed", "norm"]
68+
_precision_sensitive_module_patterns = ["pos_embed", "norm"]
6969

7070
@register_to_config
7171
def __init__(

src/diffusers/models/transformers/lumina_nextdit2d.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ class LuminaNextDiT2DModel(ModelMixin, ConfigMixin):
221221
overall scale of the model's operations.
222222
"""
223223

224-
_always_upcast_modules = ["patch_embedder", "norm", "ffn_norm"]
224+
_precision_sensitive_module_patterns = ["patch_embedder", "norm", "ffn_norm"]
225225

226226
@register_to_config
227227
def __init__(

src/diffusers/models/transformers/pixart_transformer_2d.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ class PixArtTransformer2DModel(ModelMixin, ConfigMixin):
7979

8080
_supports_gradient_checkpointing = True
8181
_no_split_modules = ["BasicTransformerBlock", "PatchEmbed"]
82-
_always_upcast_modules = ["pos_embed", "norm", "adaln_single"]
82+
_precision_sensitive_module_patterns = ["pos_embed", "norm", "adaln_single"]
8383

8484
@register_to_config
8585
def __init__(

0 commit comments

Comments
 (0)