1
0
mirror of https://github.com/huggingface/diffusers.git synced 2026-10-23 09:09:01 +03:00

1308 Commits

Author SHA1 Message Date
sayakpaul
a3608b512e Release: v0.39.0-release 2026-07-03 14:15:02 +05:30
dependabot[bot]
dbe1258991 Bump transformers from 4.47.0 to 5.3.0 in /examples/cogview4-control (#14109)
Bumps [transformers](https://github.com/huggingface/transformers) from 4.47.0 to 5.3.0.
- [Release notes](https://github.com/huggingface/transformers/releases)
- [Commits](https://github.com/huggingface/transformers/compare/v4.47.0...v5.3.0)

---
updated-dependencies:
- dependency-name: transformers
  dependency-version: 5.3.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-02 17:36:11 +05:30
apolinário
26ec30e8ad Ideogram4 lora training (#13861)
* Ideogram4 DreamBooth LoRA training

Add examples/dreambooth/train_dreambooth_lora_ideogram4.py + README + requirements:
- DreamBooth LoRA training for Ideogram 4 (flow-matching, dual transformer, Qwen3-VL TE)
- nf4 QLoRA and SDNQ fp8 bases: --do_fp8_training trains the fp8 checkpoint in place
  (scaled matmul), or omit it to dequantize the SDNQ base to bf16
- --disable_training_autocast (Ideogram4's forward is corrupted by autocast)
- structured JSON caption support + --upsample_prompt
- model card with a validation-image gallery

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Apply style fixes

* Fix base model repo reference in Ideogram4 LoRA README

* Align Ideogram4 script deps with requirements file

---------

Co-authored-by: linoytsaban <linoy.tsaban@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Linoy Tsaban <57615435+linoytsaban@users.noreply.github.com>
2026-07-01 18:10:33 +03:00
Sayak Paul
4f37263ab7 [chore] update to 2026 finally. (#14079)
update to 2026 finally.
2026-06-29 20:20:44 -04:00
apolinário
3993de59e3 Krea 2 LoRA DreamBooth trainer (#14046)
* Add Krea 2 LoRA DreamBooth trainer + Krea2 LoRA loader

Adds examples/dreambooth/train_dreambooth_lora_krea2.py and the
Krea2LoraLoaderMixin (Krea2Pipeline now inherits it) so LoRA adapters
can be saved/loaded for the Krea 2 transformer. The transformer/pipeline
forward now accept attention_kwargs for runtime LoRA scaling.

Co-Authored-By: linoytsaban <linoy.tsaban@gmail.com>

* inline _pack/_unpack_latents in trainer (pipeline methods are instance methods)

* add Krea2LoraLoaderMixin to LoRA loaders docs

* remove mu from validation call to align with pipeline on main

---------

Co-authored-by: linoytsaban <linoy.tsaban@gmail.com>
Co-authored-by: Linoy Tsaban <57615435+linoytsaban@users.noreply.github.com>
2026-06-23 17:39:27 +05:30
yzhautouskay
bcbfcd43da Add Cosmos3 video2video generation support (#13896)
* Init v2v cosmos3 commit

* Add user quide; prompt upsampling is TBD

* Apply style fixes

---------

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-06-15 21:08:36 -07:00
Hz_Zhang
bc6e1f2499 Fix incorrect batch temporal IDs for cond_model_input in Flux2 Klein img2img training (#13923)
`train_dreambooth_lora_flux2_klein_img2img.py` passed the whole batch to
`Flux2KleinPipeline._prepare_image_ids` as a list of reference images, so each
independent training sample got a different temporal id (T=10, 20, 30, ...) as if
they were multiple references of one instance. Each batch element is an independent
sample with a single conditional image, so they must share the same temporal id.

Generate ids for one sample and expand across the batch. This is the Flux2 Klein
counterpart of the same bug/fix in `train_dreambooth_lora_flux2_img2img.py` (#13811).

Fixes #13866
2026-06-12 08:35:11 +05:30
Hz_Zhang
e377c0a4ab Fix fp16 LoRA unscale crash after validation in train_dreambooth_lora.py (#13895)
When training with `--mixed_precision="fp16"` and `--validation_prompt`,
the first optimizer step after a validation run fails with
`ValueError: Attempting to unscale FP16 gradients`.

Under fp16, `cast_training_params` keeps the trainable LoRA params in
fp32. The in-loop validation pipeline is built with the same live `unet`
object, and `log_validation` then calls `pipeline.to(device, dtype=torch_dtype)`,
which downcasts those fp32 LoRA params back to fp16. The next backward
therefore produces fp16 grads and `GradScaler.unscale_` raises.

Drop the dtype cast from that `.to(...)` so the shared `unet` keeps its
fp32 LoRA params. This matches train_dreambooth_lora_sdxl.py, which moves
the validation pipeline with `.to(accelerator.device)` only.

Fixes #13124

Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
2026-06-09 16:13:08 +05:30
yzhautouskay
bcc20e452b Add Cosmos3 action generation support (#13823)
* Add Cosmos3 action generation support

* Add README action examples

* Use do_classifier_free_guidance property

* Remove unused method

* Add action policy example to pipelines doc

* Adding model selection for action example doc.

* Remove redundant casts

* Rename _pack_action_tokens to _prepare_action_segment

* Move validation checks to check_inputs

* Add action arguments in the __call__ docstring

* Move action mode check to check_inputs

* Rename action to action_tokens

* Add warning for num_frames ovewrite attempt

* Rename action_tokens to raw_actions

* Remove scheduler config override

* Refactor action to use CosmosActionCondition

* Fix examples script to support flow_shift arg

* Apply styling fixes

* Remove CosmosActionCondition properties, move to pipeline

* Replace validate wiht post init

* Set height/width/num_frames to None, raise error if set ofr action

* Fix action_dim default setting

* Remove video argument before v2v is added

* Fix None args

* Add _EMBODIMENT_TO_RAW_ACTION_DIM mapping

* Remove --raw-action-dim from README.md

* Added  prompt upsampler docs and examples

* Apply style fixes

* Bugfix for action mrope compression factor

* Add action prompt json formatting, update docs

* Add hand_pose raw_action_dim value

* Add missing args to docstrings

---------

Co-authored-by: Atharva Joshi <atjoshi@nvidia.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: YiYi Xu <yixu310@gmail.com>
2026-06-04 11:05:38 -10:00
Alexey Zolotenkov
7c12518a8f Allow bucket reshuffling with DreamBooth caches (#13712)
* Allow bucket reshuffling with DreamBooth caches

* Address DreamBooth cache review suggestions

* Seed bucket batch sampler shuffling

---------

Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
2026-06-02 19:57:59 +05:30
Ricardo-M-L
e1db6d1c7d Fix AttributeError in onnxruntime train_unconditional (args.report_to → args.logger) (#13524)
Fix AttributeError in onnxruntime train_unconditional

The ORT example `examples/research_projects/onnxruntime/unconditional_image_generation/train_unconditional.py`
defines `--logger` (argparse line 196) but references `args.report_to`
in two places:

  * Line 280: `if args.report_to == "wandb" and args.hub_token is not None:`
  * Line 294: `log_with=args.report_to,`

Since there is no `--report_to` flag on the parser, both references crash
with `AttributeError: 'Namespace' object has no attribute 'report_to'`
as soon as `main()` starts — the script cannot run at all.

The sibling non-ORT script
`examples/unconditional_image_generation/train_unconditional.py` uses
`args.logger` consistently; this PR aligns the ORT variant with that
behavior, and updates the error message to refer to `--logger=wandb`
instead of the non-existent `--report_to=wandb`.
2026-06-01 09:23:34 -07:00
Atharva Joshi
a1c7df4801 Adding Cosmos 3 to Diffusers (#13818)
* Adding Cosmos 3

* removed dead code

* Change customer TimeEmbedding Layer to DIffusers Time Embedding

* removed dependency on hugging face transformers

* refactor 1

* Fixed Attention Pattern

* Removed from Pretrain overrides

* Removing normalization from the audio Tokenizer

* fixed diffusers checkpoint

* fixed video save uint conversion

* added forward hook for cpu offload case

* removed dead params for sound tokenizer

* renaming audio encoder for readability

* ruff format

* Fix checkpoint conversion script for sound tokenizer

* Audio Decoder trim and removing some dead code

* removing dead sequence packing code

* refactor pipeline to diffusers style formatting

* removing use of cosmos3 audio encoder

* Revert "removing use of cosmos3 audio encoder"

This reverts commit 1b8b99a95e5acc749b5c100637ed382de138c606.

* refactor audio encoder

* inline remaining sequence packing functions and lint

* Removed GenerationDataClean class and Action logic

* inlined default args

* removed dead code and refactoring

* drop pipeline-helper @no_grad, inline derive helper, move guidance check to check_inputs

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* drop unused list bookkeeping from PackedSequence

attn_modes was never read; sample_lens collapses into the existing
sequence_length int (we only pack a single sample at a time); split_lens
collapses into a single und_len int (only split_lens[0] was ever read).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* extract pack-time build state from PackedSequence dataclass

curr, _use_mrope, _mrope_temporal_offset, _mrope_reset_spatial were
transient counters used while building the joint sequence, not part of
the finalized output. Thread them through _pack_*_tokens as positional
args/returns so the dataclass only carries fields the pipeline actually
reads back.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* drop private-API isinstance/shape asserts

These were build-mode guards on PackedSequence internals and shape
checks on tensors the pipeline itself constructs, both flagged as
noise in private code per reviewer.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* build PackedSequence tensors on target device, drop to_cuda

Thread device through pack_input_sequence and _pack_*_tokens helpers
so all torch.tensor/zeros/arange calls land on the target device
directly. Move CPU-side mRoPE tensors over with .to(device) at the
append site. Pass device to finalize so list-to-tensor conversion lands
on device too. Delete PackedSequence.to_cuda() and the helper
_modality_to_cuda; drop the corresponding call sites in __call__.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* drop SequencePlan, skip_text_tokens, and bos_token_id branch

SequencePlan's has_text and has_vision were True at every construction
site and has_sound was derivable from x0_tokens_sound is not None.
condition_frame_indexes_vision is now passed directly as a List[int]
arg to pack_input_sequence. Removed the skip_text_tokens flag (never
True) and the dead bos_token_id shift branch in _pack_text_tokens
(special_tokens never carries one in this pipeline).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* use retrieve_latents helper in _encode_video

Copied from stable_diffusion_img2img matching cosmos2_5 convention so
make fix-copies keeps it synced. Functionally identical to the prior
.latent_dist.mode() call but handles latent_dist/latents attribute
variants uniformly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* drop get_data_and_condition + data_batch dict scaffolding

normalize_video_databatch_inplace, augment_image_dim_inplace and
remove_padding_from_latent were no-ops once is_preprocessed=True
(always set by this pipeline) and the pipeline never pads.
get_data_and_condition just orchestrated those plus a never-taken
multi-vision branch.

Replaced the whole chain with a few lines inline in prepare_latents:
build vision_tensor on device, call _encode_video, set fps_vision.
prepare_latents no longer needs input_caption_key, input_video_key,
input_image_key, or the prompt kwarg.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* drop _load_image_as_tensor; use VideoProcessor for conditioning frame

Image loading is the caller's responsibility (load_image from
diffusers.utils), matching the cosmos2_5 example. The pipeline registers
a VideoProcessor in __init__ and calls preprocess() to resize + normalize
caller-supplied PIL / np / tensor inputs to [1, 3, H, W] in [-1, 1].
prepare_latents fills the temporal dim in two lines (single frame at
t=0, repeat-pad the rest) preserving the prior i2v behavior.

Inference script updated to call load_image() before passing to the
pipeline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* move encode/decode helpers + transformer forward into Cosmos3OmniTransformer

Pull encode_text / encode_vision / encode_sound_tokens / decode_vision /
decode_sound_tokens (and their pure-tensor helpers patchify_and_pack_latents,
unpatchify_and_unpack_latents, apply_timestep_embeds_to_noisy_tokens,
_pack_sound_latents, _unpack_sound_latents) from the pipeline into
Cosmos3OmniTransformer as methods. The transformer's forward(packed_seq)
now runs the full per-step pass: encode text/vision/sound, rotary +
layer loop, decode vision/sound — returns (preds_vision, preds_sound).

The pipeline's CFG loop drops the encode_*/decode_* method calls and
the manual und/gen split/concat; each pass is now a single
self.transformer(packed_seq) call. No self.transformer.{embed_tokens,
vae2llm, llm2vae, sound2llm, llm2sound, time_embedder, time_proj,
sound_modality_embed} access remains in the pipeline.

Cosmos3VLTextModel is kept as a structural wrapper for now — flattening
it would break the published checkpoint layout. Tracked separately.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* remove Cosmos3VLTextModel; flatten transformer layout

embed_tokens / layers / norm / norm_moe_gen / rotary_emb are now direct
attributes of Cosmos3OmniTransformer. The converter strips the leading
`model.` prefix from the source language_model state-dict so new
conversions land at the flat layout natively.

Published Hub artifact (nvidia/Cosmos3-Nano) needs its transformer
safetensors + index.json re-keyed with the same prefix strip before
this code can load it.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* move save_img_or_video/save_wav to cosmos/export_utils.py

Per reviewer guidance, custom video/audio export helpers belong in a
pipeline-local export_utils.py (mirroring pipelines/ltx2/export_utils.py)
rather than living inside the pipeline file. Pipeline imports trim the
now-unused pathlib/numpy/export_to_video; inference example updated to
import from the new location.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* drop @torch.no_grad on pipeline __call__

Diffusers pipeline convention: __call__ does not wear a torch.no_grad
decorator; the responsibility for grad context sits with the caller.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* follow standard transformer conventions in Cosmos3OmniTransformer

- Declare _no_split_modules, _repeated_blocks, _skip_layerwise_casting_patterns,
  _keep_in_fp32_modules, _supports_gradient_checkpointing on the transformer.
- Wire self.gradient_checkpointing + the _gradient_checkpointing_func branch in
  forward so the flag is honest (models.md gotcha #3).
- Add PeftAdapterMixin and AttentionMixin to the mixin set so LoRA loading and
  the attention-backend setters work.
- CosmosAttnProcessor3_0 now declares _attention_backend / _parallel_config and
  forwards them to dispatch_attention_fn, matching the pattern in models.md
  and transformer_wan.py.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* restore @torch.no_grad() on Cosmos3OmniDiffusersPipeline.__call__

Reverting bea4eecf9 — removing the decorator causes GPU OOM during inference
because the autograd graph accumulates across the full denoising loop (35
steps × dual cond/uncond passes × full transformer). pipelines.md gotcha #2
documents this exact failure mode and the convention is upheld by every
sibling pipeline (pipeline_flux.py:652, pipeline_qwenimage.py:462,
pipeline_wan.py:381, pipeline_ltx.py:535).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* drop training-only dummy projection paths in transformer decode helpers

_decode_vision and _decode_sound both guarded a "no noisy tokens" branch
that ran zeroed projections to keep the autograd graph intact. Those
branches only fire when a pure-conditioning step has no MSE-loss tokens,
which never happens in the inference pipeline — every workflow has at
least one noisy vision frame, and _decode_sound is gated on has_sound
which itself requires noisy sound tokens. Deleting per CLAUDE.md:
"delete training-time code paths… only keep the inference path."

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* inline modality encode/decode helpers into transformer forward

models.md "Coding style": all layer calls should be visible directly in
forward — avoid helper functions that hide nn.Module calls. Inlines
_encode_text / _encode_vision / _encode_sound / _decode_vision /
_decode_sound into forward so embed_tokens, vae2llm, sound2llm, llm2vae,
llm2sound, and time_embedder are all visible at the call site. Pure-
tensor helpers (_patchify_and_pack_latents, _unpatchify_and_unpack_latents,
_pack_sound_latents, _unpack_sound_latents, _apply_timestep_embeds_to_noisy_tokens)
stay as methods since they don't hide layer state.

Also drops the inference-unreachable guards while collapsing the helpers:
the "vision is None" / "sound is None" / "mse_loss_indexes.numel() > 0"
branches never fire because the pipeline always packs vision, only routes
to the sound branch when sound is present, and condition_frame_indexes
never covers the entire stream.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* trim dead flags and idioms in Cosmos3 pipeline __call__

- Drop assert config.use_moe — use_moe is never read by the model and
  asserts vanish under python -O; if !use_moe is unsupported the place
  to surface it is check_inputs, not a stripped assert.
- Delete the joint_attn_implementation == "flex" path entirely (the
  include_end_of_generation_token branch in pack_input_sequence, the
  include_eog hoist, and both call-site kwargs). The published config
  is "two_way"; the flex branch and the end_of_generation special token
  were dead under every shipped checkpoint.
- Drop torch._inductor.cudagraph_mark_step_begin() from the step loop —
  cudagraph stepping belongs in the caller's torch.compile wrapper, not
  the inference pipeline.
- Replace four int(torch.prod(torch.tensor(shape))) idioms with
  math.prod(shape) — no tensor allocation, no .item() sync, and math
  is already imported.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* introduce Cosmos3Condition for prepare_latents return shape

Replace the 7-tuple return from prepare_latents with a Cosmos3Condition
dataclass that carries the encoded conditioning latents (vision + optional
sound), their fps tensors, the conditioning frame indices, and the
num_vision_items count. The denoising loop and _postprocess_latents now
read these as named attributes instead of positional tuple unpacking.

Addresses reviewer thread huggingface/diffusers-new-model-addition-cosmos#1
comment 3278569263 ("create something like Cosmos3Condition class for
condition input").

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* restructure pack helpers as data-returning pipeline methods

Replace the four module-level pack functions (_pack_text_tokens,
_pack_vision_tokens, _pack_sound_tokens, pack_input_sequence) with
methods on Cosmos3OmniDiffusersPipeline. The three per-segment methods
now build and return their own data (text_ids/mrope_ids tuple for text,
a populated ModalityData for vision/sound) instead of mutating a shared
PackedSequence builder; pack_input_sequence orchestrates them.

Other cleanups along the way:
- Drop dead branches that the published config never exercises:
  use_mrope=False (model is always unified_3d_mrope), has_generation=False
  (always True), multi-vision-items (num_vision_items always 1), and
  the curr_rope_id non-mrope path.
- Move the bf16 cast of per-step noisy tokens to before pack_input_sequence
  so the build-then-mutate pattern on packed_seq.vision.tokens disappears.
- Drop the latent_patch_size / config hoists in __call__ that are now
  read directly inside the pack methods.

Addresses reviewer threads
huggingface/diffusers-new-model-addition-cosmos#1 comments 3278871807,
3278908766, 3278918514.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* collapse builder-pattern PackedSequence/ModalityData into flat dataclasses

ModalityData and PackedSequence carried a list-or-tensor union for every
field so they could double as builders during packing, with finalize()
converting the lists to tensors at the end. Now that the pack methods
each build their segment in one shot, finalize() is just a list->tensor
conversion the pack methods can do themselves.

- Rename ModalityData to _ModalityData (internal) with all-tensor fields
  (lists only for per-item entries like tokens / condition_mask).
- Rename PackedSequence to Cosmos3PackedSequence and drop its finalize()
  method; fields are direct tensors at construction time.
- _pack_vision_tokens / _pack_sound_tokens now build finalized
  _ModalityData directly via torch.arange / torch.tensor / torch.full.
- pack_input_sequence builds the final Cosmos3PackedSequence in one
  return statement; no more two-stage build-then-finalize.
- Update the transformer's forward docstring to reference the new name.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* exclude dtype from saved transformer config via ignore_for_config

ModelMixin.from_pretrained injects dtype into init_dict
(configuration_utils.py:289) whenever it appears in the loader's
unused_kwargs, so Cosmos3OmniTransformer.__init__ has to accept dtype.
But the default @register_to_config decorator was also serializing it
into config.json on every save — leaving a stray "dtype": "bfloat16"
key that doesn't describe the architecture, just the load-time runtime
preference.

Adding ignore_for_config = ["dtype"] keeps the decorator from
registering dtype while still accepting it on the init signature.
New saves omit dtype; existing checkpoints that have it log a
warning at load time but the value is re-injected and __init__
ignores it, so loading is unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* add Cosmos3 pipeline and transformer docs pages; retire JSON example inputs

- New docs/source/en/api/pipelines/cosmos3.md with copy-pasteable
  text-to-image, text-to-video, image-to-video, and text-to-video-with-sound
  example snippets. The docs page is now the canonical reference for
  application code instead of the JSON-driven inputs/ directory.
- New docs/source/en/api/models/cosmos3_omni_transformer.md describing the
  MoT dual-pathway architecture and showing a from_pretrained snippet.
- Wire both pages into docs/source/en/_toctree.yml.
- Export Cosmos3OmniDiffusersPipeline from the top-level diffusers package
  (matching every sibling pipeline) and add the corresponding dummy class
  for torch/transformers-unavailable environments.
- Delete examples/cosmos3/inputs/omni/{t2i,t2v,i2v}.json and rewrite
  inference_cosmos3.py to take --prompt / --vision-path / --num-frames
  directly as CLI args. The script stays as a development smoke-test
  runner; canonical usage now lives in the docs.
- Refresh examples/cosmos3/README.md to point at the docs page and
  reflect the new CLI surface.

Addresses reviewer thread
huggingface/diffusers-new-model-addition-cosmos#1 comment 3278258567.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* restore full prompts in cosmos3 docs from original example JSONs

The text-to-video and image-to-video example prompts were shortened
when porting from examples/cosmos3/inputs/omni/*.json into the docs
page. Restore them verbatim from the JSONs so the docs reflect the
prompts the model was actually demonstrated against, and so users
copying from the docs get the same conditioning the example was tuned
for.

Also align the text-to-video-with-sound example: it now reuses the
exact same prompt as the text-to-video block with only enable_sound=True
added, instead of a hand-written waterfall prompt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Renamed Cosmos3 module attributes

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* bugfix

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Removed unnecessary helper function; added extra comments

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Moved from encode_prompt to tokenize_prompt

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Bring back video system prompt

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Remove multi frame conditioning for now

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Removed default negative prompts from code

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Remove Cosmos3condition; simplify sequence pack

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Clean up multiple parameters

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Simplify decode video; remove remainings of batching

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* simple renames

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Refactored schedulers for sound

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Remove unnecessary autocast

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Update sound example

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Simplify loops in transformer_cosmos3.py

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Remove unused config attributes

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Cleanup audio decoder

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Reuse encoder_video from LTX2 for Cosmos3

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Fixed a few nits

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Moved to RMSNorm for Cosmos3

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Remove meta_tensor usage

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Improved rope handling

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Improved prompt templates

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Added extra docs for templatete

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* remove dataclasses

* Cleanup after merging

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Added guardrails

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* bugfixed guardrails

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Bugfix guardrails v2

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Simplified input_timestep

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* Add TODO

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* simplify conditional mask generation

* Inlined _postprocess_latents

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* removed pack_input_sequence helper

* restore export utils with deprecation warning

* moved sampling rate to pipeline attribute

* inlined sound and image condition mask

* seperating static  and timestep based sound and vision token packing

* unpack transformer args

* enabled selection of cosmos3 super

* Update src/diffusers/pipelines/cosmos/pipeline_cosmos3_omni.py

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* Update src/diffusers/pipelines/cosmos/pipeline_cosmos3_omni.py

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* Apply suggestions from code review

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* fixed sound and vision conditioning use from prepare latents

* ruff format and doc builder

* ran fix copies

* move typing to python3.10

* move special token application from pack_text_tokens to tokenize_prompt

* rename packing methods to process methods

* remove guidance_scale check

* fix nits

* respect vae dtype in the pipeline

* use vae dtype for vae normalization stats

* skip CFG if guidance_scale is 1

* Remove unnecessary parameter

Signed-off-by: Maciej Bala <mbala@nvidia.com>

* fix CFG for sound

* bugfix for sound CFG

* ruff format

* Fix apply_chat_template return dict arg to return BatchEncoding

* added option to select attention processor

* docs: refresh Cosmos 3 pipeline intro

Replace the terse architectural lede with the launch-style positioning
(unified WFM for Physical AI, consolidating Predict/Reason/Transfer
into one omni-model) and split out "What's new" and "Available
checkpoints" sections so the page leads with capability rather than
repo IDs.

* docs: document Cosmos3OmniPipeline.__call__ arguments

Add the missing Args block to Cosmos3OmniPipeline.__call__ so
utils/check_forward_call_docstrings.py passes — covers all 21
parameters from prompt through enable_safety_check, plus a Returns
section describing the output dataclass.

* style: doc-builder reflow on Cosmos3OmniPipeline.__call__ docstring

---------

Signed-off-by: Maciej Bala <mbala@nvidia.com>
Co-authored-by: Yuliya Zhautouskaya <yzhautouskay@nvidia.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Maciej Bala <mbala@nvidia.com>
Co-authored-by: Dima Zhylko <dzhylko@nvidia.com>
Co-authored-by: YiYi Xu <yixu310@gmail.com>
2026-05-27 14:08:28 -10:00
Dev-X25874
387a47156e examples/dreambooth: fix missing weighting chunk when using prior preservation in Flux and SD3 LoRA training (#13743)
* examples/dreambooth: chunk weighting tensor alongside model_pred and target when using prior preservation (flux LoRA)

* examples/dreambooth: chunk weighting tensor alongside model_pred and target when using prior preservation (SD3 LoRA)

---------

Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
2026-05-18 16:21:13 +05:30
Dev-X25874
015da50b40 examples/dreambooth: fix LR scheduler step count for multi-GPU in train_dreambooth_lora_sd3.py (#13731)
Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
2026-05-13 14:34:31 +09:00
dependabot[bot]
a851ce1058 Bump diffusers from 0.20.1 to 0.38.0 in /examples/research_projects/realfill (#13692)
Bump diffusers in /examples/research_projects/realfill

Bumps [diffusers](https://github.com/huggingface/diffusers) from 0.20.1 to 0.38.0.
- [Release notes](https://github.com/huggingface/diffusers/releases)
- [Commits](https://github.com/huggingface/diffusers/compare/v0.20.1...v0.38.0)

---
updated-dependencies:
- dependency-name: diffusers
  dependency-version: 0.38.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-08 10:27:14 +05:30
Ting-Yun Chang
4ca863323d Add LoRA support for Cosmos Predict 2.5 and fix pipeline to match official Cosmos repo (#13664)
* support lora for cosmos 2.5

* Fix inconsistencies with cosmos official repo in VAE encoding, text encoder attention implementation, and timestep scaling

* Support f_min and f_max in linear_scheduler warmup

* Add requirements and dataset preprocessing scripts to run examples

* Add LoRA training scripts

* Add LoRA eval scripts

* add assets for blogpost

* Fix(scheduler): device mismatch from upstream b114620 - move rk and b to device before torch.stack

* Always upcast to fp32

* Directly inhrit from LoraBaseMixin

* remove flash-attn2

* Use _keep_in_fp32_modules instead of autocast

* remove the get_latent_shape_cthw method and fix style

* simplifiy the eval script to make it more user-friendly

* overwrite scheduling_unipc_multistep.py with main's version

* remove network_alphas and add # Copied from

* remove figures and assets

* revert scheduler

* revert fp32 upcast and support bs > 1

---------

Co-authored-by: Ting-Yun Chang <tingyunc@nvidia.com>
2026-05-07 16:50:13 -10:00
Alexey Zolotenkov
dc55124e04 Fix BucketBatchSampler cache alignment in DreamBooth scripts (#13353)
* Fix bucket sampler cache alignment in DreamBooth scripts

* Shuffle precomputed DreamBooth bucket batches once

* Scope stable bucket ordering to cached DreamBooth batches

* Format DreamBooth bucket sampler updates

* Address bucket sampler cache variable naming review

---------

Co-authored-by: Linoy Tsaban <57615435+linoytsaban@users.noreply.github.com>
Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
2026-05-06 23:12:01 +09:00
Sayak Paul
edc37d0f29 post release 0.38.0 (#13670)
* post release 0.38.0

* Apply style fixes

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-06 09:24:18 +09:00
Sayak Paul
160852de68 add an example of spmd for flux on v5e-8 (#13474)
* add an example of spmd for flux on v5e-8

* Apply suggestions from code review

Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>

* add check
2026-04-17 14:41:37 +05:30
Alexey Zolotenkov
d30831683c Fix Flux2 DreamBooth prior preservation prompt repeats (#13415)
Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
2026-04-15 14:50:45 +05:30
Akash Santra
0d79fc2e60 fix(profiling): preserve instance isolation when decorating methods (#13471)
* fix(profiling): preserve instance isolation when decorating methods

* fix(profiling): scope instance isolation fix to LTX2 pipelines
2026-04-15 07:46:20 +05:30
Sayak Paul
e4d219b366 [tests] fix training tests (#13442)
* fix textual inversion

* fix rest
2026-04-15 06:56:29 +05:30
Alexey Zolotenkov
526498d219 Fix Qwen Image DreamBooth prior-preservation batch ordering (#13441)
Fix Qwen Image DreamBooth prior-preservation batching

Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
2026-04-14 18:00:37 +05:30
Chenyang Zhu
b80d3f6872 fix(qwen-image dreambooth): correct prompt embed repeats when using --with_prior_preservation (#13396)
fix(qwen): correct prompt embed repeats with prior preservation

Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
2026-04-10 10:17:06 +05:30
Chenyang Zhu
acc07f5cda Handle prompt embedding concat in Qwen dreambooth example (#13387)
* Handle prompt embedding concat in Qwen dreambooth example

* remove wandb config

* Apply style fixes

* add a comment on how this is only relevant during prior preservation.

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
2026-04-10 09:13:32 +05:30
Alexey Zolotenkov
d31061b2ac Fix VAE offload encode device mismatch in DreamBooth scripts (#13417)
Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
2026-04-06 16:53:06 +02:00
Sayak Paul
fbe8a75ad5 Update README.md of the profiling guide (#13400)
Update README.md
2026-04-03 18:54:27 +02:00
Sayak Paul
b114620d85 Add examples on how to profile a pipeline (#13356)
* add a profiling worflow.

* fix

* fix

* more clarification

* add points.

* up

* cache hooks

* improve readme.

* propagate deletion.

* up

* up

* wan fixes.

* more

* up

* add more traces.

* up

* better title

* cuda graphs.

* up

* Apply suggestions from code review

Co-authored-by: Steven Liu <59462357+stevhliu@users.noreply.github.com>

* add torch.compile link.

* approach -> How the tooling works

* table

* unavoidable gaps.

* make important

* note on regional compilation

* Apply suggestions from code review

Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>

* make regional compilation note clearer.

* Apply suggestions from code review

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* clarify scheduler related changes.

* Apply suggestions from code review

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* Update examples/profiling/README.md

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* up

* formatting

* benchmarking runtime

* up

* up

* up

* up

* Update examples/profiling/README.md

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

---------

Co-authored-by: Steven Liu <59462357+stevhliu@users.noreply.github.com>
Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>
2026-04-03 16:13:01 +02:00
tcaimm
7f2b34bced Add train flux2 series lora config (#13011)
* feat(lora): support FLUX.2 single blocks + update README

* add img2img config & add explanatory comments

* simple modify

---------

Co-authored-by: Linoy Tsaban <57615435+linoytsaban@users.noreply.github.com>
2026-03-30 14:22:04 +03:00
kaixuanliu
41e1003316 avoid hardcode device in flux-control example (#13336)
Signed-off-by: Liu, Kaixuan <kaixuan.liu@intel.com>
2026-03-26 12:40:53 +05:30
Kashif Rasul
5d207e756e [Discrete Diffusion] Add LLaDA2 pipeline (#13226)
* feat: add LLaDA2 and BlockRefinement pipelines for discrete text diffusion

Add support for LLaDA2/LLaDA2.1 discrete diffusion text generation:
- BlockRefinementPipeline: block-wise iterative refinement with confidence-based
  token commitment, supporting editing threshold for LLaDA2.1 models
- LLaDA2Pipeline: convenience wrapper with LLaDA2-specific defaults
- DiscreteDiffusionPipelineMixin: shared SAR sampling utilities (top-k, top-p,
  temperature) and prompt/prefix helpers
- compute_confidence_aware_loss: CAP-style training loss
- Examples: sampling scripts for LLaDA2 and block refinement, training scripts
  with Qwen causal LM
- Docs and tests included

* feat: add BlockRefinementScheduler for commit-by-confidence scheduling

Extract the confidence-based token commit logic from BlockRefinementPipeline
into a dedicated BlockRefinementScheduler, following diffusers conventions.

The scheduler owns:
- Transfer schedule computation (get_num_transfer_tokens)
- Timestep management (set_timesteps)
- Step logic: confidence-based mask-filling and optional token editing

The pipeline now delegates scheduling to self.scheduler.step() and accepts
a scheduler parameter in __init__.

* test: add unit tests for BlockRefinementScheduler

12 tests covering set_timesteps, get_num_transfer_tokens, step logic
(confidence-based commits, threshold behavior, editing, prompt masking,
batched inputs, tuple output).

* docs: add toctree entries and standalone scheduler doc page

- Add BlockRefinement and LLaDA2 to docs sidebar navigation
- Add BlockRefinementScheduler to schedulers sidebar navigation
- Move scheduler autodoc to its own page under api/schedulers/

* feat: add --revision flag and fix dtype deprecation in sample_llada2.py

- Add --revision argument for loading model revisions from the Hub
- Replace deprecated torch_dtype with dtype for transformers 5.x compat

* fix: use 1/0 attention mask instead of 0/-inf for LLaDA2 compat

LLaDA2 models expect a boolean-style (1/0) attention mask, not an
additive (0/-inf) mask. The model internally converts to additive,
so passing 0/-inf caused double-masking and gibberish output.

* refactor: consolidate training scripts into single train_block_refinement.py

- Remove toy train_block_refinement_cap.py (self-contained demo with tiny model)
- Rename train_block_refinement_qwen_cap.py to train_block_refinement.py
  (already works with any causal LM via AutoModelForCausalLM)
- Fix torch_dtype deprecation and update README with correct script names

* fix formatting

* docs: improve LLaDA2 and BlockRefinement documentation

- Add usage examples with real model IDs and working code
- Add recommended parameters table for LLaDA2.1 quality/speed modes
- Note that editing is LLaDA2.1-only (not for LLaDA2.0 models)
- Remove misleading config defaults section from BlockRefinement docs

* feat: set LLaDA2Pipeline defaults to recommended model parameters

- threshold: 0.95 -> 0.7 (quality mode)
- max_post_steps: 0 -> 16 (recommended for LLaDA2.1, harmless for 2.0)
- eos_early_stop: False -> True (stop at EOS token)

block_length=32, steps=32, temperature=0.0 were already correct.
editing_threshold remains None (users enable for LLaDA2.1 models).

* feat: default editing_threshold=0.5 for LLaDA2.1 quality mode

LLaDA2.1 is the current generation. Users with LLaDA2.0 models can
disable editing by passing editing_threshold=None.

* fix: align sampling utilities with official LLaDA2 implementation

- top_p filtering: add shift-right to preserve at least one token above
  threshold (matches official code line 1210)
- temperature ordering: apply scaling before top-k/top-p filtering so
  filtering operates on scaled logits (matches official code lines 1232-1235)
- greedy branch: return argmax directly when temperature=0 without
  filtering (matches official code lines 1226-1230)

* refactor: remove duplicate prompt encoding, reuse mixin's _prepare_input_ids

LLaDA2Pipeline._prepare_prompt_ids was a near-copy of
DiscreteDiffusionPipelineMixin._prepare_input_ids. Remove the duplicate
and call the mixin method directly. Also simplify _extract_input_ids
since we always pass return_dict=True.

* formatting

* fix: replace deprecated torch_dtype with dtype in examples and docstrings

- Update EXAMPLE_DOC_STRING to use dtype= and LLaDA2.1-mini model ID
- Fix sample_block_refinement.py to use dtype=

* remove BlockRefinementPipeline

* cleanup

* fix readme

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* removed DiscreteDiffusionPipelineMixin

* add support for 2d masks for flash attn

* Update src/diffusers/training_utils.py

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* Update src/diffusers/training_utils.py

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* fix issues from review

* added tests

* formatting

* add check_eos_finished to scheduler

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* Update src/diffusers/schedulers/scheduling_block_refinement.py

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* Update src/diffusers/schedulers/scheduling_block_refinement.py

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* fix renaming issues and types

* remove duplicate check

* Update docs/source/en/api/pipelines/llada2.md

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* Update src/diffusers/pipelines/llada2/pipeline_llada2.py

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

---------

Co-authored-by: YiYi Xu <yixu310@gmail.com>
Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>
2026-03-25 16:17:50 +05:30
Sayak Paul
e1b5db52bd post release 0.37.0 (#13215)
* post release 0.37.0

* style
2026-03-07 11:03:47 +05:30
tcaimm
e747fe4a94 Fix wrapped transformer config access in Flux2 Klein training (#13219) 2026-03-06 19:47:51 +05:30
Ando
8ec0a5ccad feat: implement rae autoencoder. (#13046)
* feat: implement three RAE encoders(dinov2, siglip2, mae)

* feat: finish first version of autoencoder_rae

* fix formatting

* make fix-copies

* initial doc

* fix latent_mean / latent_var init types to accept config-friendly inputs

* use mean and std convention

* cleanup

* add rae to diffusers script

* use imports

* use attention

* remove unneeded class

* example traiing script

* input and ground truth sizes have to be the same

* fix argument

* move loss to training script

* cleanup

* simplify mixins

* fix training script

* fix entrypoint for instantiating the AutoencoderRAE

* added encoder_image_size config

* undo last change

* fixes from pretrained weights

* cleanups

* address reviews

* fix train script to use pretrained

* fix conversion script review

* latebt normalization buffers are now always registered with no-op defaults

* Update examples/research_projects/autoencoder_rae/README.md

Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>

* Update src/diffusers/models/autoencoders/autoencoder_rae.py

Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>

* use image url

* Encoder is frozen

* fix slow test

* remove config

* use ModelTesterMixin and AutoencoderTesterMixin

* make quality

* strip final layernorm when converting

* _strip_final_layernorm_affine for training script

* fix test

* add dispatch forward and update conversion script

* update training script

* error out as soon as possible and add comments

* Update src/diffusers/models/autoencoders/autoencoder_rae.py

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* use buffer

* inline

* Update src/diffusers/models/autoencoders/autoencoder_rae.py

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* remove optional

* _noising takes a generator

* Update src/diffusers/models/autoencoders/autoencoder_rae.py

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* fix api

* rename

* remove unittest

* use randn_tensor

* fix device map on multigpu

* check if the key is missing in the original state dict and only then add to the allow_missing set

* remove initialize_weights

---------

Co-authored-by: wangyuqi <wangyuqi@MBP-FJDQNJTWYN-0208.local>
Co-authored-by: Kashif Rasul <kashif.rasul@gmail.com>
Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>
2026-03-05 20:17:14 +05:30
jiqing-feng
88798242bc cogvideo example: Distribute VAE video encoding across processes in CogVideoX LoRA training (#13207)
* Distribute VAE video encoding across processes in CogVideoX LoRA training

Signed-off-by: jiqing-feng <jiqing.feng@intel.com>

* Apply style fixes

---------

Signed-off-by: jiqing-feng <jiqing.feng@intel.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-04 15:09:01 +05:30
Sayak Paul
5e94d62eb4 migrate to transformers v5 (#12976)
* switch to transformers main again./

* more

* up

* up

* fix group offloading.

* attributes

* up

* up

* tie embedding issue.

* fix t5 stuff for more.

* matrix configuration to see differences between 4.57.3 and main failures.

* change qwen expected slice because of how init is handled in v5.

* same stuff.

* up

* up

* Revert "up"

This reverts commit 515dd06db5.

* Revert "up"

This reverts commit 5274ffdd7f.

* up

* up

* fix with peft_format.

* just keep main for easier debugging.

* remove torchvision.

* empty

* up

* up with skyreelsv2 fixes.

* fix skyreels type annotation.

* up

* up

* fix variant loading issues.

* more fixes.

* fix dduf

* fix

* fix

* fix

* more fixes

* fixes

* up

* up

* fix dduf test

* up

* more

* update

* hopefully ,final?

* one last breath

* always install from main

* up

* audioldm tests

* up

* fix PRX tests.

* up

* kandinsky fixes

* qwen fixes.

* prx

* hidream
2026-02-24 10:53:56 +05:30
Sayak Paul
2843b3d37a Sunset Python 3.8 & get rid of explicit typing exports where possible (#12524)
* drop python 3.8

* remove list, tuple, dict from typing

* fold Unions into |

* up

* fix a bunch and please me.

* up

* up

* up

* up

* up

* up

* enforce 3.10.0.

* up

* up

* up

* up

* up

* up

* up

* up

* Update setup.py

Co-authored-by: Dhruv Nair <dhruv.nair@gmail.com>

* up.

* python 3.10.

* ifx

* up

* up

* up

* up

* final

* up

* fix typing utils.

* up

* up

* up

* up

* up

* up

* fix

* up

* up

* up

* up

* up

* up

* handle modern types.

* up

* up

* fix ip adapter type checking.

* up

* up

* up

* up

* up

* up

* up

* revert docstring changes.

* keep deleted files deleted.

* keep deleted files deleted.

---------

Co-authored-by: Dhruv Nair <dhruv.nair@gmail.com>
2026-02-13 18:16:51 +05:30
Linoy Tsaban
8933686770 Z image lora training (#13056)
* initial commit

* initial commit

* initial commit

* initial commit

* initial commit

* initial commit

* initial commit

* fix vae

* fix prompts

* Apply style fixes

* fix license

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-09 15:45:59 +02:00
Sayak Paul
ef913010d4 [QwenImage] fix prompt isolation tests (#13042)
* up

* up

* up

* fix
2026-01-28 15:44:12 +05:30
YiYi Xu
61f175660a Flux2 klein (#12982)
* flux2-klein

* Apply suggestions from code review

Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>

* Klein tests (#2)

* tests

* up

* tests

* up

* support step-distilled

* Apply suggestions from code review

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>

* doc string etc

* style

* more

* copies

* klein lora training scripts (#3)

* initial commit

* initial commit

* remove remote text encoder

* initial commit

* initial commit

* initial commit

* revert

* img2img fix

* text encoder + tokenizer

* text encoder + tokenizer

* update readme

* guidance

* guidance

* guidance

* test

* test

* revert changes not needed for the non klein model

* Update examples/dreambooth/train_dreambooth_lora_flux2_klein.py

Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>

* fix guidance

* fix validation

* fix validation

* fix validation

* fix path

* space

---------

Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>

* style

* Update src/diffusers/pipelines/flux2/pipeline_flux2_klein.py

* Apply style fixes

* auto pipeline

---------

Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
Co-authored-by: dg845 <58458699+dg845@users.noreply.github.com>
Co-authored-by: Linoy Tsaban <57615435+linoytsaban@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-15 09:10:54 -10:00
Leo Jiang
29a930a142 Bugfix for flux2 img2img2 prediction (#12855)
* Bugfix for dreambooth flux2 img2img2

* Bugfix for dreambooth flux2 img2img2

* Bugfix for dreambooth flux2 img2img2

* Bugfix for dreambooth flux2 img2img2

* Bugfix for dreambooth flux2 img2img2

* Bugfix for dreambooth flux2 img2img2

Co-authored-by: tcaimm <93749364+tcaimm@users.noreply.github.com>

---------

Co-authored-by: tcaimm <93749364+tcaimm@users.noreply.github.com>
2026-01-12 20:07:02 +05:30
Kashif Rasul
dad5cb55e6 Fix QwenImage txt_seq_lens handling (#12702)
* Fix QwenImage txt_seq_lens handling

* formatting

* formatting

* remove txt_seq_lens and use bool  mask

* use compute_text_seq_len_from_mask

* add seq_lens to dispatch_attention_fn

* use joint_seq_lens

* remove unused index_block

* WIP: Remove seq_lens parameter and use mask-based approach

- Remove seq_lens parameter from dispatch_attention_fn
- Update varlen backends to extract seqlens from masks
- Update QwenImage to pass 2D joint_attention_mask
- Fix native backend to handle 2D boolean masks
- Fix sage_varlen seqlens_q to match seqlens_k for self-attention

Note: sage_varlen still producing black images, needs further investigation

* fix formatting

* undo sage changes

* xformers support

* hub fix

* fix torch compile issues

* fix tests

* use _prepare_attn_mask_native

* proper deprecation notice

* add deprecate to txt_seq_lens

* Update src/diffusers/models/transformers/transformer_qwenimage.py

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* Update src/diffusers/models/transformers/transformer_qwenimage.py

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* Only create the mask if there's actual padding

* fix order of docstrings

* Adds performance benchmarks and optimization details for QwenImage

Enhances documentation with comprehensive performance insights for QwenImage pipeline:

* rope_text_seq_len = text_seq_len

* rename to max_txt_seq_len

* removed deprecated args

* undo unrelated change

* Updates QwenImage performance documentation

Removes detailed attention backend benchmarks and simplifies torch.compile performance description

Focuses on key performance improvement with torch.compile, highlighting the specific speedup from 4.70s to 1.93s on an A100 GPU

Streamlines the documentation to provide more concise and actionable performance insights

* Updates deprecation warnings for txt_seq_lens parameter

Extends deprecation timeline for txt_seq_lens from version 0.37.0 to 0.39.0 across multiple Qwen image-related models

Adds a new unit test to verify the deprecation warning behavior for the txt_seq_lens parameter

* fix compile

* formatting

* fix compile tests

* rename helper

* remove duplicate

* smaller values

* removed

* use torch.cond for torch compile

* Construct joint attention mask once

* test different backends

* construct joint attention mask once to avoid reconstructing in every block

* Update src/diffusers/models/attention_dispatch.py

Co-authored-by: YiYi Xu <yixu310@gmail.com>

* formatting

* raising an error from the EditPlus pipeline when batch_size > 1

---------

Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
Co-authored-by: YiYi Xu <yixu310@gmail.com>
Co-authored-by: cdutr <dutra_carlos@hotmail.com>
2026-01-12 13:45:09 +05:30
omahs
5b202111bf Fix typos (#12705) 2026-01-10 11:11:15 -08:00
Sayak Paul
d44b5f86e6 fix how is_fsdp is determined (#12960)
up
2026-01-10 10:34:25 +05:30
Linoy Tsaban
b7a81582ae [LoRA] add lora_alpha to sana README (#11780)
add lora alpha to readme
2026-01-09 11:28:39 -10:00
Kashif Rasul
2bb640f8ea [Research] Latent Perceptual Loss (LPL) for Stable Diffusion XL (#11573)
* initial

* added readme

* fix formatting

* added logging

* formatting

* use config

* debug

* better

* handle SNR

* floats have no item()

* remove debug

* formatting

* add paper link

* acknowledge reference source

* rename script

---------

Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
2026-01-09 10:24:21 -10:00
Fredy Rivera
2dc9d2af50 Add thread-safe wrappers for components in pipeline (examples/server-async/utils/requestscopedpipeline.py) (#12515)
* Basic implementation of request scheduling

* Basic editing in SD and Flux Pipelines

* Small Fix

* Fix

* Update for more pipelines

* Add examples/server-async

* Add examples/server-async

* Updated RequestScopedPipeline to handle a single tokenizer lock to avoid race conditions

* Fix

* Fix _TokenizerLockWrapper

* Fix _TokenizerLockWrapper

* Delete _TokenizerLockWrapper

* Fix tokenizer

* Update examples/server-async

* Fix server-async

* Optimizations in examples/server-async

* We keep the implementation simple in examples/server-async

* Update examples/server-async/README.md

* Update examples/server-async/README.md for changes to tokenizer locks and backward-compatible retrieve_timesteps

* The changes to the diffusers core have been undone and all logic is being moved to exmaples/server-async

* Update examples/server-async/utils/*

* Fix BaseAsyncScheduler

* Rollback in the core of the diffusers

* Update examples/server-async/README.md

* Complete rollback of diffusers core files

* Simple implementation of an asynchronous server compatible with SD3-3.5 and Flux Pipelines

* Update examples/server-async/README.md

* Fixed import errors in 'examples/server-async/serverasync.py'

* Flux Pipeline Discard

* Update examples/server-async/README.md

* Apply style fixes

* Add thread-safe wrappers for components in pipeline

Refactor requestscopedpipeline.py to add thread-safe wrappers for tokenizer, VAE, and image processor. Introduce locking mechanisms to ensure thread safety during concurrent access.

* Add wrappers.py

* Apply style fixes

---------

Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-09 09:43:14 -10:00
Teriks
57e57cfae0 Store vae.config.scaling_factor to prevent missing attr reference (sdxl advanced dreambooth training script) (#12346)
Store vae.config.scaling_factor to prevent missing attr reference

In sdxl advanced dreambooth training script

vae.config.scaling_factor becomes inaccessible after: del vae

when: --cache_latents, and no --validation_prompt

Co-authored-by: Teriks <Teriks@users.noreply.github.com>
Co-authored-by: Linoy Tsaban <57615435+linoytsaban@users.noreply.github.com>
Co-authored-by: YiYi Xu <yixu310@gmail.com>
2026-01-09 09:42:30 -10:00
Leo Jiang
08f8b7af9a Bugfix for dreambooth flux2 img2img2 (#12825)
Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
Co-authored-by: Linoy Tsaban <57615435+linoytsaban@users.noreply.github.com>
2026-01-09 12:34:44 +05:30
Leo Jiang
b4be29bda2 Add FSDP option for Flux2 (#12860)
* Add FSDP option for Flux2

* Apply style fixes

* Add FSDP option for Flux2

* Add FSDP option for Flux2

* Add FSDP option for Flux2

* Add FSDP option for Flux2

* Add FSDP option for Flux2

* Update examples/dreambooth/README_flux2.md

* guard accelerate import.

---------

Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-07 13:17:46 +05:30