[refactor]: move repository configs and examples off pipeline.experimental

Every key that repository YAML configs, Python examples, the Dreamverse
backend, and tests passed through pipeline.experimental has a typed
GeneratorConfig field, so they use those fields instead:
engine.attention, engine.compile.regional, pipeline.flow_shift,
pipeline.embedded_cfg_scale, pipeline.dmd_denoising_steps,
pipeline.components.lora_nickname, pipeline.minimax_h3, and
pipeline.longcat. No repository config outside the tests uses
pipeline.experimental any more.

The flat FastVideoArgs keywords that each migrated YAML file and each
basic_fasth3.py option set produces match the previous ones. The golden
snapshots of the two Hunyuan scripts now record embedded_cfg_scale and
flow_shift as floats (6.0 instead of 6), because the typed fields are
floats. The guidance tensor is built as float32 either way. The golden case
untyped_experimental_keys is renamed attention_precision_and_flow_shift with
identical content, and keys_without_typed_fields covers keywords that still
go to pipeline.experimental.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012M91wnVFmPEvJ9h39r5BH7
This commit is contained in:
Davids048
2026-10-02 17:37:22 +00:00
co-authored by Claude Opus 5.5
parent b24396561a
commit ecb15bf9e0
41 changed files with 542 additions and 196 deletions
+15 -18
View File
@@ -25,11 +25,13 @@ from pathlib import Path
from fastvideo import VideoGenerator
from fastvideo.api import (
AttentionConfig,
CompileConfig,
ComponentConfig,
EngineConfig,
GenerationRequest,
GeneratorConfig,
MiniMaxH3Config,
OffloadConfig,
OutputConfig,
ParallelismConfig,
@@ -254,23 +256,6 @@ def _execution_backend(args: argparse.Namespace) -> str:
def build_generator_config(args: argparse.Namespace) -> GeneratorConfig:
use_vsa = _uses_vsa(args)
experimental: dict[str, object] = {
"attention_backend": "VIDEO_SPARSE_ATTN_H3" if use_vsa else "FLASH_ATTN",
"inference_torch_compile": args.inference_torch_compile,
"vae_parallel_decode": args.parallel_vae,
"vae_parallel_decode_strategy": "gather",
}
if args.h3_sequential_load is not None:
experimental["h3_sequential_load"] = args.h3_sequential_load
if args.video_decode_backend != "h3-vae":
experimental["video_decode_backend"] = args.video_decode_backend
if args.taeh3_checkpoint is not None:
experimental["taeh3_checkpoint"] = args.taeh3_checkpoint
if use_vsa:
experimental.update({
"VSA_sparsity": args.vsa_sparsity,
"VSA_tile_size": args.vsa_tile_size,
})
return GeneratorConfig(
model_path=args.model_path,
pipeline=PipelineSelection(
@@ -278,7 +263,13 @@ def build_generator_config(args: argparse.Namespace) -> GeneratorConfig:
lora_path=getattr(args, "lora_path", None),
lora_strength=float(getattr(args, "lora_strength", 1.0)),
),
experimental=experimental,
minimax_h3=MiniMaxH3Config(
sequential_load=args.h3_sequential_load,
video_decode_backend=None if args.video_decode_backend == "h3-vae" else args.video_decode_backend,
taeh3_checkpoint=args.taeh3_checkpoint,
vae_parallel_decode=args.parallel_vae,
vae_parallel_decode_strategy="gather",
),
),
engine=EngineConfig(
num_gpus=args.num_gpus,
@@ -297,6 +288,12 @@ def build_generator_config(args: argparse.Namespace) -> GeneratorConfig:
enabled=args.torch_compile,
mode=args.compile_mode,
vae_enabled=args.compile_vae,
regional=args.inference_torch_compile,
),
attention=AttentionConfig(
backend="VIDEO_SPARSE_ATTN_H3" if use_vsa else "FLASH_ATTN",
vsa_sparsity=args.vsa_sparsity if use_vsa else None,
vsa_tile_size=args.vsa_tile_size if use_vsa else None,
),
),
)