Files
hao-ai-lab-FastVideo/v2/models/wan21/program.py
T
SolitaryThinker 4e331eb7ff [refactor] v2: use absolute imports (v2.*) everywhere instead of relative
Mechanical conversion of every relative import under v2/ to an absolute v2.* path
(from .x / ..x / ...x -> from v2.<pkg>.x) so imports are unambiguous, grep-able, and
stable when code is copied/moved between entrypoints (VideoGenerator, CLI, server).

Surgical prefix-only rewrite: only the 'from <dots><module>' prefix changed — import
names, parentheses, multi-line formatting, comments, and ordering are byte-for-byte
preserved (no collapsing, no reorder, no unrelated reformatting).

- 471 imports across 125 files; v2/tests/ was already absolute (untouched).
- Validated: all 125 files compile, every 'from v2.* import' target resolves to a real
  module/package, zero relative imports remain (full sweep), CPU mini suite green
  (202 passed, 2 skipped).
2026-07-04 17:15:34 +00:00

29 lines
1.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""Wan2.1 T2V program (design_v3 §13, §15a): text_encode → diffusion_denoise → vae_decode.
The text-encode node demonstrates the content-hash feature cache (design_v3 §7.2, §10): the
same prompt across requests (e.g. a K=24 RL group) encodes once and reuses — the 24× text-encode
reduction the vendored RL sampler cannot express.
"""
from __future__ import annotations
from v2.program import ComponentNode, ModelLoopNode, Program, ProgramKind
from v2.models.common import text_encode_node_fn as _text_encode
def _vae_decode(instance, slots, request, ctx) -> None:
latents = slots["denoise_out"]["latents"]
slots["video"] = instance.component("vae").decode(latents)
def build_wan_t2v_program() -> Program:
return Program(
program_id="wan.t2v.inline", kind=ProgramKind.INLINE,
nodes=[
ComponentNode("text_encode", fn=_text_encode, writes=("text_embeds", "neg_text_embeds")),
ModelLoopNode("denoise", loop_id="diffusion_denoise", output_slot="denoise_out",
reads=("text_embeds", "neg_text_embeds"), writes=("denoise_out",)),
ComponentNode("vae_decode", fn=_vae_decode, reads=("denoise_out",), writes=("video",)),
],
output_artifacts={"video": "video", "latents": "denoise_out"},
).validate()