[fix]: align the QAD configs and docs with the released provenance

- V2 config now matches the canonical 16-GPU stage 1: warmup 10,
  min LR ratio 0.3, HSDP 16.
- State that the published V2.1 checkpoint is linears-only (BF16 VSA
  attention); the FP4 adaptation is a separate, non-public stage.
- Name the released checkpoints and starting models.
- Vendor and pin both calibrated amax tables.
- Add the V2 prompt/embedding and OmniRef eval data-prep scripts.
This commit is contained in:
Aryan Kumar
2026-10-19 12:38:43 -07:00
parent 5685ab40ca
commit fed3ce18b6
9 changed files with 1042 additions and 50 deletions
@@ -0,0 +1,102 @@
{
"b0.ff.fc_in": 747.9899299279987,
"b0.ff.fc_out": 2462.017121214983,
"b1.ff.fc_in": 671.2121750026851,
"b1.ff.fc_out": 1285.509862734237,
"b2.ff.fc_in": 1153.55816110724,
"b2.ff.fc_out": 3796.948980859055,
"b3.ff.fc_in": 1153.55816110724,
"b3.ff.fc_out": 4715.270819259384,
"b4.ff.fc_in": 1285.509862734237,
"b4.ff.fc_out": 4715.270819259384,
"b5.ff.fc_in": 2209.302022692089,
"b5.ff.fc_out": 5254.635977347013,
"b6.ff.fc_in": 2209.302022692089,
"b6.ff.fc_out": 5254.635977347013,
"b7.ff.fc_in": 2462.017121214983,
"b7.ff.fc_out": 4715.270819259384,
"b8.ff.fc_in": 2462.017121214983,
"b8.ff.fc_out": 5855.696365467314,
"b9.ff.fc_in": 2743.6392141259485,
"b9.ff.fc_out": 5855.696365467314,
"b10.ff.fc_in": 2743.6392141259485,
"b10.ff.fc_out": 5855.696365467314,
"b11.ff.fc_in": 2743.6392141259485,
"b11.ff.fc_out": 6525.510437495776,
"b12.ff.fc_in": 2743.6392141259485,
"b12.ff.fc_out": 6525.510437495776,
"b13.ff.fc_in": 3057.4751817363253,
"b13.ff.fc_out": 6525.510437495776,
"b14.ff.fc_in": 2743.6392141259485,
"b14.ff.fc_out": 6525.510437495776,
"b15.ff.fc_in": 2743.6392141259485,
"b15.ff.fc_out": 6525.510437495776,
"b16.ff.fc_in": 3407.2097180654623,
"b16.ff.fc_out": 6525.510437495776,
"b17.ff.fc_in": 3057.4751817363253,
"b17.ff.fc_out": 9030.717912847476,
"b18.ff.fc_in": 2743.6392141259485,
"b18.ff.fc_out": 9030.717912847476,
"b19.ff.fc_in": 2743.6392141259485,
"b19.ff.fc_out": 9030.717912847476,
"b20.ff.fc_in": 3057.4751817363253,
"b20.ff.fc_out": 10063.712585454898,
"b21.ff.fc_in": 3057.4751817363253,
"b21.ff.fc_out": 10063.712585454898,
"b22.ff.fc_in": 3407.2097180654623,
"b22.ff.fc_out": 10063.712585454898,
"b23.ff.fc_in": 3407.2097180654623,
"b23.ff.fc_out": 12497.700799896355,
"b24.ff.fc_in": 3796.948980859055,
"b24.ff.fc_out": 13927.271620769527,
"b25.ff.fc_in": 3796.948980859055,
"b25.ff.fc_out": 19274.08888735978,
"b26.ff.fc_in": 4231.26976101764,
"b26.ff.fc_out": 21478.789600085922,
"b27.ff.fc_in": 4715.270819259384,
"b27.ff.fc_out": 29724.70802687751,
"b28.ff.fc_in": 4715.270819259384,
"b28.ff.fc_out": 45841.764386937015,
"b29.ff.fc_in": 4715.270819259384,
"b29.ff.fc_out": 56928.958163414085,
"b30.ff.fc_in": 5254.635977347013,
"b30.ff.fc_out": 78784.54787887946,
"b31.ff.fc_in": 5254.635977347013,
"b31.ff.fc_out": 109030.7109780948,
"b32.ff.fc_in": 5855.696365467314,
"b32.ff.fc_out": 135400.63235256448,
"b33.ff.fc_in": 5855.696365467314,
"b33.ff.fc_out": 168148.35127510442,
"b34.ff.fc_in": 6525.510437495776,
"b34.ff.fc_out": 168148.35127510442,
"b35.ff.fc_in": 6525.510437495776,
"b35.ff.fc_out": 232702.1493904285,
"b36.ff.fc_in": 6525.510437495776,
"b36.ff.fc_out": 232702.1493904285,
"b37.ff.fc_in": 6525.510437495776,
"b37.ff.fc_out": 208816.33399986484,
"b38.ff.fc_in": 6525.510437495776,
"b38.ff.fc_out": 288982.97321111924,
"b39.ff.fc_in": 7271.942168450891,
"b39.ff.fc_out": 358875.77201571054,
"b40.ff.fc_in": 7271.942168450891,
"b40.ff.fc_out": 445672.69186462485,
"b41.ff.fc_in": 8103.755565259112,
"b41.ff.fc_out": 496651.7297372453,
"b42.ff.fc_in": 9030.717912847476,
"b42.ff.fc_out": 616770.844395513,
"b43.ff.fc_in": 9030.717912847476,
"b43.ff.fc_out": 616770.844395513,
"b44.ff.fc_in": 10063.712585454898,
"b44.ff.fc_out": 687321.2672027495,
"b45.ff.fc_in": 11214.867875490954,
"b45.ff.fc_out": 853555.2832070139,
"b46.ff.fc_in": 12497.700799896355,
"b46.ff.fc_out": 1059994.2350776498,
"b47.ff.fc_in": 13927.271620769527,
"b47.ff.fc_out": 1316362.0994398587,
"b48.ff.fc_in": 17295.691014283653,
"b48.ff.fc_out": 2030107.8425012752,
"b49.ff.fc_in": 19274.08888735978,
"b49.ff.fc_out": 2809486.555264971
}
@@ -0,0 +1,102 @@
{
"transformer_blocks.0.ff.fc_in": 7.34375,
"transformer_blocks.0.ff.fc_out": 6432.0,
"transformer_blocks.1.ff.fc_in": 6.3125,
"transformer_blocks.1.ff.fc_out": 8960.0,
"transformer_blocks.10.ff.fc_in": 15.25,
"transformer_blocks.10.ff.fc_out": 6368.0,
"transformer_blocks.11.ff.fc_in": 17.75,
"transformer_blocks.11.ff.fc_out": 16128.0,
"transformer_blocks.12.ff.fc_in": 18.549999999999997,
"transformer_blocks.12.ff.fc_out": 4064.0,
"transformer_blocks.13.ff.fc_in": 20.25,
"transformer_blocks.13.ff.fc_out": 78848.0,
"transformer_blocks.14.ff.fc_in": 12.0,
"transformer_blocks.14.ff.fc_out": 1784.0,
"transformer_blocks.15.ff.fc_in": 13.1875,
"transformer_blocks.15.ff.fc_out": 1400.0,
"transformer_blocks.16.ff.fc_in": 12.000625,
"transformer_blocks.16.ff.fc_out": 2768.16,
"transformer_blocks.17.ff.fc_in": 22.049999999999997,
"transformer_blocks.17.ff.fc_out": 4960.0,
"transformer_blocks.18.ff.fc_in": 8.875,
"transformer_blocks.18.ff.fc_out": 15616.0,
"transformer_blocks.19.ff.fc_in": 12.4375,
"transformer_blocks.19.ff.fc_out": 3203.2,
"transformer_blocks.2.ff.fc_in": 4.2875,
"transformer_blocks.2.ff.fc_out": 7648.0,
"transformer_blocks.20.ff.fc_in": 8.96875,
"transformer_blocks.20.ff.fc_out": 5696.0,
"transformer_blocks.21.ff.fc_in": 10.0625,
"transformer_blocks.21.ff.fc_out": 6464.0,
"transformer_blocks.22.ff.fc_in": 14.000625,
"transformer_blocks.22.ff.fc_out": 11712.0,
"transformer_blocks.23.ff.fc_in": 13.125,
"transformer_blocks.23.ff.fc_out": 13312.0,
"transformer_blocks.24.ff.fc_in": 18.125,
"transformer_blocks.24.ff.fc_out": 9497.599999999999,
"transformer_blocks.25.ff.fc_in": 10.7625,
"transformer_blocks.25.ff.fc_out": 12864.0,
"transformer_blocks.26.ff.fc_in": 10.443750000000001,
"transformer_blocks.26.ff.fc_out": 11776.0,
"transformer_blocks.27.ff.fc_in": 13.9375,
"transformer_blocks.27.ff.fc_out": 13504.0,
"transformer_blocks.28.ff.fc_in": 13.9375,
"transformer_blocks.28.ff.fc_out": 8448.0,
"transformer_blocks.29.ff.fc_in": 11.4375,
"transformer_blocks.29.ff.fc_out": 13058.559999999998,
"transformer_blocks.3.ff.fc_in": 6.28125,
"transformer_blocks.3.ff.fc_out": 10880.0,
"transformer_blocks.30.ff.fc_in": 12.000625,
"transformer_blocks.30.ff.fc_out": 18816.0,
"transformer_blocks.31.ff.fc_in": 7.75,
"transformer_blocks.31.ff.fc_out": 8705.279999999999,
"transformer_blocks.32.ff.fc_in": 7.9375,
"transformer_blocks.32.ff.fc_out": 13312.0,
"transformer_blocks.33.ff.fc_in": 10.0,
"transformer_blocks.33.ff.fc_out": 8035.200000000001,
"transformer_blocks.34.ff.fc_in": 6.95625,
"transformer_blocks.34.ff.fc_out": 7424.0,
"transformer_blocks.35.ff.fc_in": 9.25,
"transformer_blocks.35.ff.fc_out": 20480.0,
"transformer_blocks.36.ff.fc_in": 9.40625,
"transformer_blocks.36.ff.fc_out": 29440.0,
"transformer_blocks.37.ff.fc_in": 16.0,
"transformer_blocks.37.ff.fc_out": 14272.0,
"transformer_blocks.38.ff.fc_in": 15.751249999999999,
"transformer_blocks.38.ff.fc_out": 28160.0,
"transformer_blocks.39.ff.fc_in": 15.064374999999998,
"transformer_blocks.39.ff.fc_out": 149504.0,
"transformer_blocks.4.ff.fc_in": 6.75,
"transformer_blocks.4.ff.fc_out": 14400.0,
"transformer_blocks.40.ff.fc_in": 11.438125,
"transformer_blocks.40.ff.fc_out": 31232.0,
"transformer_blocks.41.ff.fc_in": 17.25,
"transformer_blocks.41.ff.fc_out": 37383.67999999999,
"transformer_blocks.42.ff.fc_in": 15.0625,
"transformer_blocks.42.ff.fc_out": 15296.0,
"transformer_blocks.43.ff.fc_in": 17.625,
"transformer_blocks.43.ff.fc_out": 24064.0,
"transformer_blocks.44.ff.fc_in": 24.375,
"transformer_blocks.44.ff.fc_out": 99840.0,
"transformer_blocks.45.ff.fc_in": 40.0025,
"transformer_blocks.45.ff.fc_out": 350208.0,
"transformer_blocks.46.ff.fc_in": 42.75749999999999,
"transformer_blocks.46.ff.fc_out": 20070.399999999998,
"transformer_blocks.47.ff.fc_in": 57.2525,
"transformer_blocks.47.ff.fc_out": 49920.0,
"transformer_blocks.48.ff.fc_in": 145.0,
"transformer_blocks.48.ff.fc_out": 96256.0,
"transformer_blocks.49.ff.fc_in": 146.0,
"transformer_blocks.49.ff.fc_out": 200704.0,
"transformer_blocks.5.ff.fc_in": 13.1875,
"transformer_blocks.5.ff.fc_out": 15168.0,
"transformer_blocks.6.ff.fc_in": 19.375,
"transformer_blocks.6.ff.fc_out": 11904.0,
"transformer_blocks.7.ff.fc_in": 33.5,
"transformer_blocks.7.ff.fc_out": 15872.0,
"transformer_blocks.8.ff.fc_in": 16.5,
"transformer_blocks.8.ff.fc_out": 9216.0,
"transformer_blocks.9.ff.fc_in": 19.375,
"transformer_blocks.9.ff.fc_out": 4096.0
}
@@ -10,19 +10,21 @@
# See docs/training/minimax_h3_fp4_qad.md for the recipe shared with the V2
# (V2.1 Consumer) profile, calibration, and the checkpoint contract.
#
# Paths are placeholders. Fill in the calibrated starting checkpoint, the
# pinned amax table shipped with it, the latent manifests and the output dir.
# Released result: FastVideo/FastH3-Omni-NVFP4-QAD-v2 (step 120 of 200).
# `init_from` is the calibrated step-3500 OmniRef checkpoint used as QAD step 0,
# not that released result. The calibrated amax table is vendored under
# examples/train/calibration/fasth3/ and pinned by sha256 below.
models:
student:
_target_: fastvideo.train.models.minimax_h3.omniref_pdd.MiniMaxH3OmniRefPDDModel
init_from: data/models/omniref
init_from: data/models/omniref-nvfp4-ptq
trainable: true
enable_gradient_checkpointing_type: full
qad:
enabled: true
linears:
enabled: true
amax_json: data/calibration/amax-omniref-mse-bf16-top8.json
amax_json: examples/train/calibration/fasth3/amax-omniref-mse-bf16-top8.json
# Attention and gate linears use the unit activation scale; only the
# FFN linears read their calibrated amax from this table.
attention: true
@@ -63,7 +65,7 @@ models:
trainable_patterns: transformer_blocks\.\d+\.(attn\.(to_q|to_k|to_v|to_out)|ff\.(fc_in|fc_out))\.
teacher:
_target_: fastvideo.train.models.minimax_h3.omniref_pdd.MiniMaxH3OmniRefPDDModel
init_from: data/models/omniref
init_from: data/models/omniref-nvfp4-ptq
trainable: false
frozen_bf16: true
@@ -12,24 +12,28 @@
#
# Paths are placeholders. Fill in the bf16 V2 model, the calibration table
# shipped with it, the latent manifests and the output dir.
# Starting weights: FastVideo/FastVideo-FastH3-8-Step-V2 (bf16). The released
# QAD result is FastVideo/FastVideo-FastH3-8-Step-V2.1-NVFP4-Consumer; the
# NVFP4 baseline it replaces is
# FastVideo/FastVideo-FastH3-8-Step-V2-NVFP4-Consumer.
models:
student:
_target_: fastvideo.train.models.minimax_h3.v2_t2v.MiniMaxH3V2T2VModel
init_from: data/models/FastH3-V2-train
init_from: data/models/FastH3-V2
trainable: true
enable_gradient_checkpointing_type: full
qad:
enabled: true
linears:
enabled: true
amax_json: data/calibration/amax-consumer.json
amax_json: examples/train/calibration/fasth3/amax-consumer.json
# Attention and gate linears use the unit activation scale; only the
# FFN linears read their calibrated amax from this table.
attention: true
gate: true
ffn: true
skip_blocks: []
amax_sha256: null
amax_sha256: 0800516caec04ec829d21c45ca8b18eede6b81008c040997c0b84d48e0d39e52
fp4_attention:
enabled: true
two_level_p: true
@@ -51,7 +55,7 @@ models:
trainable_patterns: transformer_blocks\.\d+\.(attn\.(to_q|to_k|to_v|to_out)|ff\.(fc_in|fc_out))\.
teacher:
_target_: fastvideo.train.models.minimax_h3.v2_t2v.MiniMaxH3V2T2VModel
init_from: data/models/FastH3-V2-train
init_from: data/models/FastH3-V2
trainable: false
method:
@@ -83,11 +87,11 @@ method:
training:
distributed:
num_gpus: 4
num_gpus: 16
sp_size: 1
tp_size: 1
hsdp_replicate_dim: 1
hsdp_shard_dim: 4
hsdp_shard_dim: 16
pin_cpu_memory: false
data:
train_batch_size: 1
@@ -98,8 +102,8 @@ training:
eps: 1.0e-08
weight_decay: 0.0
lr_scheduler: cosine_with_min_lr
lr_warmup_steps: 0
min_lr_ratio: 1.0
lr_warmup_steps: 10
min_lr_ratio: 0.3
loop:
max_train_steps: 300
gradient_accumulation_steps: 1
@@ -124,14 +128,22 @@ callbacks:
pipeline: {}
# Continuation stage (optional). If the released V2.1 checkpoint was refined
# past the 300-step stage above, it was resumed from that stage's `best` DCP
# with the same numerics and a lower learning rate. The stage keeps the full
# recipe above and changes only these knobs:
# The published FastVideo/FastVideo-FastH3-8-Step-V2.1-NVFP4-Consumer
# checkpoint is the linears-only variant of this schedule: NVFP4 linears with
# BF16 VSA attention, i.e. the same config with fp4_attention.enabled=false.
# The shared FP4 recipe above adds FP4 attention from step 0 and does not
# reproduce that checkpoint bit for bit.
#
# method.init_student_dcp=outputs/v2_1_nvfp4_qad/best
# FP4-attention adaptation (provenance note, not part of the public
# reproduction). The internal follow-up started from a linears-only 300-step
# DCP, enabled FP4 attention, and trained 300 more steps at lr 1.5e-6 with no
# warmup and a constant LR. It is an adaptation of the linears-only checkpoint
# to FP4 attention, not a second epoch of the FP4 stage 1 above, and it needs
# a DCP of the linears-only model (the packed HF release is not one):
#
# method.init_student_dcp=<linears-only 300-step DCP>
# training.optimizer.learning_rate=1.5e-06
# training.optimizer.lr_warmup_steps=0
# training.optimizer.min_lr_ratio=1.0
# training.loop.max_train_steps=300
# training.distributed.num_gpus=16
# training.distributed.hsdp_shard_dim=16
# training.checkpoint.output_dir=outputs/v2_1_nvfp4_qad_continuation
# training.checkpoint.output_dir=outputs/v2_1_nvfp4_qad_fp4_adapt