1
0
mirror of https://github.com/huggingface/diffusers.git synced 2026-10-23 09:09:01 +03:00
Files
diffusers/docs/source/en/optimization
Vinh H. Pham 7c6eb78306 [hooks] Support Flux2 in MagCache (#14756)
* [hooks] Support Flux2 in MagCache

MagCache could not be enabled on `Flux2Transformer2DModel` (Flux2 and Flux2 Klein):

1. `Flux2TransformerBlock` and `Flux2SingleTransformerBlock` were not registered in
   `TransformerBlockRegistry`, so `apply_mag_cache` raised `ValueError: Model class ... not registered`.
2. Once registered, the tail hook raised a shape error. The head hook records the image-only input of
   `transformer_blocks[0]`, but the Flux2 model concatenates the text and image streams before the
   single-stream blocks and calls them with `encoder_hidden_states=None`, so the last single block returns
   the fused `[text; image]` sequence. The residual `tail_output - head_input` could not be formed.

Register the two Flux2 blocks (the single block with `return_encoder_hidden_states_index=None`, matching
how the model calls it) and add `_align_to_hidden_states`, which keeps only the trailing image tokens of
the fused tensor when computing the residual. The cached residual is therefore image-only, which is what
the reference MagCache4FLUX implementation does, and it matches the head input on skipped steps. This also replaces
a dead "fallback" branch in the tail hook that subtracted mismatched shapes anyway.

Tests: `MagCacheTesterMixin` for `Flux2Transformer2DModel`, `Flux2Pipeline` and `Flux2KleinPipeline`.

FirstBlockCache has the same head/tail structure and still fails on Flux2; left for a follow-up.

* [hooks] Slice the fused tail output in the existing mismatch branch

Implement the Flux2 residual fix inside the tail hook's sequence-length mismatch branch instead of a
separate `_align_to_hidden_states` helper. The surrounding structure stays as it was: the `diff == 0`
case still covers a batch-size mismatch via broadcasting, and only the mismatched-length case changes
to subtract the trailing image tokens.

---------

Co-authored-by: Dhruv Nair <dhruv.nair@gmail.com>
2026-10-14 15:21:38 +05:30
..
2026-10-07 08:04:42 -07:00
2025-09-30 10:11:19 -07:00
2026-08-28 09:15:05 +05:30
2025-09-30 10:11:19 -07:00
2025-09-30 10:11:19 -07:00