Skip to content

fix(diffusion): resolve flux nightly CI failures - #2529

Merged
akoumpa merged 1 commit into
mainfrom
pranav/diffusion_ci_fixes
Jun 15, 2026
Merged

fix(diffusion): resolve flux nightly CI failures#2529
akoumpa merged 1 commit into
mainfrom
pranav/diffusion_ci_fixes

Conversation

@pthombre

Copy link
Copy Markdown
Contributor

What does this PR do ?

Fixes two startup failures in the diffusion nightly functional tests (flux_t2i_flow_lora and flux_t2i_flow).

Changelog

  • tests/ci_tests/scripts/diffusion_finetune_launcher.sh: the launcher unconditionally passed --fsdp.dp_size to every recipe. Since perf(diffusion): improve Flux training throughput #2251 switched the Flux LoRA config to a ddp: section, that CLI override injected a conflicting fsdp section and the recipe raised ValueError: Cannot specify both 'fsdp' and 'ddp' configurations. The launcher now greps the recipe YAML for a top-level ddp: section and skips the override for DDP-based recipes (DDP replicates across all ranks and needs no dp_size). This also pre-empts the same failure for qwen_image_t2i_flow_lora if it is added to the nightly list.
  • nemo_automodel/recipes/diffusion/train.py: _build_diffusion_parallel_manager_args (introduced in feat: make mesh accept meshcontext #2266) called dict() on the fsdp/ddp config sections, but the recipe passes ConfigNode objects which support .to_dict() but not dict() conversion, crashing flux_t2i_flow with TypeError: 'ConfigNode' object is not iterable. The sections are now normalized via .to_dict() at the top of the function, fixing both the FSDP branch and the identical latent bug in the DDP branch.
  • tests/unit_tests/recipes/test_diffusion_train_metrics.py: added unit tests that pass ConfigNode sections to _build_diffusion_parallel_manager_args the way the recipe does (the existing tests only covered plain dicts, which is why the regression slipped through to the nightly).

Before your PR is "Ready for review"

Pre checks:

  • Make sure you read and followed Contributor guidelines
  • Did you write any new necessary tests?
  • Did you add or update any necessary documentation?

Additional Information

  • Failing nightly jobs: flux_t2i_flow_lora (Slurm job 5422723) and flux_t2i_flow (Slurm job 5422718) on pipeline 54319513.

🤖 Generated with Claude Code

Two startup failures in the diffusion nightly functional tests:

- flux_t2i_flow_lora: the CI launcher unconditionally passed
  --fsdp.dp_size, which injects an 'fsdp' section and conflicts with
  the recipe's 'ddp' section (mutual-exclusion ValueError). The
  launcher now skips the override for DDP-based recipes.
- flux_t2i_flow: _build_diffusion_parallel_manager_args called
  dict() on ConfigNode sections, which are not iterable. Normalize
  fsdp/ddp sections via to_dict() before use; this also fixes the
  identical latent bug in the DDP branch.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Pranav Prashant Thombre <pthombre@nvidia.com>
@pthombre
pthombre requested review from a team as code owners June 11, 2026 20:45
@copy-pr-bot

copy-pr-bot Bot commented Jun 11, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@pthombre

Copy link
Copy Markdown
Contributor Author

/ok to test 084840c

@akoumpa
akoumpa merged commit f720eb8 into main Jun 15, 2026
77 checks passed
@akoumpa
akoumpa deleted the pranav/diffusion_ci_fixes branch June 15, 2026 17:33
akoumpa pushed a commit that referenced this pull request Jun 15, 2026
…0.5.0` (#2567)

fix(diffusion): resolve flux nightly CI failures (#2529)

Two startup failures in the diffusion nightly functional tests:

- flux_t2i_flow_lora: the CI launcher unconditionally passed
  --fsdp.dp_size, which injects an 'fsdp' section and conflicts with
  the recipe's 'ddp' section (mutual-exclusion ValueError). The
  launcher now skips the override for DDP-based recipes.
- flux_t2i_flow: _build_diffusion_parallel_manager_args called
  dict() on ConfigNode sections, which are not iterable. Normalize
  fsdp/ddp sections via to_dict() before use; this also fixes the
  identical latent bug in the DDP branch.

Signed-off-by: Pranav Prashant Thombre <pthombre@nvidia.com>
Signed-off-by: NeMo Bot <nemo-bot@nvidia.com>
Co-authored-by: Pranav Thombre <pthombre@nvidia.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Simar-malhotra09 pushed a commit to Simar-malhotra09/Automodel that referenced this pull request Jun 16, 2026
Two startup failures in the diffusion nightly functional tests:

- flux_t2i_flow_lora: the CI launcher unconditionally passed
  --fsdp.dp_size, which injects an 'fsdp' section and conflicts with
  the recipe's 'ddp' section (mutual-exclusion ValueError). The
  launcher now skips the override for DDP-based recipes.
- flux_t2i_flow: _build_diffusion_parallel_manager_args called
  dict() on ConfigNode sections, which are not iterable. Normalize
  fsdp/ddp sections via to_dict() before use; this also fixes the
  identical latent bug in the DDP branch.

Signed-off-by: Pranav Prashant Thombre <pthombre@nvidia.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

r0.5.0 Auto-cherrypick to release branch. Apply before merge; cherrypick happens after merge.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants