From 31c0f1b34109d272357444236ce2a30616e895cf Mon Sep 17 00:00:00 2001 From: Kaiqin Kong Date: Tue, 10 Feb 2026 11:12:33 -0800 Subject: [PATCH] [feat] Port LingBot-World-Base (Cam) (#1081) --- .../basic/basic_lingbotworld_base_cam.py | 49 ++ .../lingbotworld_examples/00/intrinsics.npy | Bin 0 -> 15504 bytes .../basic/lingbotworld_examples/00/poses.npy | Bin 0 -> 61632 bytes .../lingbotworld_examples/01/intrinsics.npy | Bin 0 -> 9104 bytes .../basic/lingbotworld_examples/01/poses.npy | Bin 0 -> 36032 bytes .../lingbotworld_examples/02/intrinsics.npy | Bin 0 -> 15440 bytes .../basic/lingbotworld_examples/02/poses.npy | Bin 0 -> 61376 bytes fastvideo/configs/models/dits/__init__.py | 4 +- fastvideo/configs/models/dits/lingbotworld.py | 110 ++++ fastvideo/configs/pipelines/__init__.py | 4 +- fastvideo/configs/pipelines/lingbotworld.py | 13 + fastvideo/configs/sample/base.py | 3 + fastvideo/configs/sample/lingbotworld.py | 21 + fastvideo/layers/visual_embedding.py | 57 +- .../models/dits/lingbotworld/__init__.py | 8 + .../models/dits/lingbotworld/cam_utils.py | 203 +++++++ fastvideo/models/dits/lingbotworld/model.py | 569 ++++++++++++++++++ fastvideo/models/registry.py | 1 + .../pipelines/basic/lingbotworld/__init__.py | 1 + .../lingbotworld/lingbotworld_pipeline.py | 16 + fastvideo/pipelines/pipeline_batch_info.py | 3 + fastvideo/pipelines/stages/denoising.py | 1 + fastvideo/registry.py | 15 + .... The wind whips past the rider's blue.mp4 | Bin 0 -> 196086 bytes .../tests/ssim/test_lingbot_similarity.py | 204 +++++++ 25 files changed, 1279 insertions(+), 3 deletions(-) create mode 100644 examples/inference/basic/basic_lingbotworld_base_cam.py create mode 100644 examples/inference/basic/lingbotworld_examples/00/intrinsics.npy create mode 100644 examples/inference/basic/lingbotworld_examples/00/poses.npy create mode 100644 examples/inference/basic/lingbotworld_examples/01/intrinsics.npy create mode 100644 examples/inference/basic/lingbotworld_examples/01/poses.npy create mode 100644 examples/inference/basic/lingbotworld_examples/02/intrinsics.npy create mode 100644 examples/inference/basic/lingbotworld_examples/02/poses.npy create mode 100644 fastvideo/configs/models/dits/lingbotworld.py create mode 100644 fastvideo/configs/pipelines/lingbotworld.py create mode 100644 fastvideo/configs/sample/lingbotworld.py create mode 100644 fastvideo/models/dits/lingbotworld/__init__.py create mode 100644 fastvideo/models/dits/lingbotworld/cam_utils.py create mode 100644 fastvideo/models/dits/lingbotworld/model.py create mode 100644 fastvideo/pipelines/basic/lingbotworld/__init__.py create mode 100644 fastvideo/pipelines/basic/lingbotworld/lingbotworld_pipeline.py create mode 100644 fastvideo/tests/ssim/L40S_reference_videos/LingBot-World-Base-Cam-Diffusers/FLASH_ATTN/The video presents a soaring journey through a fantasy jungle. The wind whips past the rider's blue.mp4 create mode 100644 fastvideo/tests/ssim/test_lingbot_similarity.py diff --git a/examples/inference/basic/basic_lingbotworld_base_cam.py b/examples/inference/basic/basic_lingbotworld_base_cam.py new file mode 100644 index 000000000..db8ce10bb --- /dev/null +++ b/examples/inference/basic/basic_lingbotworld_base_cam.py @@ -0,0 +1,49 @@ +from fastvideo import VideoGenerator +from fastvideo.models.dits.lingbotworld.cam_utils import prepare_camera_embedding + +# from fastvideo.configs.sample import SamplingParam +OUTPUT_PATH = "video_samples_lingbotworld" +def main(): + # FastVideo will automatically use the optimal default arguments for the + # model. + # If a local path is provided, FastVideo will make a best effort + # attempt to identify the optimal arguments. + generator = VideoGenerator.from_pretrained( + "FastVideo/LingBot-World-Base-Cam-Diffusers", + # FastVideo will automatically handle distributed setup + num_gpus=1, + use_fsdp_inference=False, # set to True if GPU is out of memory + dit_cpu_offload=True, # DiT need to be offloaded for MoE + vae_cpu_offload=False, + text_encoder_cpu_offload=True, + # Set pin_cpu_memory to false if CPU RAM is limited and there're no frequent CPU-GPU transfer + pin_cpu_memory=True, + # image_encoder_cpu_offload=False, + ) + + num_frames = 81 + prompt = "The video presents a soaring journey through a fantasy jungle. The wind whips past the rider's blue hands gripping the reins, causing the leather straps to vibrate. The ancient gothic castle approaches steadily, its stone details becoming clearer against the backdrop of floating islands and distant waterfalls." + image_path = "https://raw.githubusercontent.com/Robbyant/lingbot-world/main/examples/00/image.jpg" + action_path = "examples/inference/basic/lingbotworld_examples/00" + c2ws_plucker_emb, num_frames = prepare_camera_embedding( + action_path=action_path, + num_frames=num_frames, + height=480, + width=832, + spatial_scale=8, + ) + + generator.generate_video( + prompt, + image_path=image_path, + output_path=OUTPUT_PATH, + save_video=True, + num_frames=num_frames, + height=480, + width=832, + c2ws_plucker_emb=c2ws_plucker_emb, + ) + + +if __name__ == "__main__": + main() diff --git a/examples/inference/basic/lingbotworld_examples/00/intrinsics.npy b/examples/inference/basic/lingbotworld_examples/00/intrinsics.npy new file mode 100644 index 0000000000000000000000000000000000000000..62b54345640c22ff4bf81b64d30c0c8534211902 GIT binary patch literal 15504 zcmeI!KWf5Y6aa8tdk5j$z810wq0rJT&`s&$;3UB$bSRA^!9_fRgY+OC!_mZT}v>+ktjTMqU1 zGvAa${`m4dO+xyVgnjs9Je;~dyB_-Nc)MhibDhcc!#vmr_rN{$5Bx(O-~k@s0UqE1 z9^e5U-~k@s0UqE19^e5U-~k@s0UqE19^e5U-~k@s0UqE19^e5U-~k@s0UqE19^e5U X-~k@s0UqE19^e5U-~k@^KOVRPan)M* literal 0 HcmV?d00001 diff --git a/examples/inference/basic/lingbotworld_examples/00/poses.npy b/examples/inference/basic/lingbotworld_examples/00/poses.npy new file mode 100644 index 0000000000000000000000000000000000000000..b8ca391239ed546e5de14c14bcfadae056171edf GIT binary patch literal 61632 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 XYOBfz`3)E$CyuX*@udEI{m}md;@tIx literal 0 HcmV?d00001 diff --git a/examples/inference/basic/lingbotworld_examples/01/intrinsics.npy b/examples/inference/basic/lingbotworld_examples/01/intrinsics.npy new file mode 100644 index 0000000000000000000000000000000000000000..b2a19076fe8738f80ee2ccec4b0f01824cb57f26 GIT binary patch literal 9104 zcmeI&K}ge490%~#Nji+^)aVmzg+@e?@r6XF@DenOWVV@QYx3b@)kmepe~8pnjX58b%-=NSTh)#+y6D_C(--8vjrjicKiGvkNtV6`3x z?Fs_}?1>JA^borus<3yMUG7%cb(j6VM`3G%{kT^lGs14C?@lGz!D|Y)N7+xw9}J&} zDRifJ{0{k<;V)$G7>|3dD^wfaPd;n7f$SK*NKP2OOimf@Cr=u_MV>O8BtJJiMt))V zK6%>kIC;kKL-O2T_z}%d8}m1tC+Pk&#{G-`?Rq?+^_@4?S1juxzX$FM*$=WGWIxD$ z`1Aik@<8%H@<8%H^5FOL6v;!$L&-zQL&-zQ!}aIu(g)H9(g)H9(g)H9(g)IqavqTL VfSd>Z-+ACo@f-TLf7kDa`~r;309yb6 literal 0 HcmV?d00001 diff --git a/examples/inference/basic/lingbotworld_examples/01/poses.npy b/examples/inference/basic/lingbotworld_examples/01/poses.npy new file mode 100644 index 0000000000000000000000000000000000000000..6df0c446ad84629d13734271006a1891756187ae GIT binary patch literal 36032 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 VfCqSh2Y7%7cz_3ZfCv8119w8EHh};D literal 0 HcmV?d00001 diff --git a/examples/inference/basic/lingbotworld_examples/02/poses.npy b/examples/inference/basic/lingbotworld_examples/02/poses.npy new file mode 100644 index 0000000000000000000000000000000000000000..8ba32e62ed176a373e1cd753fe3b5c63137ca1e9 GIT binary patch literal 61376 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 literal 0 HcmV?d00001 diff --git a/fastvideo/configs/models/dits/__init__.py b/fastvideo/configs/models/dits/__init__.py index 571d7f4f1..dfe6f4aef 100644 --- a/fastvideo/configs/models/dits/__init__.py +++ b/fastvideo/configs/models/dits/__init__.py @@ -2,6 +2,7 @@ from fastvideo.configs.models.dits.cosmos import CosmosVideoConfig from fastvideo.configs.models.dits.cosmos2_5 import Cosmos25VideoConfig from fastvideo.configs.models.dits.hunyuanvideo import HunyuanVideoConfig from fastvideo.configs.models.dits.hunyuanvideo15 import HunyuanVideo15Config +from fastvideo.configs.models.dits.lingbotworld import LingBotWorldVideoConfig from fastvideo.configs.models.dits.longcat import LongCatVideoConfig from fastvideo.configs.models.dits.ltx2 import LTX2VideoConfig from fastvideo.configs.models.dits.stepvideo import StepVideoConfig @@ -11,5 +12,6 @@ from fastvideo.configs.models.dits.hyworld import HYWorldConfig __all__ = [ "HunyuanVideoConfig", "HunyuanVideo15Config", "WanVideoConfig", "StepVideoConfig", "CosmosVideoConfig", "Cosmos25VideoConfig", - "LongCatVideoConfig", "LTX2VideoConfig", "HYWorldConfig" + "LongCatVideoConfig", "LTX2VideoConfig", "HYWorldConfig", + "LingBotWorldVideoConfig" ] diff --git a/fastvideo/configs/models/dits/lingbotworld.py b/fastvideo/configs/models/dits/lingbotworld.py new file mode 100644 index 000000000..d88600939 --- /dev/null +++ b/fastvideo/configs/models/dits/lingbotworld.py @@ -0,0 +1,110 @@ +# SPDX-License-Identifier: Apache-2.0 +from dataclasses import dataclass, field + +from fastvideo.configs.models.dits.base import DiTArchConfig, DiTConfig + + +def is_blocks(n: str, m) -> bool: + return "blocks" in n and str.isdigit(n.split(".")[-1]) + + +@dataclass +class LingBotWorldArchConfig(DiTArchConfig): + _fsdp_shard_conditions: list = field(default_factory=lambda: [is_blocks]) + + param_names_mapping: dict = field( + default_factory=lambda: { + r"^patch_embedding\.(.*)$": r"patch_embedding.proj.\1", + r"^patch_embedding_wancamctrl\.(.*)$": + r"patch_embedding_wancamctrl.proj.\1", + r"^c2ws_hidden_states_layer1\.(.*)$": r"c2ws_mlp.fc_in.\1", + r"^c2ws_hidden_states_layer2\.(.*)$": r"c2ws_mlp.fc_out.\1", + r"^text_embedding\.0\.(.*)$": + r"condition_embedder.text_embedder.fc_in.\1", + r"^text_embedding\.2\.(.*)$": + r"condition_embedder.text_embedder.fc_out.\1", + r"^time_embedding\.0\.(.*)$": + r"condition_embedder.time_embedder.mlp.fc_in.\1", + r"^time_embedding\.2\.(.*)$": + r"condition_embedder.time_embedder.mlp.fc_out.\1", + r"^time_projection\.1\.(.*)$": + r"condition_embedder.time_modulation.linear.\1", + r"^blocks\.(\d+)\.modulation$": r"blocks.\1.scale_shift_table", + r"^blocks\.(\d+)\.self_attn\.q\.(.*)$": r"blocks.\1.to_q.\2", + r"^blocks\.(\d+)\.self_attn\.k\.(.*)$": r"blocks.\1.to_k.\2", + r"^blocks\.(\d+)\.self_attn\.v\.(.*)$": r"blocks.\1.to_v.\2", + r"^blocks\.(\d+)\.self_attn\.o\.(.*)$": r"blocks.\1.to_out.\2", + r"^blocks\.(\d+)\.self_attn\.norm_q\.(.*)$": r"blocks.\1.norm_q.\2", + r"^blocks\.(\d+)\.self_attn\.norm_k\.(.*)$": r"blocks.\1.norm_k.\2", + r"^blocks\.(\d+)\.norm3\.(.*)$": + r"blocks.\1.self_attn_residual_norm.norm.\2", + r"^blocks\.(\d+)\.cross_attn\.q\.(.*)$": r"blocks.\1.attn2.to_q.\2", + r"^blocks\.(\d+)\.cross_attn\.k\.(.*)$": r"blocks.\1.attn2.to_k.\2", + r"^blocks\.(\d+)\.cross_attn\.v\.(.*)$": r"blocks.\1.attn2.to_v.\2", + r"^blocks\.(\d+)\.cross_attn\.o\.(.*)$": + r"blocks.\1.attn2.to_out.\2", + r"^blocks\.(\d+)\.cross_attn\.norm_q\.(.*)$": + r"blocks.\1.attn2.norm_q.\2", + r"^blocks\.(\d+)\.cross_attn\.norm_k\.(.*)$": + r"blocks.\1.attn2.norm_k.\2", + r"^blocks\.(\d+)\.ffn\.0\.(.*)$": r"blocks.\1.ffn.fc_in.\2", + r"^blocks\.(\d+)\.ffn\.2\.(.*)$": r"blocks.\1.ffn.fc_out.\2", + r"^blocks\.(\d+)\.cam_injector_layer1\.(.*)$": + r"blocks.\1.cam_conditioner.cam_injector.fc_in.\2", + r"^blocks\.(\d+)\.cam_injector_layer2\.(.*)$": + r"blocks.\1.cam_conditioner.cam_injector.fc_out.\2", + r"^blocks\.(\d+)\.cam_scale_layer\.(.*)$": + r"blocks.\1.cam_conditioner.cam_scale_layer.\2", + r"^blocks\.(\d+)\.cam_shift_layer\.(.*)$": + r"blocks.\1.cam_conditioner.cam_shift_layer.\2", + r"^head\.modulation$": r"scale_shift_table", + r"^head\.head\.(.*)$": r"proj_out.\1", + }) + + # Reverse mapping for saving checkpoints: custom -> hf + reverse_param_names_mapping: dict = field(default_factory=lambda: {}) + + # Some LoRA adapters use the original official layer names instead of hf layer names, + # so apply this before the param_names_mapping + lora_param_names_mapping: dict = field(default_factory=lambda: {}) + + patch_size: tuple[int, int, int] = (1, 2, 2) + text_len: int = 512 + num_attention_heads: int = 40 + attention_head_dim: int = 128 + in_channels: int = 16 + out_channels: int = 16 + text_dim: int = 4096 + freq_dim: int = 256 + ffn_dim: int = 13824 + num_layers: int = 40 + cross_attn_norm: bool = True + qk_norm: str = "rms_norm_across_heads" + eps: float = 1e-6 + image_dim: int | None = None + added_kv_proj_dim: int | None = None + rope_max_seq_len: int = 1024 + pos_embed_seq_len: int | None = None + exclude_lora_layers: list[str] = field(default_factory=lambda: ["embedder"]) + + # Wan MoE + boundary_ratio: float | None = None + + # Causal Wan + local_attn_size: int = -1 # Window size for temporal local attention (-1 indicates global attention) + sink_size: int = 0 # Size of the attention sink, we keep the first `sink_size` frames unchanged when rolling the KV cache + num_frames_per_block: int = 3 + sliding_window_num_frames: int = 21 + + def __post_init__(self): + super().__post_init__() + self.out_channels = self.out_channels or self.in_channels + self.hidden_size = self.num_attention_heads * self.attention_head_dim + self.num_channels_latents = self.out_channels + + +@dataclass +class LingBotWorldVideoConfig(DiTConfig): + arch_config: DiTArchConfig = field(default_factory=LingBotWorldArchConfig) + + prefix: str = "Wan" diff --git a/fastvideo/configs/pipelines/__init__.py b/fastvideo/configs/pipelines/__init__.py index 747ebaed1..a99eaabd4 100644 --- a/fastvideo/configs/pipelines/__init__.py +++ b/fastvideo/configs/pipelines/__init__.py @@ -5,6 +5,7 @@ from fastvideo.configs.pipelines.cosmos2_5 import Cosmos25Config from fastvideo.configs.pipelines.hunyuan import FastHunyuanConfig, HunyuanConfig from fastvideo.configs.pipelines.hunyuan15 import Hunyuan15T2V480PConfig, Hunyuan15T2V720PConfig from fastvideo.configs.pipelines.hyworld import HYWorldConfig +from fastvideo.configs.pipelines.lingbotworld import LingBotWorldI2V480PConfig from fastvideo.configs.pipelines.ltx2 import LTX2T2VConfig from fastvideo.configs.pipelines.sd35 import SD35Config from fastvideo.registry import get_pipeline_config_cls_from_name @@ -19,5 +20,6 @@ __all__ = [ "WanT2V480PConfig", "WanI2V480PConfig", "WanT2V720PConfig", "WanI2V720PConfig", "StepVideoT2VConfig", "SelfForcingWanT2V480PConfig", "CosmosConfig", "Cosmos25Config", "LTX2T2VConfig", "HYWorldConfig", - "SD35Config", "get_pipeline_config_cls_from_name" + "SD35Config", "LingBotWorldI2V480PConfig", + "get_pipeline_config_cls_from_name" ] diff --git a/fastvideo/configs/pipelines/lingbotworld.py b/fastvideo/configs/pipelines/lingbotworld.py new file mode 100644 index 000000000..ce4af1cd6 --- /dev/null +++ b/fastvideo/configs/pipelines/lingbotworld.py @@ -0,0 +1,13 @@ +# SPDX-License-Identifier: Apache-2.0 +from dataclasses import dataclass, field + +from fastvideo.configs.models import DiTConfig +from fastvideo.configs.pipelines.wan import Wan2_2_I2V_A14B_Config +from fastvideo.configs.models.dits.lingbotworld import LingBotWorldVideoConfig + + +@dataclass +class LingBotWorldI2V480PConfig(Wan2_2_I2V_A14B_Config): + dit_config: DiTConfig = field(default_factory=LingBotWorldVideoConfig) + flow_shift: float | None = 10.0 + boundary_ratio: float | None = 0.947 diff --git a/fastvideo/configs/sample/base.py b/fastvideo/configs/sample/base.py index ab3131419..8656d1428 100644 --- a/fastvideo/configs/sample/base.py +++ b/fastvideo/configs/sample/base.py @@ -31,6 +31,9 @@ class SamplingParam: # Camera control inputs (HYWorld) pose: str | None = None # Camera trajectory: pose string (e.g., 'w-31') or JSON file path + # Camera control inputs (LingBotWorld) + c2ws_plucker_emb: Any | None = None # Plucker embedding: [B, C, F_lat, H_lat, W_lat] + # Refine inputs (LongCat 480p->720p upscaling) # Path-based refine (load stage1 video from disk, e.g. MP4) refine_from: str | None = None # Path to stage1 video (480p output from distill) diff --git a/fastvideo/configs/sample/lingbotworld.py b/fastvideo/configs/sample/lingbotworld.py new file mode 100644 index 000000000..84cbc7594 --- /dev/null +++ b/fastvideo/configs/sample/lingbotworld.py @@ -0,0 +1,21 @@ +# SPDX-License-Identifier: Apache-2.0 +from dataclasses import dataclass +from fastvideo.configs.sample.wan import Wan2_2_I2V_A14B_SamplingParam + + +@dataclass +class LingBotWorld_SamplingParam(Wan2_2_I2V_A14B_SamplingParam): + guidance_scale: float = 5.0 # high_noise + guidance_scale_2: float = 5.0 # low_noise + num_inference_steps: int = 70 + boundary_ratio: float | None = 0.947 + negative_prompt: str | None = ( + "画面突变,色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰," + "最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部," + "畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走," + "镜头晃动,画面闪烁,模糊,噪点,水印,签名,文字,变形,扭曲,液化,不合逻辑的结构,卡顿," + "PPT幻灯片感,过暗,欠曝,低对比度,霓虹灯光感,过度锐化,3D渲染感,人物,行人,游客,身体," + "皮肤,肢体,面部特征,汽车,电线") + fps: int = 16 + # NOTE(will): default boundary timestep is tracked by PipelineConfig, but + # can be overridden during sampling diff --git a/fastvideo/layers/visual_embedding.py b/fastvideo/layers/visual_embedding.py index 9d9f0e20e..fe8792dc9 100644 --- a/fastvideo/layers/visual_embedding.py +++ b/fastvideo/layers/visual_embedding.py @@ -60,6 +60,61 @@ class PatchEmbed(nn.Module): return x +class WanCamControlPatchEmbedding(nn.Module): + """Lingbot World Patch embedding for Plucker features.""" + + def __init__( + self, + patch_size=(1, 2, 2), + in_chans=384, # 6 * 64 + embed_dim=2048, + bias=True, + dtype=None, + prefix: str = ""): + super().__init__() + # must be 3-tuple + if isinstance(patch_size, list | tuple): + if len(patch_size) != 3: + raise ValueError( + f"patch_size must have length 3, got {len(patch_size)}") + else: + raise ValueError(f"Unsupported patch_size type: {type(patch_size)}") + + self.patch_size = patch_size + pt, ph, pw = self.patch_size + self.in_features = in_chans * pt * ph * pw + self.proj = nn.Linear(self.in_features, + embed_dim, + bias=bias, + dtype=dtype) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + if x.dim() != 5: + raise ValueError( + f"Expected camera embedding shape [B, C, F, H, W], got {x.shape}" + ) + bsz, channels, frames, height, width = x.shape + pt, ph, pw = self.patch_size + if (frames % pt) != 0 or (height % ph) != 0 or (width % pw) != 0: + raise ValueError( + f"Input shape {x.shape} must be divisible by patch_size {self.patch_size}" + ) + + # '1 c (f c1) (h c2) (w c3) -> 1 (f h w) (c c1 c2 c3)', + x = x.view( + bsz, + channels, + frames // pt, + pt, + height // ph, + ph, + width // pw, + pw, + ) + x = x.permute(0, 2, 4, 6, 1, 3, 5, 7).reshape(bsz, -1, self.in_features) + return self.proj(x) + + class TimestepEmbedder(nn.Module): """ Embeds scalar timesteps into vector representations. @@ -252,4 +307,4 @@ class Timesteps(nn.Module): downscale_freq_shift=self.downscale_freq_shift, scale=self.scale, ) - return t_emb \ No newline at end of file + return t_emb diff --git a/fastvideo/models/dits/lingbotworld/__init__.py b/fastvideo/models/dits/lingbotworld/__init__.py new file mode 100644 index 000000000..40e5bb086 --- /dev/null +++ b/fastvideo/models/dits/lingbotworld/__init__.py @@ -0,0 +1,8 @@ +from .model import LingBotWorldTransformer3DModel + +__all__ = [ + "LingBotWorldTransformer3DModel", +] + +# Entry point for model registry +EntryClass = [LingBotWorldTransformer3DModel] diff --git a/fastvideo/models/dits/lingbotworld/cam_utils.py b/fastvideo/models/dits/lingbotworld/cam_utils.py new file mode 100644 index 000000000..3ac497b6e --- /dev/null +++ b/fastvideo/models/dits/lingbotworld/cam_utils.py @@ -0,0 +1,203 @@ +# SPDX-License-Identifier: Apache-2.0 +# Adapted from LingBot World: https://github.com/Robbyant/lingbot-world/blob/main/wan/utils/cam_utils.py + +import numpy as np +import os +import torch +from scipy.interpolate import interp1d +from scipy.spatial.transform import Rotation, Slerp + + +# --- Official Code (Leave Unchanged) --- + +def interpolate_camera_poses( + src_indices: np.ndarray, + src_rot_mat: np.ndarray, + src_trans_vec: np.ndarray, + tgt_indices: np.ndarray, +) -> torch.Tensor: + # interpolate translation + interp_func_trans = interp1d( + src_indices, + src_trans_vec, + axis=0, + kind='linear', + bounds_error=False, + fill_value="extrapolate", + ) + interpolated_trans_vec = interp_func_trans(tgt_indices) + + # interpolate rotation + src_quat_vec = Rotation.from_matrix(src_rot_mat) + # ensure there is no sudden change in qw + quats = src_quat_vec.as_quat().copy() # [N, 4] + for i in range(1, len(quats)): + if np.dot(quats[i], quats[i-1]) < 0: + quats[i] = -quats[i] + src_quat_vec = Rotation.from_quat(quats) + slerp_func_rot = Slerp(src_indices, src_quat_vec) + interpolated_rot_quat = slerp_func_rot(tgt_indices) + interpolated_rot_mat = interpolated_rot_quat.as_matrix() + + poses = np.zeros((len(tgt_indices), 4, 4)) + poses[:, :3, :3] = interpolated_rot_mat + poses[:, :3, 3] = interpolated_trans_vec + poses[:, 3, 3] = 1.0 + return torch.from_numpy(poses).float() + + +def SE3_inverse(T: torch.Tensor) -> torch.Tensor: + Rot = T[:, :3, :3] # [B,3,3] + trans = T[:, :3, 3:] # [B,3,1] + R_inv = Rot.transpose(-1, -2) + t_inv = -torch.bmm(R_inv, trans) + T_inv = torch.eye(4, device=T.device, dtype=T.dtype)[None, :, :].repeat(T.shape[0], 1, 1) + T_inv[:, :3, :3] = R_inv + T_inv[:, :3, 3:] = t_inv + return T_inv + + +def compute_relative_poses( + c2ws_mat: torch.Tensor, + framewise: bool = False, + normalize_trans: bool = True, +) -> torch.Tensor: + ref_w2cs = SE3_inverse(c2ws_mat[0:1]) + relative_poses = torch.matmul(ref_w2cs, c2ws_mat) + # ensure identity matrix for 1st frame + relative_poses[0] = torch.eye(4, device=c2ws_mat.device, dtype=c2ws_mat.dtype) + if framewise: + # compute pose between i and i+1 + relative_poses_framewise = torch.bmm(SE3_inverse(relative_poses[:-1]), relative_poses[1:]) + relative_poses[1:] = relative_poses_framewise + if normalize_trans: # note refer to camctrl2: "we scale the coordinate inputs to roughly 1 standard deviation to simplify model learning." + translations = relative_poses[:, :3, 3] # [f, 3] + max_norm = torch.norm(translations, dim=-1).max() + # only normlaize when moving + if max_norm > 0: + relative_poses[:, :3, 3] = translations / max_norm + return relative_poses + + +@torch.no_grad() +def create_meshgrid(n_frames: int, height: int, width: int, bias: float = 0.5, device='cuda', dtype=torch.float32) -> torch.Tensor: + x_range = torch.arange(width, device=device, dtype=dtype) + y_range = torch.arange(height, device=device, dtype=dtype) + grid_y, grid_x = torch.meshgrid(y_range, x_range, indexing='ij') + grid_xy = torch.stack([grid_x, grid_y], dim=-1).view([-1, 2]) + bias # [h*w, 2] + grid_xy = grid_xy[None, ...].repeat(n_frames, 1, 1) # [f, h*w, 2] + return grid_xy + + +def get_plucker_embeddings( + c2ws_mat: torch.Tensor, + Ks: torch.Tensor, + height: int, + width: int, +): + n_frames = c2ws_mat.shape[0] + grid_xy = create_meshgrid(n_frames, height, width, device=c2ws_mat.device, dtype=c2ws_mat.dtype) # [f, h*w, 2] + fx, fy, cx, cy = Ks.chunk(4, dim=-1) # [f, 1] + + i = grid_xy[..., 0] # [f, h*w] + j = grid_xy[..., 1] # [f, h*w] + zs = torch.ones_like(i) # [f, h*w] + xs = (i - cx) / fx * zs + ys = (j - cy) / fy * zs + + directions = torch.stack([xs, ys, zs], dim=-1) # [f, h*w, 3] + directions = directions / directions.norm(dim=-1, keepdim=True) # [f, h*w, 3] + + rays_d = directions @ c2ws_mat[:, :3, :3].transpose(-1, -2) # [f, h*w, 3] + rays_o = c2ws_mat[:, :3, 3] # [f, 3] + rays_o = rays_o[:, None, :].expand_as(rays_d) # [f, h*w, 3] + # rays_dxo = torch.cross(rays_o, rays_d, dim=-1) # [f, h*w, 3] + # note refer to: apt2 + plucker_embeddings = torch.cat([rays_o, rays_d], dim=-1) # [f, h*w, 6] + plucker_embeddings = plucker_embeddings.view([n_frames, height, width, 6]) # [f*h*w, 6] + return plucker_embeddings + + +def get_Ks_transformed( + Ks: torch.Tensor, + height_org: int, + width_org: int, + height_resize: int, + width_resize: int, + height_final: int, + width_final: int, +): + fx, fy, cx, cy = Ks.chunk(4, dim=-1) # [f, 1] + + scale_x = width_resize / width_org + scale_y = height_resize / height_org + + fx_resize = fx * scale_x + fy_resize = fy * scale_y + cx_resize = cx * scale_x + cy_resize = cy * scale_y + + crop_offset_x = (width_resize - width_final) / 2 + crop_offset_y = (height_resize - height_final) / 2 + + cx_final = cx_resize - crop_offset_x + cy_final = cy_resize - crop_offset_y + + Ks_transformed = torch.zeros_like(Ks) + Ks_transformed[:, 0:1] = fx_resize + Ks_transformed[:, 1:2] = fy_resize + Ks_transformed[:, 2:3] = cx_final + Ks_transformed[:, 3:4] = cy_final + + return Ks_transformed + + +# --- Custom --- + +def prepare_camera_embedding( + action_path: str, + num_frames: int, + height: int, + width: int, + spatial_scale: int = 8, +) -> tuple[torch.Tensor, int]: + c2ws = np.load(os.path.join(action_path, "poses.npy")) + len_c2ws = ((len(c2ws) - 1) // 4) * 4 + 1 + num_frames = min(num_frames, len_c2ws) + c2ws = c2ws[:num_frames] + + Ks = torch.from_numpy( + np.load(os.path.join(action_path, "intrinsics.npy")) + ).float() + Ks = get_Ks_transformed( + Ks, + height_org=480, + width_org=832, + height_resize=height, + width_resize=width, + height_final=height, + width_final=width, + ) + Ks = Ks[0] # use first frame + + len_c2ws = len(c2ws) + num_latent_frames = (len_c2ws - 1) // 4 + 1 + c2ws_infer = interpolate_camera_poses( + src_indices=np.linspace(0, len_c2ws - 1, len_c2ws), + src_rot_mat=c2ws[:, :3, :3], + src_trans_vec=c2ws[:, :3, 3], + tgt_indices=np.linspace(0, len_c2ws - 1, num_latent_frames), + ) + c2ws_infer = compute_relative_poses(c2ws_infer, framewise=True) + Ks = Ks.repeat(num_latent_frames, 1) + plucker = get_plucker_embeddings(c2ws_infer, Ks, height, width) # [F, H, W, 6] + + # reshpae + latent_height = height // spatial_scale + latent_width = width // spatial_scale + plucker = plucker.view(num_latent_frames, latent_height, spatial_scale, latent_width, spatial_scale, 6) + plucker = plucker.permute(0, 1, 3, 5, 2, 4).contiguous() + plucker = plucker.view(num_latent_frames, latent_height, latent_width, 6 * spatial_scale * spatial_scale) + c2ws_plucker_emb = plucker.permute(3, 0, 1, 2).contiguous().unsqueeze(0) + + return c2ws_plucker_emb, num_frames diff --git a/fastvideo/models/dits/lingbotworld/model.py b/fastvideo/models/dits/lingbotworld/model.py new file mode 100644 index 000000000..9b32a1e8a --- /dev/null +++ b/fastvideo/models/dits/lingbotworld/model.py @@ -0,0 +1,569 @@ +# SPDX-License-Identifier: Apache-2.0 + +import math +from contextlib import nullcontext +from typing import Any + +import numpy as np +import torch +import torch.nn as nn + +from fastvideo.attention import DistributedAttention +from fastvideo.configs.models.dits.lingbotworld import LingBotWorldVideoConfig +from fastvideo.configs.sample.wan import WanTeaCacheParams +from fastvideo.distributed.communication_op import ( + sequence_model_parallel_all_gather_with_unpad, + sequence_model_parallel_shard) +from fastvideo.forward_context import get_forward_context +from fastvideo.layers.layernorm import (FP32LayerNorm, LayerNormScaleShift, + RMSNorm, ScaleResidual, + ScaleResidualLayerNormScaleShift) +from fastvideo.layers.linear import ReplicatedLinear +# from torch.nn import RMSNorm +# TODO: RMSNorm .... +from fastvideo.layers.mlp import MLP +from fastvideo.layers.rotary_embedding import get_rotary_pos_embed +from fastvideo.layers.visual_embedding import (PatchEmbed, WanCamControlPatchEmbedding) +from fastvideo.logger import init_logger +from fastvideo.models.dits.base import CachableDiT +from fastvideo.models.dits.wanvideo import ( + WanI2VCrossAttention, + WanT2VCrossAttention, + WanTimeTextImageEmbedding, +) +from fastvideo.platforms import AttentionBackendEnum, current_platform + +from fastvideo.distributed.parallel_state import get_sp_world_size +from fastvideo.distributed.utils import create_attention_mask_for_padding + +logger = init_logger(__name__) + + +class LingBotWorldCamConditioner(nn.Module): + + def __init__(self, dim: int) -> None: + super().__init__() + self.cam_injector = MLP(dim, dim, dim, bias=True, act_type="silu") + self.cam_scale_layer = nn.Linear(dim, dim) + self.cam_shift_layer = nn.Linear(dim, dim) + + def forward( + self, + hidden_states: torch.Tensor, + c2ws_plucker_emb: torch.Tensor | None, + ) -> torch.Tensor: + if c2ws_plucker_emb is None: + return hidden_states + assert c2ws_plucker_emb.shape == hidden_states.shape, ( + f"c2ws_plucker_emb shape must match hidden_states shape, got " + f"{tuple(c2ws_plucker_emb.shape)} vs {tuple(hidden_states.shape)}" + ) + c2ws_hidden_states = self.cam_injector(c2ws_plucker_emb) + c2ws_hidden_states = c2ws_hidden_states + c2ws_plucker_emb + cam_scale = self.cam_scale_layer(c2ws_hidden_states) + cam_shift = self.cam_shift_layer(c2ws_hidden_states) + return (1.0 + cam_scale) * hidden_states + cam_shift + + +class LingBotWorldTransformerBlock(nn.Module): + + def __init__(self, + dim: int, + ffn_dim: int, + num_heads: int, + qk_norm: str = "rms_norm_across_heads", + cross_attn_norm: bool = False, + eps: float = 1e-6, + added_kv_proj_dim: int | None = None, + supported_attention_backends: tuple[AttentionBackendEnum, ...] + | None = None, + prefix: str = ""): + super().__init__() + + # 1. Self-attention + self.norm1 = FP32LayerNorm(dim, eps, elementwise_affine=False) + self.to_q = ReplicatedLinear(dim, dim, bias=True) + self.to_k = ReplicatedLinear(dim, dim, bias=True) + self.to_v = ReplicatedLinear(dim, dim, bias=True) + + self.to_out = ReplicatedLinear(dim, dim, bias=True) + self.attn1 = DistributedAttention( + num_heads=num_heads, + head_size=dim // num_heads, + causal=False, + supported_attention_backends=supported_attention_backends, + prefix=f"{prefix}.attn1") + self.hidden_dim = dim + self.num_attention_heads = num_heads + dim_head = dim // num_heads + if qk_norm == "rms_norm": + self.norm_q = RMSNorm(dim_head, eps=eps) + self.norm_k = RMSNorm(dim_head, eps=eps) + elif qk_norm == "rms_norm_across_heads": + # LTX applies qk norm across all heads + self.norm_q = RMSNorm(dim, eps=eps) + self.norm_k = RMSNorm(dim, eps=eps) + else: + raise NotImplementedError( + f"QK Norm type '{qk_norm}' not supported") + assert cross_attn_norm is True + self.self_attn_residual_norm = ScaleResidualLayerNormScaleShift( + dim, + norm_type="layer", + eps=eps, + elementwise_affine=True, + dtype=torch.float32, + compute_dtype=torch.float32) + + # 2. Cross-attention + if added_kv_proj_dim is not None: + # I2V + self.attn2 = WanI2VCrossAttention(dim, + num_heads, + qk_norm=qk_norm, + eps=eps) + else: + # T2V + self.attn2 = WanT2VCrossAttention(dim, + num_heads, + qk_norm=qk_norm, + eps=eps) + self.cross_attn_residual_norm = ScaleResidualLayerNormScaleShift( + dim, + norm_type="layer", + eps=eps, + elementwise_affine=False, + dtype=torch.float32, + compute_dtype=torch.float32) + + # 3. Feed-forward + self.ffn = MLP(dim, ffn_dim, act_type="gelu_pytorch_tanh") + self.mlp_residual = ScaleResidual() + + self.scale_shift_table = nn.Parameter(torch.randn(1, 6, dim) / dim**0.5) + self.cam_conditioner = LingBotWorldCamConditioner(dim) + + def forward( + self, + hidden_states: torch.Tensor, + encoder_hidden_states: torch.Tensor, + temb: torch.Tensor, + freqs_cis: tuple[torch.Tensor, torch.Tensor], + attention_mask: torch.Tensor | None = None, + c2ws_plucker_emb: torch.Tensor | None = None, + ) -> torch.Tensor: + if hidden_states.dim() == 4: + hidden_states = hidden_states.squeeze(1) + bs, seq_length, _ = hidden_states.shape + orig_dtype = hidden_states.dtype + # assert orig_dtype != torch.float32 + + if temb.dim() == 4: + # temb: batch_size, seq_len, 6, inner_dim (wan2.2 ti2v) + shift_msa, scale_msa, gate_msa, c_shift_msa, c_scale_msa, c_gate_msa = ( + self.scale_shift_table.unsqueeze(0) + temb.float() + ).chunk(6, dim=2) + # batch_size, seq_len, 1, inner_dim + shift_msa = shift_msa.squeeze(2) + scale_msa = scale_msa.squeeze(2) + gate_msa = gate_msa.squeeze(2) + c_shift_msa = c_shift_msa.squeeze(2) + c_scale_msa = c_scale_msa.squeeze(2) + c_gate_msa = c_gate_msa.squeeze(2) + else: + # temb: batch_size, 6, inner_dim (wan2.1/wan2.2 14B) + e = self.scale_shift_table + temb.float() + shift_msa, scale_msa, gate_msa, c_shift_msa, c_scale_msa, c_gate_msa = e.chunk( + 6, dim=1) + assert shift_msa.dtype == torch.float32 + + # 1. Self-attention + norm_hidden_states = (self.norm1(hidden_states.float()) * + (1 + scale_msa) + shift_msa).to(orig_dtype) + query, _ = self.to_q(norm_hidden_states) + key, _ = self.to_k(norm_hidden_states) + value, _ = self.to_v(norm_hidden_states) + + if self.norm_q is not None: + query = self.norm_q(query) + if self.norm_k is not None: + key = self.norm_k(key) + + query = query.squeeze(1).unflatten(2, (self.num_attention_heads, -1)) + key = key.squeeze(1).unflatten(2, (self.num_attention_heads, -1)) + value = value.squeeze(1).unflatten(2, (self.num_attention_heads, -1)) + + attn_output, _ = self.attn1(query, key, value, freqs_cis=freqs_cis, attention_mask=attention_mask) + attn_output = attn_output.flatten(2) + attn_output, _ = self.to_out(attn_output) + attn_output = attn_output.squeeze(1) + + null_shift = null_scale = torch.tensor([0], device=hidden_states.device) + norm_hidden_states, hidden_states = self.self_attn_residual_norm( + hidden_states, attn_output, gate_msa, null_shift, null_scale) + norm_hidden_states, hidden_states = norm_hidden_states.to( + orig_dtype), hidden_states.to(orig_dtype) + # Inject camera condition + # must be applied after the self-attention residual update. + hidden_states = self.cam_conditioner(hidden_states, c2ws_plucker_emb) + norm_hidden_states = self.self_attn_residual_norm.norm(hidden_states) + norm_hidden_states = norm_hidden_states.to(orig_dtype) + + # 2. Cross-attention + attn_output = self.attn2(norm_hidden_states, + context=encoder_hidden_states, + context_lens=None) + norm_hidden_states, hidden_states = self.cross_attn_residual_norm( + hidden_states, attn_output, 1, c_shift_msa, c_scale_msa) + norm_hidden_states, hidden_states = norm_hidden_states.to( + orig_dtype), hidden_states.to(orig_dtype) + + # 3. Feed-forward + ff_output = self.ffn(norm_hidden_states) + hidden_states = self.mlp_residual(hidden_states, ff_output, c_gate_msa) + hidden_states = hidden_states.to(orig_dtype) + + return hidden_states + + +class LingBotWorldTransformer3DModel(CachableDiT): + _fsdp_shard_conditions = LingBotWorldVideoConfig()._fsdp_shard_conditions + _compile_conditions = LingBotWorldVideoConfig()._compile_conditions + _supported_attention_backends = LingBotWorldVideoConfig( + )._supported_attention_backends + param_names_mapping = LingBotWorldVideoConfig().param_names_mapping + reverse_param_names_mapping = LingBotWorldVideoConfig().reverse_param_names_mapping + lora_param_names_mapping = LingBotWorldVideoConfig().lora_param_names_mapping + + def __init__(self, config: LingBotWorldVideoConfig, hf_config: dict[str, + Any]) -> None: + super().__init__(config=config, hf_config=hf_config) + + inner_dim = config.num_attention_heads * config.attention_head_dim + self.hidden_size = config.hidden_size + self.num_attention_heads = config.num_attention_heads + self.in_channels = config.in_channels + self.out_channels = config.out_channels + self.num_channels_latents = config.num_channels_latents + self.patch_size = config.patch_size + self.text_len = config.text_len + + assert config.num_attention_heads % get_sp_world_size() == 0, f"The number of attention heads ({config.num_attention_heads}) must be divisible by the sequence parallel size ({get_sp_world_size()})" + + # 1. Patch & position embedding + self.patch_embedding = PatchEmbed(in_chans=config.in_channels, + embed_dim=inner_dim, + patch_size=config.patch_size, + flatten=False) + self.patch_embedding_wancamctrl = WanCamControlPatchEmbedding(in_chans=6 * 64, + embed_dim=inner_dim, + patch_size=config.patch_size) + self.c2ws_mlp = MLP(inner_dim, inner_dim, inner_dim, bias=True, act_type="silu") + + # 2. Condition embeddings + self.condition_embedder = WanTimeTextImageEmbedding( + dim=inner_dim, + time_freq_dim=config.freq_dim, + text_embed_dim=config.text_dim, + image_embed_dim=config.image_dim, + ) + + # 3. Transformer blocks + transformer_block = LingBotWorldTransformerBlock + self.blocks = nn.ModuleList([ + transformer_block(inner_dim, + config.ffn_dim, + config.num_attention_heads, + config.qk_norm, + config.cross_attn_norm, + config.eps, + config.added_kv_proj_dim, + self._supported_attention_backends, + prefix=f"{config.prefix}.blocks.{i}") + for i in range(config.num_layers) + ]) + + # 4. Output norm & projection + self.norm_out = LayerNormScaleShift(inner_dim, + norm_type="layer", + eps=config.eps, + elementwise_affine=False, + dtype=torch.float32, + compute_dtype=torch.float32) + self.proj_out = nn.Linear( + inner_dim, config.out_channels * math.prod(config.patch_size)) + self.scale_shift_table = nn.Parameter( + torch.randn(1, 2, inner_dim) / inner_dim**0.5) + + self.gradient_checkpointing = False + self._logged_attention_mask = False + + # For type checking + self.previous_e0_even = None + self.previous_e0_odd = None + self.previous_residual_even = None + self.previous_residual_odd = None + self.is_even = True + self.should_calc_even = True + self.should_calc_odd = True + self.accumulated_rel_l1_distance_even = 0 + self.accumulated_rel_l1_distance_odd = 0 + self.cnt = 0 + self.__post_init__() + + def forward(self, + hidden_states: torch.Tensor, + encoder_hidden_states: torch.Tensor | list[torch.Tensor], + timestep: torch.LongTensor, + encoder_hidden_states_image: torch.Tensor | list[torch.Tensor] + | None = None, + guidance=None, + c2ws_plucker_emb: torch.Tensor | None = None, + **kwargs) -> torch.Tensor: + forward_batch = get_forward_context().forward_batch + enable_teacache = forward_batch is not None and forward_batch.enable_teacache + + orig_dtype = hidden_states.dtype + if encoder_hidden_states is not None and not isinstance(encoder_hidden_states, torch.Tensor): + encoder_hidden_states = encoder_hidden_states[0] + if isinstance(encoder_hidden_states_image, + list) and len(encoder_hidden_states_image) > 0: + encoder_hidden_states_image = encoder_hidden_states_image[0] + else: + encoder_hidden_states_image = None + + batch_size, num_channels, num_frames, height, width = hidden_states.shape + p_t, p_h, p_w = self.patch_size + post_patch_num_frames = num_frames // p_t + post_patch_height = height // p_h + post_patch_width = width // p_w + + # Get rotary embeddings + d = self.hidden_size // self.num_attention_heads + rope_dim_list = [d - 4 * (d // 6), 2 * (d // 6), 2 * (d // 6)] + freqs_cos, freqs_sin = get_rotary_pos_embed( + (post_patch_num_frames, post_patch_height, + post_patch_width), + self.hidden_size, + self.num_attention_heads, + rope_dim_list, + dtype=torch.float32 if current_platform.is_mps() else torch.float64, + rope_theta=10000) + freqs_cis = (freqs_cos.to(hidden_states.device).float(), + freqs_sin.to(hidden_states.device).float()) + + hidden_states = self.patch_embedding(hidden_states) + hidden_states = hidden_states.flatten(2).transpose(1, 2) + c2ws_hidden_states = None + if c2ws_plucker_emb is not None: + c2ws_plucker_emb = self.patch_embedding_wancamctrl( + c2ws_plucker_emb.to(device=hidden_states.device, dtype=hidden_states.dtype) + ) + c2ws_hidden_states = self.c2ws_mlp(c2ws_plucker_emb) + c2ws_plucker_emb = c2ws_plucker_emb + c2ws_hidden_states + + # Shard with padding support - returns (sharded_tensor, original_seq_len) + hidden_states, original_seq_len = sequence_model_parallel_shard(hidden_states, dim=1) + + # Shard c2ws_plucker_emb + if c2ws_plucker_emb is not None: + c2ws_plucker_emb, _ = sequence_model_parallel_shard(c2ws_plucker_emb, dim=1) + + # Create attention mask for padded tokens if padding was applied + current_seq_len = hidden_states.shape[1] + sp_world_size = get_sp_world_size() + padded_seq_len = current_seq_len * sp_world_size + + if padded_seq_len > original_seq_len: + if not self._logged_attention_mask: + logger.info(f"Padding applied, original seq len: {original_seq_len}, padded seq len: {padded_seq_len}") + self._logged_attention_mask = True + attention_mask = create_attention_mask_for_padding( + seq_len=original_seq_len, + padded_seq_len=padded_seq_len, + batch_size=batch_size, + device=hidden_states.device, + ) + else: + if not self._logged_attention_mask: + logger.info(f"Padding not applied") + self._logged_attention_mask = True + attention_mask = None + + # timestep shape: batch_size, or batch_size, seq_len (wan 2.2 ti2v) + if timestep.dim() == 2: + ts_seq_len = timestep.shape[1] + timestep = timestep.flatten() # batch_size * seq_len + else: + ts_seq_len = None + + temb, timestep_proj, encoder_hidden_states, encoder_hidden_states_image = self.condition_embedder( + timestep, encoder_hidden_states, encoder_hidden_states_image, timestep_seq_len=ts_seq_len) + if ts_seq_len is not None: + # batch_size, seq_len, 6, inner_dim + timestep_proj = timestep_proj.unflatten(2, (6, -1)) + else: + # batch_size, 6, inner_dim + timestep_proj = timestep_proj.unflatten(1, (6, -1)) + + if encoder_hidden_states_image is not None: + if encoder_hidden_states is not None: + encoder_hidden_states = torch.concat( + [encoder_hidden_states_image, encoder_hidden_states], dim=1) + else: + encoder_hidden_states = encoder_hidden_states_image + + if current_platform.is_mps() or current_platform.is_npu(): + encoder_hidden_states = encoder_hidden_states.to(orig_dtype) + else: + encoder_hidden_states = encoder_hidden_states # cast to orig_dtype for MPS & NPU + + assert encoder_hidden_states.dtype == orig_dtype + + # 4. Transformer blocks + # if caching is enabled, we might be able to skip the forward pass + should_skip_forward = self.should_skip_forward_for_cached_states( + timestep_proj=timestep_proj, temb=temb) + + if should_skip_forward: + print("skipping forward, cached") + hidden_states = self.retrieve_cached_states(hidden_states) + else: + # if teacache is enabled, we need to cache the original hidden states + if enable_teacache: + original_hidden_states = hidden_states.clone() + + if torch.is_grad_enabled() and self.gradient_checkpointing: + for block in self.blocks: + hidden_states = self._gradient_checkpointing_func( + block, hidden_states, encoder_hidden_states, + timestep_proj, freqs_cis, attention_mask, c2ws_plucker_emb) + else: + for block in self.blocks: + hidden_states = block(hidden_states, encoder_hidden_states, + timestep_proj, freqs_cis, attention_mask, c2ws_plucker_emb) + # if teacache is enabled, we need to cache the original hidden states + + if enable_teacache: + self.maybe_cache_states(hidden_states, original_hidden_states) + # 5. Output norm, projection & unpatchify + if temb.dim() == 3: + # batch_size, seq_len, inner_dim (wan 2.2 ti2v) + shift, scale = (self.scale_shift_table.unsqueeze(0) + temb.unsqueeze(2)).chunk(2, dim=2) + shift = shift.squeeze(2) + scale = scale.squeeze(2) + else: + # batch_size, inner_dim + shift, scale = (self.scale_shift_table + temb.unsqueeze(1)).chunk(2, dim=1) + + + hidden_states = self.norm_out(hidden_states, shift, scale) + + # Gather and unpad in one operation + hidden_states = sequence_model_parallel_all_gather_with_unpad( + hidden_states, original_seq_len, dim=1) + hidden_states = self.proj_out(hidden_states) + + hidden_states = hidden_states.reshape(batch_size, post_patch_num_frames, + post_patch_height, + post_patch_width, p_t, p_h, p_w, + -1) + hidden_states = hidden_states.permute(0, 7, 1, 4, 2, 5, 3, 6) + output = hidden_states.flatten(6, 7).flatten(4, 5).flatten(2, 3) + + return output + + def maybe_cache_states(self, hidden_states: torch.Tensor, + original_hidden_states: torch.Tensor) -> None: + if self.is_even: + self.previous_residual_even = hidden_states.squeeze( + 0) - original_hidden_states + else: + self.previous_residual_odd = hidden_states.squeeze( + 0) - original_hidden_states + + def should_skip_forward_for_cached_states(self, **kwargs) -> bool: + + forward_context = get_forward_context() + forward_batch = forward_context.forward_batch + if forward_batch is None or not forward_batch.enable_teacache: + return False + teacache_params = forward_batch.teacache_params + assert teacache_params is not None, "teacache_params is not initialized" + assert isinstance( + teacache_params, + WanTeaCacheParams), "teacache_params is not a WanTeaCacheParams" + current_timestep = forward_context.current_timestep + num_inference_steps = forward_batch.num_inference_steps + + # initialize the coefficients, cutoff_steps, and ret_steps + coefficients = teacache_params.coefficients + use_ret_steps = teacache_params.use_ret_steps + cutoff_steps = teacache_params.get_cutoff_steps(num_inference_steps) + ret_steps = teacache_params.ret_steps + teacache_thresh = teacache_params.teacache_thresh + + if current_timestep == 0: + self.cnt = 0 + + timestep_proj = kwargs["timestep_proj"] + temb = kwargs["temb"] + modulated_inp = timestep_proj if use_ret_steps else temb + + if self.cnt % 2 == 0: # even -> condition + self.is_even = True + if self.cnt < ret_steps or self.cnt >= cutoff_steps: + self.should_calc_even = True + self.accumulated_rel_l1_distance_even = 0 + else: + assert self.previous_e0_even is not None, "previous_e0_even is not initialized" + assert self.accumulated_rel_l1_distance_even is not None, "accumulated_rel_l1_distance_even is not initialized" + rescale_func = np.poly1d(coefficients) + self.accumulated_rel_l1_distance_even += rescale_func( + ((modulated_inp - self.previous_e0_even).abs().mean() / + self.previous_e0_even.abs().mean()).cpu().item()) + if self.accumulated_rel_l1_distance_even < teacache_thresh: + self.should_calc_even = False + else: + self.should_calc_even = True + self.accumulated_rel_l1_distance_even = 0 + self.previous_e0_even = modulated_inp.clone() + + else: # odd -> unconditon + self.is_even = False + if self.cnt < ret_steps or self.cnt >= cutoff_steps: + self.should_calc_odd = True + self.accumulated_rel_l1_distance_odd = 0 + else: + assert self.previous_e0_odd is not None, "previous_e0_odd is not initialized" + assert self.accumulated_rel_l1_distance_odd is not None, "accumulated_rel_l1_distance_odd is not initialized" + rescale_func = np.poly1d(coefficients) + self.accumulated_rel_l1_distance_odd += rescale_func( + ((modulated_inp - self.previous_e0_odd).abs().mean() / + self.previous_e0_odd.abs().mean()).cpu().item()) + if self.accumulated_rel_l1_distance_odd < teacache_thresh: + self.should_calc_odd = False + else: + self.should_calc_odd = True + self.accumulated_rel_l1_distance_odd = 0 + self.previous_e0_odd = modulated_inp.clone() + self.cnt += 1 + should_skip_forward = False + if self.is_even: + if not self.should_calc_even: + should_skip_forward = True + else: + if not self.should_calc_odd: + should_skip_forward = True + + return should_skip_forward + + def retrieve_cached_states(self, + hidden_states: torch.Tensor) -> torch.Tensor: + if self.is_even: + return hidden_states + self.previous_residual_even + else: + return hidden_states + self.previous_residual_odd + +# Entry point for model registry +EntryClass = LingBotWorldTransformer3DModel diff --git a/fastvideo/models/registry.py b/fastvideo/models/registry.py index 056aec4e4..fc48ddc17 100644 --- a/fastvideo/models/registry.py +++ b/fastvideo/models/registry.py @@ -38,6 +38,7 @@ _TEXT_TO_VIDEO_DIT_MODELS = { "LongCatTransformer3DModel": ("dits", "longcat", "LongCatTransformer3DModel"), # Native (Phase 2) "LTX2Transformer3DModel": ("dits", "ltx2", "LTX2Transformer3DModel"), "SD3Transformer2DModel": ("dits", "sd3", "SD3Transformer2DModel"), + "LingBotWorldTransformer3DModel": ("dits", "lingbotworld", "LingBotWorldTransformer3DModel"), } _IMAGE_TO_VIDEO_DIT_MODELS = { diff --git a/fastvideo/pipelines/basic/lingbotworld/__init__.py b/fastvideo/pipelines/basic/lingbotworld/__init__.py new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/fastvideo/pipelines/basic/lingbotworld/__init__.py @@ -0,0 +1 @@ + diff --git a/fastvideo/pipelines/basic/lingbotworld/lingbotworld_pipeline.py b/fastvideo/pipelines/basic/lingbotworld/lingbotworld_pipeline.py new file mode 100644 index 000000000..2e738b814 --- /dev/null +++ b/fastvideo/pipelines/basic/lingbotworld/lingbotworld_pipeline.py @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: Apache-2.0 +""" +Wan video diffusion pipeline implementation. + +This module contains an implementation of the Wan video diffusion pipeline +using the modular pipeline architecture. +""" + +from fastvideo.pipelines.basic.wan.wan_i2v_pipeline import WanImageToVideoPipeline + + +class LingBotWorldImageToVideoPipeline(WanImageToVideoPipeline): + pass + + +EntryClass = LingBotWorldImageToVideoPipeline diff --git a/fastvideo/pipelines/pipeline_batch_info.py b/fastvideo/pipelines/pipeline_batch_info.py index 601ceb7ac..fe3da6f90 100644 --- a/fastvideo/pipelines/pipeline_batch_info.py +++ b/fastvideo/pipelines/pipeline_batch_info.py @@ -136,6 +136,9 @@ class ForwardBatch: # Camera control inputs (HYWorld) pose: str | None = None # Camera trajectory: pose string (e.g., 'w-31') or JSON file path + # Camera control inputs (LingBotWorld) + c2ws_plucker_emb: torch.Tensor | None = None # Plucker embedding: [B, C, F_lat, H_lat, W_lat] + # Latent dimensions height_latents: list[int] | int | None = None width_latents: list[int] | int | None = None diff --git a/fastvideo/pipelines/stages/denoising.py b/fastvideo/pipelines/stages/denoising.py index 4776ea9b2..08ffba266 100644 --- a/fastvideo/pipelines/stages/denoising.py +++ b/fastvideo/pipelines/stages/denoising.py @@ -173,6 +173,7 @@ class DenoisingStage(PipelineStage): { "mouse_cond": batch.mouse_cond, "keyboard_cond": batch.keyboard_cond, + "c2ws_plucker_emb": batch.c2ws_plucker_emb, }, ) diff --git a/fastvideo/registry.py b/fastvideo/registry.py index aa1449233..c520be15f 100644 --- a/fastvideo/registry.py +++ b/fastvideo/registry.py @@ -22,6 +22,7 @@ from fastvideo.configs.pipelines.hunyuan15 import ( Hunyuan15T2V480PConfig, Hunyuan15I2V480PStepDistilledConfig, Hunyuan15T2V720PConfig, Hunyuan15I2V720PConfig, Hunyuan15SR1080PConfig) from fastvideo.configs.pipelines.hyworld import HYWorldConfig +from fastvideo.configs.pipelines.lingbotworld import LingBotWorldI2V480PConfig from fastvideo.configs.pipelines.longcat import LongCatT2V480PConfig from fastvideo.configs.pipelines.ltx2 import LTX2T2VConfig from fastvideo.configs.pipelines.stepvideo import StepVideoT2VConfig @@ -58,6 +59,7 @@ from fastvideo.configs.sample.hunyuan15 import ( Hunyuan15_720P_SamplingParam, Hunyuan15_720P_Distilled_I2V_SamplingParam, Hunyuan15_SR_1080P_SamplingParam) from fastvideo.configs.sample.hyworld import HYWorld_SamplingParam +from fastvideo.configs.sample.lingbotworld import LingBotWorld_SamplingParam from fastvideo.configs.sample.ltx2 import (LTX2BaseSamplingParam, LTX2DistilledSamplingParam) from fastvideo.configs.sample.stepvideo import StepVideoT2VSamplingParam @@ -343,6 +345,19 @@ def _register_configs() -> None: model_detectors=[lambda path: "hyworld" in path.lower()], ) + # LingBotWorld + register_configs( + sampling_param_cls=LingBotWorld_SamplingParam, + pipeline_config_cls=LingBotWorldI2V480PConfig, + hf_model_paths=[ + "FastVideo/LingBot-World-Base-Cam-Diffusers", + ], + model_detectors=[ + lambda path: + ("lingbotworld" in path.lower() or "lingbot-world" in path.lower()) + ], + ) + # LongCat register_configs( sampling_param_cls=None, diff --git a/fastvideo/tests/ssim/L40S_reference_videos/LingBot-World-Base-Cam-Diffusers/FLASH_ATTN/The video presents a soaring journey through a fantasy jungle. The wind whips past the rider's blue.mp4 b/fastvideo/tests/ssim/L40S_reference_videos/LingBot-World-Base-Cam-Diffusers/FLASH_ATTN/The video presents a soaring journey through a fantasy jungle. The wind whips past the rider's blue.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..9c0f925b81fcce5a9ff45bc98b6df280c67c0dbd GIT binary patch literal 196086 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%0AMbmOvU3zV2M?r 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 str | None: + script_dir = os.path.dirname(os.path.abspath(__file__)) + repo_root = os.path.abspath(os.path.join(script_dir, "..", "..", "..")) + candidates = [ + os.path.join(repo_root, "examples", "inference", "basic", + "lingbotworld_examples"), + os.path.join(repo_root, "..", "FastVideo", "examples", "inference", + "basic", "lingbotworld_examples"), + ] + for candidate in candidates: + if (os.path.exists(os.path.join(candidate, "00", "poses.npy")) + and os.path.exists( + os.path.join(candidate, "00", "intrinsics.npy"))): + return os.path.abspath(candidate) + return None + + +device_name = torch.cuda.get_device_name() +device_reference_folder_suffix = "_reference_videos" + +if "A40" in device_name: + device_reference_folder = "A40" + device_reference_folder_suffix +elif "L40S" in device_name: + device_reference_folder = "L40S" + device_reference_folder_suffix +elif "H100" in device_name: + device_reference_folder = "H100" + device_reference_folder_suffix +else: + device_reference_folder = None + logger.warning("Unsupported device for ssim tests: %s", device_name) + + +LINGBOT_PARAMS = { + "model_path": "FastVideo/LingBot-World-Base-Cam-Diffusers", + "num_gpus": 2, + "height": 256, + "width": 448, + "num_frames": 45, # must be 4k+1 + "num_inference_steps": 4, + "guidance_scale": 5.0, + "guidance_scale_2": 5.0, + "embedded_cfg_scale": 6, + "flow_shift": 10.0, + "boundary_ratio": 0.947, + "seed": 42, + "fps": 16, + "spatial_scale": 8, + "example_case": "00", + "image_path": ( + "https://raw.githubusercontent.com/Robbyant/lingbot-world/main/" + "examples/00/image.jpg" + ), + "negative_prompt": ( + "画面突变,色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰," + "最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部," + "畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走," + "镜头晃动,画面闪烁,模糊,噪点,水印,签名,文字,变形,扭曲,液化,不合逻辑的结构,卡顿," + "PPT幻灯片感,过暗,欠曝,低对比度,霓虹灯光感,过度锐化,3D渲染感,人物,行人,游客,身体," + "皮肤,肢体,面部特征,汽车,电线" + ), +} + +TEST_PROMPTS = [ + "The video presents a soaring journey through a fantasy jungle. The wind " + "whips past the rider's blue hands gripping the reins, causing the leather " + "straps to vibrate. The ancient gothic castle approaches steadily, its stone " + "details becoming clearer against the backdrop of floating islands and " + "distant waterfalls.", +] + + +@pytest.mark.parametrize("prompt", TEST_PROMPTS) +@pytest.mark.parametrize("ATTENTION_BACKEND", ["FLASH_ATTN"]) +def test_lingbot_i2v_similarity(prompt: str, ATTENTION_BACKEND: str): + os.environ["FASTVIDEO_ATTENTION_BACKEND"] = ATTENTION_BACKEND + + if device_reference_folder is None: + pytest.skip(f"Unsupported device for LingBot SSIM test: {device_name}") + if torch.cuda.device_count() < LINGBOT_PARAMS["num_gpus"]: + pytest.skip( + f"LingBot SSIM test requires {LINGBOT_PARAMS['num_gpus']} GPUs, " + f"but only {torch.cuda.device_count()} detected." + ) + + examples_root = _find_lingbotworld_examples_root() + if examples_root is None: + pytest.skip( + "lingbotworld_examples not found under examples/inference/basic.") + + action_path = os.path.join(examples_root, LINGBOT_PARAMS["example_case"]) + if not (os.path.exists(os.path.join(action_path, "poses.npy")) + and os.path.exists(os.path.join(action_path, "intrinsics.npy"))): + pytest.skip(f"Missing camera npy files under {action_path}") + + c2ws_plucker_emb, aligned_num_frames = prepare_camera_embedding( + action_path=action_path, + num_frames=LINGBOT_PARAMS["num_frames"], + height=LINGBOT_PARAMS["height"], + width=LINGBOT_PARAMS["width"], + spatial_scale=LINGBOT_PARAMS["spatial_scale"], + ) + + script_dir = os.path.dirname(os.path.abspath(__file__)) + model_id = "LingBot-World-Base-Cam-Diffusers" + output_dir = os.path.join(script_dir, "generated_videos", model_id, + ATTENTION_BACKEND) + output_video_name = f"{prompt[:100].strip()}.mp4" + os.makedirs(output_dir, exist_ok=True) + + init_kwargs = { + "num_gpus": LINGBOT_PARAMS["num_gpus"], + "flow_shift": LINGBOT_PARAMS["flow_shift"], + "boundary_ratio": LINGBOT_PARAMS["boundary_ratio"], + "use_fsdp_inference": True, + "dit_cpu_offload": True, + "dit_layerwise_offload": False, + "text_encoder_cpu_offload": True, + "vae_cpu_offload": False, + "pin_cpu_memory": True, + } + generation_kwargs = { + "output_path": output_dir, + "image_path": LINGBOT_PARAMS["image_path"], + "height": LINGBOT_PARAMS["height"], + "width": LINGBOT_PARAMS["width"], + "num_frames": aligned_num_frames, + "num_inference_steps": LINGBOT_PARAMS["num_inference_steps"], + "guidance_scale": LINGBOT_PARAMS["guidance_scale"], + "guidance_scale_2": LINGBOT_PARAMS["guidance_scale_2"], + "embedded_cfg_scale": LINGBOT_PARAMS["embedded_cfg_scale"], + "seed": LINGBOT_PARAMS["seed"], + "fps": LINGBOT_PARAMS["fps"], + "negative_prompt": LINGBOT_PARAMS["negative_prompt"], + "c2ws_plucker_emb": c2ws_plucker_emb, + } + + generator: VideoGenerator | None = None + try: + generator = VideoGenerator.from_pretrained( + model_path=LINGBOT_PARAMS["model_path"], **init_kwargs) + generator.generate_video(prompt, **generation_kwargs) + finally: + if generator is not None: + generator.shutdown() + + generated_video_path = os.path.join(output_dir, output_video_name) + assert os.path.exists(generated_video_path), ( + f"Output video was not generated at {generated_video_path}") + + reference_folder = os.path.join(script_dir, device_reference_folder, model_id, + ATTENTION_BACKEND) + if not os.path.exists(reference_folder): + raise FileNotFoundError( + f"Reference video folder does not exist: {reference_folder}") + + reference_video_name = None + for filename in os.listdir(reference_folder): + if filename.endswith(".mp4") and prompt[:100].strip() in filename: + reference_video_name = filename + break + if not reference_video_name: + raise FileNotFoundError( + f"Reference video missing for prompt/backend under {reference_folder}" + ) + + reference_video_path = os.path.join(reference_folder, reference_video_name) + logger.info("Computing SSIM between %s and %s", reference_video_path, + generated_video_path) + ssim_values = compute_video_ssim_torchvision(reference_video_path, + generated_video_path, + use_ms_ssim=True) + mean_ssim = ssim_values[0] + logger.info("SSIM mean value: %s", mean_ssim) + + write_ssim_results(output_dir, ssim_values, reference_video_path, + generated_video_path, + LINGBOT_PARAMS["num_inference_steps"], prompt) + + min_acceptable_ssim = 0.90 + assert mean_ssim >= min_acceptable_ssim, ( + f"SSIM value {mean_ssim} is below threshold {min_acceptable_ssim} " + f"for {model_id} with backend {ATTENTION_BACKEND}")