Resolve string pipeline.dit_config.quant_config values (e.g. nvfp4_qat_train) into registered QuantizationConfig instances during config parsing. The resolver lives in _parse_pipeline_config so it covers training, resume, and dcp_to_diffusers export (which rebuilds from checkpoint metadata and bypasses load_run_config). nvfp4_qat_train runs attention/FFN linear forwards through real NVFP4 GEMMs (flashinfer cutlass) with a straight-through-estimator backward into dense fp32 master weights; no extra params or buffers, so FSDP2 sharding, DCP checkpoints, and export are unchanged. Attention stays dense, matching LTX-2 NVFP4 deployment. Add an NVFP4 QAT overfit config, a QAT smoke test asserting the quant method attaches to all 1344 matched linears (GB200 grad-norm ref seeded), and an ltx2_nvfp4_qat nightly e2e case. Verified on 4x GB200: 300-step cat-sample overfit, ~2x dense step time, train loss -> 0.022, validation mean MS-SSIM vs the training clip 0.14 (step 0) -> 0.955 (step 300, nightly e2e PASSED; bf16 dense twin reaches 0.964).
Training
Quick Start
Single-node
bash examples/train/run.sh <config.yaml> [--dotted.key value ...]
The script auto-detects available GPUs. Override with NUM_GPUS:
NUM_GPUS=4 bash examples/train/run.sh \
examples/train/configs/fine_tuning/wan/t2v.yaml
Multi-node (Slurm)
bash examples/train/run_slurm.sh <config.yaml> <num_nodes> [--dotted.key value ...]
bash examples/train/run_slurm.sh \
examples/train/configs/fine_tuning/wan/t2v.yaml 4 \
--training.distributed.hsdp_shard_dim 8 \
--training.distributed.hsdp_replicate_dim 4
Slurm environment variables:
| Variable | Default | Description |
|---|---|---|
PARTITION |
main |
Slurm partition |
NUM_GPUS |
8 |
GPUs per node |
CPUS_PER_TASK |
128 |
CPUs per task |
MEM |
1440G |
Memory per node |
EXCLUDE |
"" |
Nodes to exclude |
Overriding config values
Any config field can be overridden from the command line using dotted keys:
bash examples/train/run.sh examples/train/configs/fine_tuning/wan/t2v.yaml \
--training.optimizer.learning_rate 1e-5 \
--training.loop.max_train_steps 1000 \
--training.checkpoint.output_dir outputs/my_experiment
Resuming from a checkpoint
bash examples/train/run.sh examples/train/configs/fine_tuning/wan/t2v.yaml \
--training.checkpoint.resume_from_checkpoint outputs/my_experiment/checkpoint-500
W&B Logging
Training metrics and validation videos are logged to Weights & Biases. Set your API key before launching:
export WANDB_API_KEY=your_key_here
To disable W&B (e.g. for local debugging):
export WANDB_MODE=offline
The project name and run name are set in the config under training.tracker:
training:
tracker:
project_name: my_project
run_name: my_run
Directory Layout
examples/train/
├── configs/ # Single-step training configs (by method and model)
├── scenario/ # Multi-step end-to-end training pipelines
├── run.sh # Single-node launcher
└── run_slurm.sh # Multi-node Slurm launcher
See configs/README.md and scenario/README.md for details.
The featured QAD Wan2.1 MixKit scenario runs Attn-QAT supervised fine-tuning, checkpoint export, and three-step DMD2. See the Attn-QAT training guide.