SIGN IN SIGN UP

fix(ci): register flux2/wan2.2/qwen-image-edit diffusion recipes in CI (#3485)

* fix(ci): register flux2/wan2.2/qwen-image-edit recipes in diffusion CI

Recipe registration (diffusion_finetune_recipe_config.sh):
- flux2_t2i_flow* -> FLUX.2-dev, flux2 processor, image
- qwen_image_edit_2511_flow* -> Qwen-Image-Edit-2511, image-edit media type
  with the MagicBrush dataset documented for this recipe
- wan2_2_t2v_flow* -> Wan2.2-T2V-A14B, wan2.2 processor, video, with
  two-stage checkpoint flags for inference

Launcher (diffusion_finetune_launcher.sh):
- Add --lr_scheduler.lr_warmup_steps ${LR_WARMUP_STEPS:-10} override:
  OptimizerParamScheduler asserts lr_warmup_steps < lr_decay_steps and the
  CI max_steps=100 cap makes production warmup values (100-500) fail.
- Add image_edit media type: dataset resolved by the image-edit preprocess
  subcommand, and inference passes --inference.input_images with a source
  image materialized during preprocessing.
- Support CKPT_FLAG_OVERRIDE / GENERATE_EXTRA_ARGS so Wan2.2 inference uses
  --model.checkpoint_high_noise and keeps the low-noise stage at hub weights
  (--model.checkpoint is rejected by two-transformer pipelines).

Validated end-to-end on 8xGPU nodes with the nightly container
(data -> preprocess -> 100-step finetune -> inference smoke test):
flux_t2i_flow_lora PASS, qwen_image_edit_2511_flow PASS, wan2_2_t2v_flow
PASS. flux2 recipes validated through recipe routing only; full runs are
blocked on gated FLUX.2-dev HF access (infra: model must be added to the
CI HF cache).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Pranav Prashant Thombre <pthombre@nvidia.com>

* fix(diffusion): correct flux2 recipe checkpoint and batch settings

- flux2_t2i_flow.yaml: diffusers_compatible false -> true. With false, the
  consolidated checkpoint keeps the transformers index name
  (model.safetensors.index.json), which generate.py's diffusers
  from_pretrained cannot load (it expects
  diffusion_pytorch_model.safetensors[.index.json]). The paired
  generate_flux2.yaml flow was broken for any user following the recipe.
- flux2_t2i_flow_lora.yaml: global_batch_size 4 -> 8. The recipe declares
  fsdp.dp_size: 8 with local_batch_size 1, and 4 is not divisible by
  1 * 8, so training fails at StepScheduler validation on its own
  declared topology.

Both recipes validated end-to-end on 8xGPU (preprocess -> 100-step
finetune -> inference smoke test) with FLUX.2-dev: PASS.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Pranav Prashant Thombre <pthombre@nvidia.com>

---------

Signed-off-by: Pranav Prashant Thombre <pthombre@nvidia.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
P
Pranav Thombre committed
37cd4464b53d4a91fd4f3bbf5e18b820abd076b1
Parent: 1b00e3d
Committed by GitHub <noreply@github.com> on 8/11/2026, 12:49:29 PM