Files
hao-ai-lab-FastVideo/examples/train
leffffandClaude Sonnet 5 2dbb0c94a9 [feat] Add Kandinsky5 QAD training pipeline: data preprocessing, QAT finetune, QAT-aware DMD distillation
Adds the training-side counterpart to the existing Kandinsky-5 T2V/I2V
inference pipeline (#1471): a full quantization-aware distillation (QAD)
recipe for Kandinsky-5.0 Lite T2V at 512x768/121 frames on the new
fastvideo/train/ stack.

- Data preprocessing: preprocess_kandinsky5_overfit.py encodes raw
  video + captions (Kandinsky5's shared HunyuanVideo VAE + dual
  Qwen/Reason1 + CLIP text encoders) into the t2v parquet schema.
- Stage 1 (Attn-QAT finetune): fastvideo.train.models.kandinsky5.Kandinsky5Model
  wires Kandinsky5 into the modular trainer; FASTVIDEO_ATTENTION_BACKEND=
  ATTN_QAT_TRAIN routes dense/local attention through a fake-quantized
  straight-through-estimator kernel during finetuning so the DiT learns
  to absorb quantization error. No weight quantization during training.
- Stage 2 (QAT-aware DMD2 distillation): Kandinsky5DmdDenoisingStage +
  Kandinsky5DMDPipeline distill the stage-1 checkpoint from many-step
  teacher sampling down to a 4-step student, with teacher/critic masked
  back to full-precision dense attention regardless of the student's
  QAT env var (component_loader.py's _loading_teacher_critic_model gate).

See examples/train/configs/fine_tuning/kandinsky5/README.md for the full
data -> stage-1 -> stage-2 -> inference (NVFP4/FP8) walkthrough.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-26 02:29:52 -07:00
..
2026-07-19 18:37:47 -07:00
2026-07-19 18:37:47 -07:00

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.