Helios Local Verification
Reviewer-facing setup and verification record for the native
BestWishYsh/Helios-Distilled text-to-video port. These tests compare FastVideo
against the exact Diffusers Helios implementation and require local assets for
non-skip author verification.
Port state and resolved issues live in
tests/local_tests/helios/PORT_STATUS.md.
Pinned Sources
| Field | Value |
|---|---|
| Model family | helios |
| Public scope | Helios-Distilled T2V |
| Architecture source | PKU-YuanGroup/Helios@8f2a2faab3298c8a7630a2c73aea37c01b5bab01 |
| Executable parity reference | Diffusers 0.39.0 HeliosPyramidPipeline |
| HF checkpoint | BestWishYsh/Helios-Distilled |
| HF revision | 1999182614cb08d3bdcc46b9827504af2914b87b |
| Local assets | official_weights/helios |
| Source layout | Diffusers; no conversion required |
| Integration base | upstream/main@a159b63c67a1a283ce55813b694524909ea67b15 |
The official T2V model index loads one transformer; transformer_ode is not
declared or used and remains outside this PR. Base/Mid, training, ODE, I2V, and
other variants are not supported by this first pipeline.
Environment And Assets
Run from the FastVideo repository root:
uv venv --python 3.12 --seed
UV_TORCH_BACKEND=cu130 uv pip install -e ".[dev]"
.venv/bin/python -c "from diffusers import AutoencoderKLWan, HeliosDMDScheduler, HeliosPyramidPipeline, HeliosTransformer3DModel; from transformers import AutoTokenizer, UMT5EncoderModel; print('imports ok')"
The verified environment uses Python 3.12.3, PyTorch 2.12.0+cu130, CUDA 13,
Diffusers 0.39.0, Transformers 5.13.1, and flash-attn==2.8.1.
Download the pinned inference snapshot without the unused ODE transformer:
hf download BestWishYsh/Helios-Distilled \
--local-dir official_weights/helios \
--revision 1999182614cb08d3bdcc46b9827504af2914b87b \
--exclude "transformer_ode/*"
Set HF_TOKEN when auth is needed. Never put a token value in this file or a command log.
Component Matrix
| Component | FastVideo target | Test | Current author result |
|---|---|---|---|
| Transformer | fastvideo/models/dits/helios.py |
tests/local_tests/transformers/test_helios_transformer_parity.py |
30 passed: 1101/1101 strict load, tiny exact normal/pyramid, full BF16 normal/pyramid, SP=2, FlashAttention-vs-SDPA, top-level-only FSDP wrapping |
| Scheduler | fastvideo/models/schedulers/scheduling_helios_dmd.py |
tests/local_tests/schedulers/test_helios_dmd_scheduler_parity.py |
10 passed: registry resolution plus bit-exact three-stage/amplify/step parity |
| VAE | Existing native Wan VAE | tests/local_tests/vaes/test_helios_vae_parity.py |
Non-skip PASS; decode max/mean diff 0/0 |
| UMT5 | Existing native UMT5 | tests/local_tests/encoders/test_helios_umt5_parity.py |
FP32 max/mean 1.25e-6/1.0e-7; BF16 0.0234375/0.00160135 |
| Tokenizer | Production tokenizer loader | tests/local_tests/encoders/test_helios_umt5_parity.py |
Exact IDs and attention masks |
| Pipeline | fastvideo/pipelines/basic/helios/ |
tests/local_tests/pipelines/test_helios_pipeline_parity.py |
Non-skip final-latent PASS |
Mandatory Commands
Run component gates before pipeline gates:
PYTHONPATH="$PWD" .venv/bin/pytest \
tests/local_tests/transformers/test_helios_transformer_parity.py -v -s
PYTHONPATH="$PWD" .venv/bin/pytest \
tests/local_tests/vaes/test_helios_vae_parity.py -v -s
PYTHONPATH="$PWD" .venv/bin/pytest \
tests/local_tests/encoders/test_helios_umt5_parity.py -v -s
PYTHONPATH="$PWD" .venv/bin/pytest \
tests/local_tests/schedulers/test_helios_dmd_scheduler_parity.py -v -s
PYTHONPATH="$PWD" .venv/bin/pytest \
tests/local_tests/pipelines/test_helios_pipeline_math.py \
tests/local_tests/pipelines/test_helios_pipeline_stages.py \
tests/local_tests/pipelines/test_helios_pipeline_smoke.py -v -s
DISABLE_SP=1 PYTHONPATH="$PWD" .venv/bin/pytest \
tests/local_tests/pipelines/test_helios_pipeline_parity.py -v -s
FSDP + SP=2 Inference Regression
The distributed regression uses the production multiprocess VideoGenerator
path with both parallel modes active at once:
generator = VideoGenerator.from_pretrained(
"official_weights/helios",
num_gpus=2,
sp_size=2,
use_fsdp_inference=True,
dit_cpu_offload=False,
dit_layerwise_offload=False,
text_encoder_cpu_offload=True,
vae_cpu_offload=True,
)
The managed 2026-09-12 run used two RTX 6000 Ada 48 GB GPUs, BF16 weights,
FlashAttention, 384×640, 33 frames, and pyramid steps [2,2,2]. It loaded the
14.31B transformer with CPU checkpoint staging and GPU-resident FSDP shards,
completed SP=2 communication warmup and all pipeline stages, then shut down
both workers normally.
generation 23.17 s
returned tensor [1, 3, 33, 384, 640]
codec / fps / frames H.264 / 24 / 33
duration 1.375 s
SHA-256 aa10e41b17c79b6133ea41169cafcebcc510086e1375b2bd27d0a8307c750d3e
process result normal_exit, exit code 0
full ffmpeg decode pass
End-To-End Latent Parity
Both implementations load the same checkpoint from scratch and use CPU seed
42, 128×192, 33 pixel frames, guidance 1.0, three [2,2,2] DMD stages,
history [16,2,1], and nine latent frames per chunk.
shape [1, 16, 9, 16, 24]
official abs mean 0.95911187
FastVideo abs mean 0.96272093
abs-mean relative drift 0.3763%
max absolute diff 1.89453125
mean absolute diff 0.17001711
RMSE 0.24650776
cosine 0.97970295
result PASS
Fixed gates are shape equality, cosine ≥0.95, abs-mean drift ≤5%, mean absolute error ≤0.30, and RMSE ≤0.40. The managed current-head run completed in 82.85 seconds with one passed test and no skip.
Typed Public Example
HELIOS_MODEL_PATH=official_weights/helios \
HELIOS_OUTPUT_PATH=outputs/helios/helios_distilled_t2v_384x640_33f.mp4 \
PYTHONPATH="$PWD" .venv/bin/python \
examples/inference/basic/basic_helios_distilled_t2v.py
The example uses VideoGenerator.from_config, GeneratorConfig,
GenerationRequest, and typed sampling/output configs. The current-head run
completed generation in 29.43 seconds and produced:
codec H.264
resolution 640x384
fps 24
frames 33
duration 1.375 s
SHA-256 2e6d5099715256b16b865cb300479b328b2835f9f8792cb5427a98c17eb0b038
Full ffmpeg decode and the non-black-frame/container quality gate pass. The contact sheet contains the requested fish, coral, and underwater scene.
Run the committed local quality gate with:
HELIOS_QUALITY_CANDIDATE=outputs/helios/helios_distilled_t2v_384x640_33f.mp4 \
PYTHONPATH="$PWD" .venv/bin/pytest \
tests/local_tests/helios/test_helios_quality_regression.py -v -s
Expected author result is one passed integrity test and one skipped reference
comparison. A CI SSIM reference is deliberately deferred_with_reason: its
publication requires separate upload approval, which this PR does not have.
Review Notes
- Production code does not import Diffusers or Transformers model classes; those imports exist only in parity tests. The existing tokenizer boundary is reused.
- The dedicated pyramid stage is required by the official nine-frame autoregressive chunks, three spatial levels, history geometry, block-noise covariance, stage-local DMD schedules, and chunk decode contract.
- The discrete-GPU checkpoint-staging change in the shared loader is scoped to
FSDP inference; FSDP training keeps its previous
cpu_offload-only staging, so training runs are unaffected. use_zero_initandzero_stepsremain in the public call surface for Diffusers signature compatibility. The pinned Distilled model declaresis_cfg_zero_star=false, so both official and FastVideo standard-CFG paths intentionally ignore zero-star initialization for this checkpoint.- Final decoded and latent outputs are moved to CPU inside the worker before multiprocessing return. A regression test prevents CUDA-IPC OOM from returning a GPU tensor while the 14.31B transformer remains resident.
- Generated media, tensor artifacts, weights, reference clones, and private reports remain ignored and must not be committed.
Latest-Main Unit-Lane Baseline
The branch is rebased onto a943220c. In the current shared environment,
.buildkite/scripts/unit_test.sh reports 1315 passed, 9 skipped, 5 failed.
The same five order-sensitive NVFP4/LoRA wiring failures reproduce on an
untouched upstream/main@a943220c; that test file passes independently with
15 passed, 1 skipped on both trees. Helios-specific gates and repository-wide
pre-commit pass.