Skip to content

feat(flux): diffusion + Flux pretrain trainers#819

Draft
jasainio wants to merge 13 commits into
feat/flux/fluxfrom
feat/flux/trainers
Draft

feat(flux): diffusion + Flux pretrain trainers#819
jasainio wants to merge 13 commits into
feat/flux/fluxfrom
feat/flux/trainers

Conversation

@jasainio

Copy link
Copy Markdown
Contributor

Part of an 18-PR series splitting the Flux diffusion-training feature (training Flux, a DiT text-to-image diffusion model, on Primus/Megatron) out of one large branch for reviewability. Targets feat/flux/flux and also merges feat/flux/trainprim, feat/flux/fp8, feat/flux/data — review after all four.

What this changes

The trainers that tie the feature together: the generic diffusion trainer, the Flux pretrain trainer, and the validation-metric evaluator.

Why it has several parents

The diffusion trainer lazily imports the data providers (feat/flux/data) and pulls in training primitives (feat/flux/trainprim) and fp8 (feat/flux/fp8); without the data parent its own tests fail with ModuleNotFoundError: primus.backends.megatron.data.

Dependencies

Sequenced after the CI-pins PR (feat/flux/ci-env); its tests exercise no mxfp4/compile path and pass on the current CI pin (no turbo-bump dependency). Builds on feat/flux/flux + feat/flux/trainprim + feat/flux/fp8 + feat/flux/data.

Test plan

pytest tests/unit_tests/backends/megatron/diffusion/training tests/unit_tests/backends/megatron/test_chimera_rng_restore.py. Validated locally on an AMD GPU container: 41 passed.

Files

11 (diffusion trainer, Flux pretrain trainer, evaluator + tests).

Flux Split and others added 13 commits June 28, 2026 02:06
… on draft PRs

Bump PRIMUS_TURBO_COMMIT to Primus-Turbo main (0.3.x, validated build) which
exposes the mxfp4 gemm_fp4_impl(..., preshuffled=...) fast path, and
PRIMUS_TURBO_AITER_COMMIT to AITER v0.1.14.post1. Mirror the turbo commit into
benchmark.yaml; the docker build receives both via ci.yaml build-args.

Add a draft-skip guard to the expensive jobs (build-docker, run-unittest-torch,
run-unittest-jax) so the stacked Flux PRs can sit in Draft without firing the
full pipeline; code-lint stays ungated. Add ready_for_review to the
pull_request trigger types so flipping a draft to Ready triggers the first run.

MEGATRON_PATH export intentionally omitted: the Flux diffusion unit tests run
in-process (no megatron-importing subprocess remains after the te_vs_local
in-process conversion), and tests/conftest.py auto-adds
third_party/Megatron-LM to sys.path when MEGATRON_PATH is unset. CI already
checks out submodules: recursive, so megatron imports without any extra env.
@zirui zirui self-requested a review July 7, 2026 13:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant