{"repo": "amd-agi/hummingbirdxt", "files": {"HummingbirdXT_VSA/amd_VSA/FastVideo/fastvideo/configs/pipelines/hunyuangamecraft.py": {"929e90a26c2d023c89f4428aa43869c88817a55e": {"t": 1785768885.1057193, "n": 3138, "h": "c0e5117d0fcd572a", "c": "# download from https://github.com/hao-ai-lab/FastVideo.git\n\n# SPDX-License-Identifier: Apache-2.0\n\"\"\"\nPipeline configuration for HunyuanGameCraft.\n\nHunyuanGameCraft extends HunyuanVideo with:\n1. CameraNet for camera/action conditioning (Plücker coordinates)\n2. Mask-based conditioning for autoregressive generation\n3. 33 input channels (16 latent + 16 gt_latent + 1 mask)\n\nText encoders are the same as HunyuanVideo:\n- LLaVA-LLaMA-3-8B for primary text encoding (4096 dim)\n- CLIP ViT-L/14 for secondary pooled embeddings (768 dim)\n\"\"\"\nfrom collections.abc import Callable\nfrom dataclasses import dataclass, field\n\nimport torch\n\nfrom fastvideo.configs.models import DiTConfig, EncoderConfig, VAEConfig\nfrom fastvideo.configs.models.dits import HunyuanGameCraftConfig\nfrom fastvideo.configs.models.encoders import (BaseEncoderOutput, CLIPTextConfig, LlamaConfig)\nfrom fastvideo.configs.models.vaes import GameCraftVAEConfig\nfrom fastvideo.configs.pipelines.base import PipelineConfig\nfrom fastvideo.configs.pipelines.hunyuan import (clip_postprocess_text, clip_preprocess_text, llama_postprocess_text,\n llama_preprocess_text)\n\n\n@dataclass\nclass HunyuanGameCraftPipelineConfig(PipelineConfig):\n \"\"\"Configuration for HunyuanGameCraft pipeline.\n \n Inherits text encoding from HunyuanVideo but uses:\n - GameCraft DiT with CameraNet\n - Same VAE (HunyuanVAE)\n - Same text encoders (LLaMA + CLIP)\n \"\"\"\n\n # DiT config - uses GameCraft config (33 input channels)\n dit_config: DiTConfig = field(default_factory=HunyuanGameCraftConfig)\n\n # VAE config - GameCraft VAE (mid_block_causal_attn=True, etc.)\n vae_config: VAEConfig = field(default_factory=GameCraftVAEConfig)\n\n # Denoising parameters\n # Official GameCraft does NOT use embedded guidance (passes guidance=None)\n # It uses standard CFG with guidance_scale=6.0 instead\n embedded_cfg_scale = None\n flow_shift: int = 5 # Official GameCraft uses flow_shift=5.0\n\n # Text encoding stage - same as HunyuanVideo\n # Uses LLaMA-3-8B (via LLaVA) + CLIP\n text_encoder_configs: tuple[EncoderConfig, ...] = field(default_factory=lambda: (LlamaConfig(), CLIPTextConfig()))\n preprocess_text_funcs: tuple[Callable[[str], str],\n ...] = field(default_factory=lambda: (llama_preprocess_text, clip_preprocess_text))\n postprocess_text_funcs: tuple[Callable[[BaseEncoderOutput], torch.Tensor],\n ...] = field(default_factory=lambda: (llama_postprocess_text, clip_postprocess_text))\n\n # Precision for each component\n dit_precision: str = \"bf16\"\n vae_precision: str = \"fp16\"\n text_encoder_precisions: tuple[str, ...] = field(default_factory=lambda: (\"fp16\", \"fp16\"))\n\n def __post_init__(self):\n # VAE only needs decoder for inference\n self.vae_config.load_encoder = False\n self.vae_config.load_decoder = True\n if self.text_encoder_configs:\n # Hunyuan postprocess consumes intermediate LLaMA hidden states.\n self.text_encoder_configs[0].arch_config.output_hidden_states = True\n"}}}}