Review follow-ups for the layer-50 truncation of the Qwen3-VL conditioner:
- tests/local_tests/encoders/test_minimax_h3_qwen3_vl_parity.py compared all
65 hidden states with equal lengths and zip(strict=True), so the gate
failed deterministically once the production stack builds only 51. It now
pins the production tuple to language_model.num_layers + 1 entries and
compares every built state bit-exactly against the official value at the
same index, which still catches a truncated stack that applies the final
norm, and degrades to the original full comparison when the override is
None.
- num_hidden_layers_override <= 0 was accepted: 0 built an empty decoder
stack, and a negative value additionally left num_layers inconsistent with
the built layers, making _is_above_the_tap drop every layer key so the
conditioner loaded "successfully" with no transformer at all. The arch
config __post_init__ now rejects non-positive overrides, both at
construction and when update_model_arch re-validates a checkpoint config.
- _is_above_the_tap dropped any layer index >= num_layers, including indexes
at or above the checkpoint's own num_hidden_layers that the full stack
would reject as unexpected. The filter is now bounded to
[num_layers, num_hidden_layers) so truncation only drops keys the full
model would have accepted.
- The CPU truncation test now compares the whole shared hidden-state prefix,
mirroring the production-loader parity gate, and covers the
override == num_hidden_layers boundary. The conditioner's
num_hidden_layers property documents that it reports the checkpoint's
nominal depth, not the built depth.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
tests/local_tests/ holds local-only parity, smoke, and component tests
organized by model family (e.g. tests/local_tests/ltx2/,
tests/local_tests/stable_audio/). They typically require a checked-out
reference repo and/or model weights and are skipped in CI; see each family's
README.md for setup. The top-level
tests/local_tests/README.md is the family index.
The CI-backed test suite still lives in fastvideo/tests/.