mirror of
https://github.com/radixark/miles.git
synced 2026-10-26 06:53:05 +08:00
389 lines
21 KiB
Markdown
389 lines
21 KiB
Markdown
---
|
||
title: CLI Reference
|
||
description: Every flag train_diffusion.py accepts, grouped by subsystem.
|
||
---
|
||
miles-diffusion is configured entirely through flags on `train_diffusion.py`, coming from three
|
||
places:
|
||
|
||
| Source | Where | Notes |
|
||
|---|---|---|
|
||
| Training-backend flags | `FSDPArgs` in `miles/backends/fsdp_utils/arguments.py` | Every dataclass field becomes `--field-name` automatically |
|
||
| miles flags | `miles/utils/arguments.py` | Added on top as an `extra_args_provider` |
|
||
| sglang-d passthrough | The rollout engine's own CLI | Re-registered with a `--sglang-` prefix; a short skip list covers what miles sets itself (`model_path`, ports, `base_gpu_id`, `random_seed`, …) |
|
||
|
||
`--custom-config-path <file.yaml>` loads YAML keys into the namespace after parsing. A key that
|
||
collides with an existing argument **overrides it** (with a logged warning) — the YAML wins over
|
||
the command line.
|
||
|
||
Reading the prefixes:
|
||
|
||
| Prefix | Marks |
|
||
|---|---|
|
||
| `diffusion-` | The modality — denoising, SDE, CFG, latents, frames. Generic ML/RL concepts (clipping, KL, EMA, LoRA, batching) do not take it |
|
||
| `fsdp-` | The training side — compare `--fsdp-flow-shift` (training-side sigma grid) with `--diffusion-flow-shift` (the engine's generation schedule) |
|
||
| `rollout-` / `sglang-` | The engine side |
|
||
|
||
The prefix does not tell you which argument group a flag lives in — groups follow concern, not
|
||
name. `python3 train_diffusion.py --help` is always the ground truth.
|
||
|
||
---
|
||
|
||
## Essentials
|
||
|
||
### The one required flag
|
||
|
||
| Flag | What |
|
||
|---|---|
|
||
| `--hf-checkpoint` | The diffusers pipeline to train, as an HF repo id or a local directory. |
|
||
|
||
One value serves three readers: training loads components and scheduler from it, the sglang-d
|
||
engine serves it, and the **model family** is matched from its name. Add
|
||
`--diffusion-model-family` when the name carries no family hint — which local weights usually
|
||
do not.
|
||
|
||
### Cluster topology
|
||
|
||
| Flag | Default | What |
|
||
|---|---|---|
|
||
| `--actor-num-nodes` | `1` | Nodes for the training actor. |
|
||
| `--actor-num-gpus-per-node` | `8` | GPUs per actor node. Train world size is the product. |
|
||
| `--rollout-num-gpus` | – | GPUs for rollout-side work. Forced to the train world size under `--colocate`. |
|
||
| `--rollout-num-gpus-per-engine` | `1` | GPUs per sglang-d engine (its TP × SP). |
|
||
| `--num-gpus-per-node` | `8` | Total GPUs the job may use per node. **Set this when using fewer than 8.** |
|
||
| `--colocate` | off | Required: CUDA IPC weight sync currently supports only colocated trainer and rollout execution. |
|
||
|
||
### Batch sizing
|
||
|
||
| Flag | Default | What |
|
||
|---|---|---|
|
||
| `--rollout-batch-size` | unset | Prompts per rollout. No default — every recipe sets it. |
|
||
| `--n-samples-per-prompt` | `1` | Samples per prompt (GRPO group size). |
|
||
| `--global-batch-size` | derived | **Samples** per optimizer step. Must divide by `dp_size`. |
|
||
| `--num-steps-per-rollout` | derived | Optimizer steps per rollout. |
|
||
| `--micro-batch-size` | `1` | **Train pairs** per DiT forward (flat cut). |
|
||
| `--micro-batch-size-sample` × `--micro-batch-size-tstep` | – | 2D tile per DiT forward. Set together; overrides `--micro-batch-size` with their product. |
|
||
| `--num-rollout` | from dataset | Total rollout iterations. |
|
||
| `--num-epoch` | – | Alternative to `--num-rollout`; ignored if both are set. |
|
||
|
||
To check how these batch-related arguments interact and related to each other — see
|
||
[the batch-knob invariant](/diffusion/user-guide/concepts#the-batch-knob-invariant).
|
||
|
||
### Diffusion sampling
|
||
|
||
| Flag | Default | What |
|
||
|---|---|---|
|
||
| `--diffusion-num-steps` | `10` | Denoising steps per rollout sample. |
|
||
| `--diffusion-num-sde-steps` | `0` | How many steps become train pairs. `0` disables. |
|
||
| `--diffusion-step-strategy-path` | – | Which steps. Overrides the bare count. |
|
||
| `--diffusion-noise-level` | `0.7` | SDE noise injected during rollout. |
|
||
| `--diffusion-guidance-scale` | `4.0` | CFG scale. |
|
||
| `--diffusion-height` / `--diffusion-width` | `512` | Output resolution. |
|
||
| `--diffusion-output-num-frames` | `1` | Frames — `1` for images. |
|
||
| `--rollout-microgroup-size` | `1` | Samples per prompt sent in one `POST /rollout/generate`. |
|
||
|
||
### Precision
|
||
|
||
| Flag | Default | What |
|
||
|---|---|---|
|
||
| `--diffusion-forward-dtype` | `bf16` | DiT forward compute — engine, FSDP `param_dtype`, and the training-side input cast. |
|
||
| `--fsdp-master-dtype` | `fp32` | Sharded master weights and optimizer state. |
|
||
| `--fsdp-reduce-dtype` | `fp32` | Gradient reduce-scatter. |
|
||
|
||
See [Dtype Control](/diffusion/advanced/dtype-control).
|
||
|
||
### Algorithm
|
||
|
||
| Flag | Default | What |
|
||
|---|---|---|
|
||
| `--loss-type` | `policy_loss` | `policy_loss` (Flow-GRPO), `nft`, `sft_loss`, `custom_loss`. |
|
||
| `--advantage-estimator` | `grpo` | Only `grpo` today. |
|
||
| `--diffusion-clip-range` | `1e-4` | PPO ratio clip. |
|
||
| `--diffusion-adv-clip-max` | `5.0` | Advantage clamp. |
|
||
| `--diffusion-kl-beta` | `0.0` | Reference-KL coefficient; `> 0` turns on a reference forward. |
|
||
| `--globalize-reward-std` | off | Batch-wide std instead of per-group. |
|
||
| `--globalize-reward-mean` | off | Batch-wide mean instead of per-prompt. |
|
||
|
||
---
|
||
|
||
## Complete reference
|
||
|
||
### Cluster
|
||
|
||
| Flag | Type | Default | Notes |
|
||
|---|---|---|---|
|
||
| `--actor-num-nodes` | int | `1` | |
|
||
| `--actor-num-gpus-per-node` | int | `8` | |
|
||
| `--rollout-num-gpus` | int | – | For train-only SFT, unset colocates encoders with training; set it to reserve dedicated encoder GPUs. |
|
||
| `--rollout-num-gpus-per-engine` | int | `1` | Like sglang's `tp_size`. |
|
||
| `--num-gpus-per-node` | int | `8` | |
|
||
| `--colocate` | flag | off | Required: CUDA IPC weight sync currently supports only colocated trainer and rollout execution. |
|
||
| `--offload` | flag | off | `--offload-train` + `--offload-rollout`. |
|
||
| `--offload-train` / `--no-offload-train` | tri-state | – | Always on under `--colocate`. |
|
||
| `--offload-rollout` / `--no-offload-rollout` | tri-state | – | Always on under `--colocate`. |
|
||
| `--distributed-backend` | str | `nccl` | |
|
||
| `--distributed-timeout-minutes` | int | `10` | |
|
||
|
||
### Training backend
|
||
|
||
| Flag | Type | Default | Notes |
|
||
|---|---|---|---|
|
||
| `--train-backend` | enum | `fsdp` | Only value. |
|
||
| `--fsdp-master-dtype` | enum | `fp32` | `fp32` / `bf16` / `fp16`. Load, shard, and optimizer-state precision. |
|
||
| `--fsdp-reduce-dtype` | enum | `fp32` | `bf16` matches flow_grpo's all-bf16 policy but adds cross-rank add-noise. |
|
||
| `--diffusion-forward-dtype` | enum | `bf16` | `bf16` / `fp16` / `fp32`. |
|
||
| `--fsdp-cpu-offload` | flag | off | Offloads params, grads, optimizer state; the optimizer then runs on CPU. |
|
||
| `--fsdp-cpu-backend` | str | `gloo` | CPU process group for the above. |
|
||
| `--dp-replicate-size` | int | `1` | Hybrid sharding: replica count. `dp_shard` takes the ranks left over from this and SP. |
|
||
| `--sequence-parallel-size` | int | `1` | USP = Ulysses × Ring. |
|
||
| `--ulysses-degree` | int | `0` | `0` = auto (Ulysses fills SP). Ring degree > 1 needs torch ≥ 2.11 and a ring-capable attention backend. |
|
||
| `--fsdp-attention-backend` | str | – | diffusers `set_attention_backend` value. |
|
||
| `--fsdp-flow-shift` | float | – | Training-side sigma grid shift, regenerated when no engine supplies scheduler meta (SFT). Distinct from `--diffusion-flow-shift`. |
|
||
| `--gradient-checkpointing` | flag | off | |
|
||
| `--deterministic-mode` | flag | off | See [Deterministic Training](/diffusion/advanced/deterministic). |
|
||
| `--train-env-vars` | JSON | `{}` | Extra env for the training processes. |
|
||
|
||
### Optimizer and schedule
|
||
|
||
| Flag | Type | Default | Notes |
|
||
|---|---|---|---|
|
||
| `--optimizer` | enum | `adam` | AdamW. Only value. |
|
||
| `--lr` | float | `1e-6` | |
|
||
| `--adam-beta1` / `--adam-beta2` | float | `0.9` / `0.999` | β₂ matches flow_grpo, not the LLM-side `0.95`. |
|
||
| `--adam-eps` | float | `1e-8` | |
|
||
| `--weight-decay` | float | `0.0` | |
|
||
| `--clip-grad` | float | `1.0` | |
|
||
| `--lr-decay-style` | enum | `constant` | |
|
||
| `--min-lr` / `--lr-warmup-init` | float | `0.0` | |
|
||
| `--lr-warmup-iters` | int | `0` | |
|
||
| `--lr-warmup-fraction` | float | – | |
|
||
| `--lr-decay-iters` | int | – | |
|
||
| `--lr-wsd-decay-iters` / `--lr-wsd-decay-style` | – | – | Warmup-stable-decay. |
|
||
| `--use-checkpoint-lr-scheduler` | flag | on | |
|
||
| `--override-lr-scheduler` | flag | off | |
|
||
| `--seed` | int | `1234` | |
|
||
|
||
### Rollout
|
||
|
||
| Flag | Type | Default | Notes |
|
||
|---|---|---|---|
|
||
| `--hf-checkpoint` | str | – | **Required.** Pipeline to train and to serve; also the family source. |
|
||
| `--diffusion-model-family` | str | – | Registered family key: `sd3`, `wan2_2`, `ltx`, `qwen_image`, `cosmos3`. Overrides name matching. |
|
||
| `--rollout-function-path` | str | `miles.rollout.sglang_rollout.generate_rollout` | Generic Miles default. Diffusion recipes explicitly set `miles.rollout.sglang_diffusion_rollout.generate_rollout`. |
|
||
| `--train-pipeline-config-path` | str | – | Your own `TrainPipelineConfig` for an unregistered family. Mutually exclusive with `--diffusion-model-family`. |
|
||
| `--model-backend-path` | str | – | Override the family's model loader. |
|
||
| `--diffusion-num-steps` | int | `10` | |
|
||
| `--diffusion-flow-shift` | float | – | Generation-schedule shift, sent to the engine. |
|
||
| `--rollout-microgroup-size` | int | `1` | |
|
||
| `--diffusion-fps` | float | – | Video only. |
|
||
| `--diffusion-output-num-frames` | int | `1` | |
|
||
| `--diffusion-guidance-scale` | float | `4.0` | |
|
||
| `--diffusion-guidance-scale-2` | float | – | Wan2.2 low-noise expert; **required** when training it. |
|
||
| `--diffusion-true-cfg-scale` | float | – | |
|
||
| `--diffusion-negative-prompt` | str | – | Defaults to `" "` on the engine when CFG is on. |
|
||
| `--diffusion-noise-level` | float | `0.7` | |
|
||
| `--diffusion-height` / `--diffusion-width` | int | `512` | Rollout output size; SFT center-crop size. |
|
||
| `--diffusion-sde-type` | enum | `sde` | `sde` / `cps` / `ode`. Selects the train-side SDE backend too. |
|
||
| `--sde-step-backend-path` | str | – | Custom dynamics. See [SDE backends](#sde-step-backends). |
|
||
| `--diffusion-num-sde-steps` | int | `0` | |
|
||
| `--diffusion-sde-window-range` | `"lo,hi"` | – | For `sde_window`. Defaults to `[0, num_inference_steps)`. |
|
||
| `--diffusion-sde-candidate-steps` | `"1,2,3"` | – | Required by `epoch_global_random_choice`. |
|
||
| `--diffusion-step-strategy-path` | str | – | Overrides the bare `--diffusion-num-sde-steps` selection. |
|
||
| `--diffusion-log-prob-no-const` | flag | off | Drop log-prob constants on the engine (pairs with the CPS backend). |
|
||
| `--diffusion-generator-device` | str | `cuda` | |
|
||
| `--rollout-patch-group` | str | – | Comma-separated numeric-parity patch groups, e.g. `sgld`, `ltx`. |
|
||
| `--update-weight-target-module` | str | `transformer` | Modules to train and sync. Wan2.2: `transformer,transformer_2`. |
|
||
| `--update-weight-buffer-size` | int | 512 MiB | Weight-sync chunk size in bytes. |
|
||
| `--rollout-seed` | int | `42` | |
|
||
| `--over-sampling-batch-size` | int | – | Must equal `--rollout-batch-size` today. |
|
||
| `--sglang-server-concurrency` | int | `512` | Per-engine in-flight request cap. |
|
||
| `--use-distributed-post` | flag | off | Rollout HTTP POSTs go through per-node Ray actors instead of the local client (`MILES_HTTP_POST_ACTORS_PER_NODE` sets the count). |
|
||
| `--use-miles-router` | flag | off | **Required** — the SGLang router is not supported here. |
|
||
| `--miles-router-timeout` | float | – | |
|
||
| `--miles-router-max-connections` | int | – | |
|
||
| `--miles-router-health-check-failure-threshold` | int | `3` | |
|
||
|
||
### Data and batching
|
||
|
||
| Flag | Type | Default | Notes |
|
||
|---|---|---|---|
|
||
| `--prompt-data` | str | – | jsonl, one row per prompt. |
|
||
| `--input-key` | str | `input` | |
|
||
| `--metadata-key` | str | `metadata` | |
|
||
| `--data-source-path` | str | – | Defaults to `RolloutDataSourceWithBuffer`. |
|
||
| `--disable-rollout-global-dataset` | flag | off | Manage data yourself. |
|
||
| `--rollout-batch-size` | int | – | |
|
||
| `--n-samples-per-prompt` | int | `1` | |
|
||
| `--global-batch-size` | int | derived | |
|
||
| `--num-steps-per-rollout` | int | derived | |
|
||
| `--micro-batch-size` | int | `1` | Flat: train-pair dicts per DiT forward, contiguous within an optimizer window. |
|
||
| `--micro-batch-size-sample` | int | – | 2D: samples per DiT-forward tile. |
|
||
| `--micro-batch-size-tstep` | int | – | 2D: SDE timesteps per tile. Set with the above. |
|
||
| `--diffusion-train-iter-order` | enum | `sample_major` | `sample_major` / `timestep_major`. Tile visit order; only meaningful with the 2D pair. |
|
||
| `--train-dp-split-mode` | enum | `contiguous` | `contiguous` lets a micro-batch reproduce a rollout microgroup exactly; `stride` deals round-robin. |
|
||
| `--num-rollout` | int | – | |
|
||
| `--num-epoch` | int | – | |
|
||
| `--start-rollout-id` | int | – | Resumed from `--load` when unset. |
|
||
| `--sft-encoder-checkpoint` | str | – | SFT only: tokenizer/text_encoder/vae source. |
|
||
| `--sft-frame-stride` | int | `1` | SFT encode temporal stride. |
|
||
|
||
### Evaluation
|
||
|
||
| Flag | Type | Default | Notes |
|
||
|---|---|---|---|
|
||
| `--eval-interval` | int | – | Requires configured eval datasets. |
|
||
| `--eval-prompt-data` | str+ | – | Repeatable `<name> <path>` pairs. |
|
||
| `--eval-config` | str | – | OmegaConf YAML/JSON; overrides `--eval-prompt-data`. |
|
||
| `--eval-function-path` | str | – | Defaults to `--rollout-function-path`. |
|
||
| `--eval-input-key` | str | – | |
|
||
| `--n-samples-per-eval-prompt` | int | `1` | |
|
||
| `--diffusion-eval-num-steps` | int | – | Defaults to `--diffusion-num-steps`. |
|
||
| `--skip-eval-before-train` | flag | off | |
|
||
| `--eval-reward-key` | str | – | Defaults to `--reward-key`. |
|
||
|
||
### Algorithm and loss
|
||
|
||
| Flag | Type | Default | Notes |
|
||
|---|---|---|---|
|
||
| `--loss-type` | enum | `policy_loss` | `policy_loss` / `nft` / `sft_loss` / `custom_loss`. |
|
||
| `--advantage-estimator` | enum | `grpo` | |
|
||
| `--disable-grpo-std-normalization` | flag | off | Dr.GRPO. Also forced off when `n_samples_per_prompt == 1`. |
|
||
| `--globalize-reward-mean` | flag | off | Leave **off** for flow_grpo parity. |
|
||
| `--globalize-reward-std` | flag | off | **On** for flow_grpo's PickScore recipe. |
|
||
| `--diffusion-clip-range` | float | `1e-4` | |
|
||
| `--diffusion-adv-clip-max` | float | `5.0` | Under `nft` this also sets the advantage-to-`r` slope. |
|
||
| `--diffusion-recompute-old-log-prob` | flag | off | Recompute old log-probs with the trainer forward instead of trusting the rollout's. `policy_loss` only. |
|
||
| `--diffusion-kl-beta` | float | `0.0` | |
|
||
| `--ref-mode` | enum | – | `none` / `lora_base` / `ema`. Auto: `lora_base` when KL > 0, `ema` under `nft`. |
|
||
| `--custom-prepare-train-batch-path` | str | – | Builds DiT inputs. |
|
||
| `--custom-loss-function-path` | str | – | Loss **formula** only — the DiT forward stays in the actor. |
|
||
| `--diffusion-nft-beta` | float | `1.0` | |
|
||
| `--diffusion-nft-timestep-fraction` | float | `0.99` | |
|
||
| `--no-diffusion-nft-adaptive-weight` | flag | off | |
|
||
| `--no-diffusion-nft-shuffle-timesteps` | flag | off | |
|
||
|
||
### Reward
|
||
|
||
| Flag | Type | Default | Notes |
|
||
|---|---|---|---|
|
||
| `--rm-type` | enum | – | `pickscore` / `ocr`. Overridable per sample via `metadata.rm_type`. |
|
||
| `--reward-key` | str | – | When the reward is a dict. |
|
||
| `--group-rm` | flag | off | Score a whole prompt group at once. |
|
||
| `--custom-rm-path` | str | – | `async def rm(args, samples) -> list[float]`. Batched only. |
|
||
| `--custom-reward-post-process-path` | str | – | Replace advantage normalisation. |
|
||
| `--colocate-reward` | flag | off | Reward actors onto rollout GPUs (train 0.7 + rollout 0.25 + reward 0.05). Requires `--colocate`. |
|
||
| `--pickscore-model-path` | str | – | Required for `--rm-type pickscore`. |
|
||
| `--pickscore-processor-path` | str | – | Required for `--rm-type pickscore`. |
|
||
| `--pickscore-num-workers` | int | `1` | |
|
||
| `--pickscore-num-gpus-per-worker` | float | `1.0` | Fractional values allowed. |
|
||
| `--pickscore-batch-size` | int | `8` | |
|
||
| `--pickscore-num-frames` | int | – | Frames scored per video; unset = all. |
|
||
| `--ocr-num-workers` | int | `4` | |
|
||
| `--rollout-parser-num-workers` | int | `1` | Ray actors deserializing rollout responses. Raise when trajectory tensors are large. |
|
||
|
||
### Rollout customization hooks
|
||
|
||
Every one takes a dotted path.
|
||
|
||
| Flag | Replaces |
|
||
|---|---|
|
||
| `--custom-generate-function-path` | The inner `generate` call in the diffusion rollout. |
|
||
| `--dynamic-sampling-filter-path` | Per-group keep/drop (DAPO-style). |
|
||
| `--rollout-sample-filter-path` | Per-sample loss mask; set `sample.remove_sample = True`. Samples still count for advantage normalisation. |
|
||
| `--buffer-filter-path` | Buffer selection. |
|
||
| `--custom-convert-samples-to-train-data-path` | The whole samples → train-data conversion. |
|
||
| `--custom-expand-samples-to-train-pairs-path` | Just the sample → train-pair expansion. |
|
||
| `--custom-rollout-log-function-path` | Train rollout logging. |
|
||
| `--custom-eval-rollout-log-function-path` | Eval rollout logging. |
|
||
|
||
### LoRA
|
||
|
||
| Flag | Type | Default | Notes |
|
||
|---|---|---|---|
|
||
| `--use-lora` | flag | off | |
|
||
| `--lora-rank` / `--lora-alpha` | int | `64` / `64` | |
|
||
| `--lora-target-modules` | str+ | – | Defaults per model family. |
|
||
| `--lora-init-weights` | str | `gaussian` | `kaiming-uniform` maps to PEFT's default; other PEFT schemes pass through. |
|
||
| `--lora-ipc-weight-sync` | flag | off | Push only `lora_A`/`lora_B`; the engine merges locally. Requires `--use-lora`. |
|
||
|
||
### EMA
|
||
|
||
| Flag | Type | Default | Notes |
|
||
|---|---|---|---|
|
||
| `--use-ema` | flag | off | Maintains an EMA copy as πₒₗd. Needs a consumer (`--ref-mode ema` or `--ema-rollout-policy ema`). |
|
||
| `--ema-rollout-policy` | enum | `live` | `live` / `ema`: which weights get pushed to rollout. |
|
||
| `--ema-decay-init` | float | `0.001` | Decay during the flat period. |
|
||
| `--ema-decay-ramp` | float | `0.001` | Per-step increase after the flat period; the ramp restarts from zero. |
|
||
| `--ema-decay-max` | float | `0.5` | Ceiling. |
|
||
| `--ema-decay-flat-steps` | int | `0` | |
|
||
|
||
### Checkpointing
|
||
|
||
| Flag | Type | Default | Notes |
|
||
|---|---|---|---|
|
||
| `--save` | str | – | |
|
||
| `--save-interval` | int | – | Requires `--save`. |
|
||
| `--no-save-optim` | flag | off | Smaller checkpoints, but no resumption. |
|
||
| `--load` | str | – | |
|
||
| `--ckpt-step` | int | – | Defaults to `latest_checkpointed_iteration.txt`. |
|
||
| `--no-load-optim` / `--no-load-rng` | flag | off | |
|
||
|
||
### Logging
|
||
|
||
| Flag | Type | Default | Notes |
|
||
|---|---|---|---|
|
||
| `--use-wandb` | flag | off | |
|
||
| `--wandb-project` | str | – | |
|
||
| `--wandb-group` / `--wandb-run-id` / `--wandb-team` / `--wandb-host` / `--wandb-key` | str | – | |
|
||
| `--wandb-mode` | enum | – | `online` / `offline` / `disabled`. Overrides `WANDB_MODE`. |
|
||
| `--wandb-dir` | str | – | Defaults to `./wandb`. |
|
||
| `--disable-wandb-random-suffix` | flag | off | Run names include a random suffix by default; pass this flag to disable it. |
|
||
| `--wandb-log-num-images` | int | `0` | Images/videos per rollout; `0` disables. |
|
||
| `--wandb-log-image-interval` | int | `1` | Send media every N rollouts. |
|
||
| `--use-miles-dashboard` | flag | off | Async phase/trajectory telemetry. |
|
||
| `--miles-dashboard-workspace` | str | `./miles_dashboard` | |
|
||
|
||
### Fault tolerance
|
||
|
||
| Flag | Type | Default | Notes |
|
||
|---|---|---|---|
|
||
| `--use-fault-tolerance` | flag | off | Restart dead engines during rollout. |
|
||
| `--rollout-health-check-interval` | float | `30.0` | Raise it for video models — a request can take minutes. |
|
||
| `--rollout-health-check-timeout` | float | `30.0` | |
|
||
| `--rollout-health-check-first-wait` | float | `0` | Grace period for compilation/init. |
|
||
|
||
### Debugging
|
||
|
||
| Flag | Type | Default | Notes |
|
||
|---|---|---|---|
|
||
| `--debug-rollout-only` | flag | off | Rollout, no training. |
|
||
| `--train-only` | flag | off | No engines, no weight sync, no eval. (`--debug-train-only` is a legacy alias.) |
|
||
| `--debug-skip-optimizer-step` | flag | off | No backward/step — weights never drift. Use it to measure pure forward divergence from the engine. |
|
||
| `--save-debug-rollout-data` | path template | – | `.format(rollout_id)`. |
|
||
| `--load-debug-rollout-data` | path template | – | Replays a rollout with **no engines started**. |
|
||
| `--load-debug-rollout-data-subsample` | float | – | |
|
||
| `--save-debug-train-data` | path template | – | |
|
||
| `--dump-details` | dir | – | Sets the debug dump paths for post-hoc analysis. |
|
||
| `--diffusion-debug-mode` | flag | off | Engine returns per-step debug tensors; enables the `model_output_*_abs_diff` metrics. |
|
||
|
||
`--debug-skip-optimizer-step` + `--diffusion-debug-mode` is the standard train/rollout alignment
|
||
probe: frozen weights, and the metrics report exactly how far the two forwards drift.
|
||
|
||
### CI
|
||
|
||
`--ci-test`, `--ci-metric-checker-key`, `--ci-metric-checker-threshold`. Used by `tests/e2e`;
|
||
not meant for manual runs.
|
||
|
||
---
|
||
|
||
## SDE step backends
|
||
|
||
`--diffusion-sde-type` picks the train-side backend automatically:
|
||
|
||
| `--diffusion-sde-type` | Backend | Dynamics |
|
||
|---|---|---|
|
||
| `sde` | `DiffusersSdeStepBackend` | Flow-matching SDE over diffusers scheduler sigmas. |
|
||
| `ode` | `DiffusersSdeStepBackend` | Same class; deterministic rollout (used by NFT). |
|
||
| `cps` | `CpsSdeStepBackend` | CPS kernel, σ = timestep ÷ divisor, log-prob without constants. |
|
||
|
||
`--sde-step-backend-path` overrides the mapping with your own `SdeStepBackend` subclass.
|