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).
29 lines
1.3 KiB
Python
29 lines
1.3 KiB
Python
"""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()
|