From 7464ef8308cb4e445b881100dc325d3d4c89bdeb Mon Sep 17 00:00:00 2001 From: Will Lin Date: Thu, 18 Jun 2026 11:53:25 +0000 Subject: [PATCH] [feat] v2: register Wan2.1-I2V-14B 480P/720P (reuse the GPU-verified i2v card) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 14B i2v variants reuse the Wan2.1 i2v card/path proven on Fun-1.3B-InP — just per-variant params (480P flow_shift 3.0 / 480x832, 720P flow_shift 5.0 / 720x1280). Registry resolution + caps verified; specific 14B weights GPU-pending (same generic Wan i2v loader path that Fun-InP validated). i2v cluster now supported; roadmap updated (11 models ported). --- examples/inference/basic/V2_PORTING_STATUS.md | 5 ++++- v2/registry.py | 9 ++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/examples/inference/basic/V2_PORTING_STATUS.md b/examples/inference/basic/V2_PORTING_STATUS.md index e58eecee6..266c180c2 100644 --- a/examples/inference/basic/V2_PORTING_STATUS.md +++ b/examples/inference/basic/V2_PORTING_STATUS.md @@ -55,7 +55,10 @@ Wan2.1 model — covered by wan21; those runtime modes are out of scope. | `basic_ltx2_3_distilled_i2v*.py` | LTX-2.3-Distilled I2V | Image conditioning on the ltx2 single-stage program (encode the input image + condition the denoise). | ## Backlog — goal: port ALL fastvideo models (63 total: 8 ported · 21 reuse-arch · 34 new-arch) -Ported (8): the 7 above + **Wan2.1-T2V-14B** (bucket B — reuses the Wan recipe/adapter; 720p defaults). +Ported (11): the 7 above + **Wan2.1-T2V-14B** + the **Wan2.1 i2v cluster** — Wan2.1-Fun-1.3B-InP +(GPU-verified: CLIP encoder + first-frame [mask|cond] -> 36ch DiT) and Wan2.1-I2V-14B-480P/720P (reuse the +same i2v card; 14B weights GPU-pending). i2v required a real sub-system: the image-encoder adapter, the +loop's i2v conditioning hooks, and the Wan adapter's 36ch concat (all landed + T2V-unregressed). ⚠️ Not as trivial as the bucket split implies: the `FastVideo/*` distilled checkpoints (FastWan DMD, VSA, Turbo) carry **gated-attention params** (`to_gate_compress`) the generic `WanTransformer3DModel` loader diff --git a/v2/registry.py b/v2/registry.py index a05c7a96b..298325d35 100644 --- a/v2/registry.py +++ b/v2/registry.py @@ -55,9 +55,16 @@ def _entries() -> list[ModelEntry]: return [ ModelEntry(("Wan-AI/Wan2.1-T2V-1.3B-Diffusers",), build_wan21_card, build_wan_t2v_program), ModelEntry(("Wan-AI/Wan2.1-T2V-14B-Diffusers",), build_wan_t2v_14b_card, build_wan_t2v_program), - # Wan2.1 i2v (Fun-InP): CLIP image encoder + first-frame VAE conditioning ([mask|cond] -> 36ch DiT). + # Wan2.1 i2v cluster: CLIP image encoder + first-frame VAE conditioning ([mask|cond] -> 36ch DiT). + # Fun-1.3B-InP is GPU-verified; the 14B variants reuse the same i2v card/path (weights GPU-pending). ModelEntry(("weizhou03/Wan2.1-Fun-1.3B-InP-Diffusers",), build_wan21_i2v_card, build_wan21_i2v_program), + ModelEntry(("Wan-AI/Wan2.1-I2V-14B-480P-Diffusers",), + lambda: build_wan21_i2v_card("wan2.1-i2v-14b-480p", flow_shift=3.0, height=480, width=832), + build_wan21_i2v_program), + ModelEntry(("Wan-AI/Wan2.1-I2V-14B-720P-Diffusers",), + lambda: build_wan21_i2v_card("wan2.1-i2v-14b-720p", flow_shift=5.0, height=720, width=1280), + build_wan21_i2v_program), ModelEntry(("Wan-AI/Wan2.2-TI2V-5B-Diffusers",), build_wan22_ti2v_card, build_wan_t2v_program), ModelEntry(("Wan-AI/Wan2.2-T2V-A14B-Diffusers",), build_wan22_a14b_card, build_wan_t2v_program), ModelEntry(("wlsaidhi/SFWan2.1-T2V-1.3B-Diffusers",), build_wan_causal_card, build_wan_causal_program),