Skip to content

FastH3 distilled checkpoint schedules

Base MiniMax-H3 still uses the scheduler shifts in its checkpoint (video 12, audio 3), BF16 text encoding, and the existing uniform schedule. The default basic_fasth3.py example still targets the four-forward preview. Selecting a shift-10 eight-forward checkpoint is an explicit choice of model and recipe; it does not change either default or enable NVFP4.

Eight-forward T2AV recipe

The public checkpoint is FastVideo/FastVideo-FastH3-8-Step-V2 (MiniMax H3 Community License), trained with video/audio shifts 10/3, VSA sparsity 0.8, 64-token tiles, and the DMD rungs [999, 874, 749, 624, 500, 375, 250, 125]. basic_fasth3_8step.py pins that checkpoint and recipe as defaults; it shares the preview example's CLI, so every other flag works unchanged:

python examples/inference/basic/basic_fasth3_8step.py \
  --prompt 'A slow cinematic drone shot glides over a coastal town; gulls call over the harbor.' \
  --num-gpus 4 --vsa-kernel sm100a \
  --profile strict --no-inference-torch-compile --no-compile-vae \
  --height 768 --width 1344 --num-frames 124 \
  --output outputs/fasth3-8step

Pass --model-path to use a local snapshot of the full export (not just its transformer subdirectory). --steps is the number of sigma-grid points, including the terminal zero; nine points run exactly eight transformer forwards, and the script rejects any other value because the checkpoint's ladder has eight rungs. The rungs are unshifted noise levels on the 1000-step training clock; each scheduler applies its own shift once, and the transformer receives H3 clean-time values (1 - sigma). A uniform nine-point grid is not a substitute for those rungs.

Compilation and H3 fusions are disabled above to establish an eager reference; they can be evaluated separately. On hardware without the sm100a extension, use --vsa-kernel triton; compare outputs and performance before adopting that backend. This recipe is T2AV-only, not a distilled transformer_ref model.

Export metadata and validation

The export's fastvideo_inference.json supplies the trained ladder. The schedule fields of fasth3-inference-contract-v1 are:

{
  "schema_version": "fasth3-inference-contract-v1",
  "dmd_denoising_steps": [999, 874, 749, 624, 500, 375, 250, 125],
  "num_inference_steps": 9,
  "transformer_forwards": 8,
  "video_scheduler_shift": 10.0,
  "audio_scheduler_shift": 3.0
}

The loader keeps this file when downloading the selected H3 components from Hugging Face. It checks that the two declared shifts agree with scheduler/scheduler_config.json and audio_scheduler/scheduler_config.json. Missing/invalid rungs, inconsistent counts, or an explicit conflicting ladder are errors. The denoiser rejects a request with the wrong number of grid points. The metadata does not silently change request dimensions, step count, attention backend, sparsity, precision, or offload/compile settings: set those explicitly as above.

For exports without this sidecar, an explicit ladder is supported via MiniMaxH3PipelineConfig.dmd_denoising_steps, or through the typed API's PipelineSelection(experimental={"dmd_denoising_steps": [...]}). The shifts still come from the checkpoint scheduler configs. Keep generic flow_shift unset: H3 has separate video and audio shifts, not one shared shift.

This documents execution support for the published checkpoint. It is not a quality claim: compare video/audio output against base MiniMax-H3 on your own prompts before adopting it.