1. Model introduction
LTX-2 is Lightricks’ audio-video DiT. LTX-2.3 is the variant miles-diffusion trains, and the framework’s most unusual family: the only one that does not go through diffusers, the only one trained unguided, and the only one on the CPS SDE kernel. Key highlights for RL training:- Native model package, not diffusers.
miles/backends/fsdp_utils/models/ltx/supplies loading, modeling, attention, and the FSDP plan directly againstltx_core; FSDP wrapsBasicAVTransformerBlock. Requiresltx-core(pinned inrequirements.txt, baked into the Docker image). - Unguided training.
supports_cfg_training = False: any--diffusion-guidance-scaleother than1.0, or a--diffusion-negative-prompt, is a parse-time error. The training forward is a single velocity pass — there is no negative branch to combine. - Video branch only. The audio stream is loaded but never trained
(
optimizer_state_allowed_missing = ["audio"]), and--rollout-patch-group ltxdisables audio-video cross-attention on the engine to match. - No sequence parallelism.
sequence_parallel_planraisesNotImplementedError; leave--sequence-parallel-sizeat1.
2. Supported variants
3. Family config
Registered inmiles/backends/fsdp_utils/configs/ltx.py:
4. Launch
Canonical recipe:scripts/run_diffusion_grpo_ltx23_sglang.py — a 5-GPU Ray node with 4 GPUs shared by FSDP and
rollout plus 1 separately scheduled PickScore GPU, 57 frames @ 24 fps, 512×768.
Status: 🛡️ FG — Fully gated
5. Recipe notes
- The step strategy is
epoch_global_random_choice: 3 SDE steps drawn once per epoch from candidates 0-9 and shared by every sample — with only 64 samples per rollout, per-request randomization would add variance the batch is too small to average out. - The clip range is
1e-5, an order of magnitude tighter than the image recipes’1e-4. --pickscore-num-frames 3scores three evenly-spaced frames per video; scoring all 57 would dominate rollout time for a reward signal that barely changes.- Health checks are relaxed (
--rollout-health-check-interval 120, router failure threshold 30): a 57-frame request takes minutes, and the image-recipe defaults would kill healthy engines mid-generation. --rollout-parser-num-workers 8: 57-frame trajectory tensors are large enough that one deserializer actor starves the engines.
6. Reference results
The original bf16-master 4-train-GPU + 1-reward-GPU run, used as the first LTX E2E reference, raisesrollout/reward/raw_mean from ~0.68 to ~0.77 over 200 rollouts:

train/model_output_mean_abs_diff 0.0 and switch
--fsdp-master-dtype to fp32.
7. Pairs well with
- Dtype Control — the boundary-dtype policy is why LTX has one.
- Deterministic Training —
sdpa_mathis the deterministic-safe backend this recipe relies on.

