Diffusers documentation

SanaWMTransformer3DModel

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SanaWMTransformer3DModel

Diffusion Transformer 3D (1,6 miliar parameter) untuk generasi gambar-ke-video dengan kontrol kamera, digunakan sebagai sampler tahap-1 dari SanaWMPipeline. Transformer ini menggabungkan:

  • cabang utama perhatian linear GDN-Triton bidireksional (kedalaman 20, tersembunyi 2240, 20 kepala),
  • cabang kontrol kamera UCPE (Unified Camera Pose Embedding) yang mengonsumsi representasi raymap + Plücker dari trayektori yang diminta, dan
  • embedding posisi rotasi 3D bergaya Wan ditambah blok softmax-attention periodik yang disuntikkan setiap softmax_every_n lapisan.

Model dapat dimuat dengan:

import torch
from diffusers import SanaWMTransformer3DModel

transformer = SanaWMTransformer3DModel.from_pretrained(
    "Efficient-Large-Model/SANA-WM_bidirectional-diffusers",
    subfolder="transformer",
    torch_dtype=torch.bfloat16,
)

SanaWMTransformer3DModel

kelas diffusers.SanaWMTransformer3DModel

< >

( in_channels: int = 128num_layers: int = 20hidden_size: int = 2240num_attention_heads: int = 20patch_size: tuple[int, int, int] = (1, 1, 1)softmax_every_n: int = 4linear_head_dim: int = 112ffn_type: str = 'GLUMBConvTemp't_kernel_size: int = 3conv_kernel_size: int = 4k_conv_only: bool = Truepos_embed_type: str = 'wan_rope'qk_norm: bool = Truecross_norm: bool = Truey_norm: bool = Truecam_attn_compress: int = 1init_cam_from_base: bool = Trueuse_chunk_plucker_post_attn: bool = Truechunk_plucker_channels: int = 48chunk_plucker_post_attn_blocks: int = 20fp32_attention: bool = Trueimage_size: int = 720caption_channels: int = 2304mlp_ratio: float = 3.0mlp_acts: tuple = ('silu', 'silu', None)use_pe: bool = Truelearn_sigma: bool = Falsepred_sigma: bool = Falsemixed_precision: str = 'bf16' )

Parameter

  • in_channels (int, default 128) — Kanal laten VAE (LTX-2).
  • softmax_every_n (int, defaultnya 4) — Gunakan blok perhatian softmax setiap N blok.
  • linear_head_dim (int, default 112) — Dimensi head GDN.
  • ffn_type (str, defaultnya "GLUMBConvTemp") — FFN.
  • t_kernel_size (int, defaultnya 3) — Kernel konvolusi temporal.
  • conv_kernel_size (int, default 4) — Kernel konvolusi spasial di dalam attention.
  • k_conv_only (bool, defaultnya True) — Terapkan conv hanya pada K.
  • pos_embed_type (str, defaultnya "wan_rope") — Position embedding.
  • qk_norm (bool, defaultnya True) — RMSNorm pada Q/K.
  • cross_norm (bool, defaultnya True) — RMSNorm pada K cross-attention.
  • y_norm (bool, defaultnya True) — Terapkan attention_y_norm ke embedding teks.
  • init_cam_from_base (bool, default True) — Tidak digunakan; cabang kamera dimuat dari checkpoint. Dipertahankan agar file config.json yang dirilis dapat dimuat.
  • use_chunk_plucker_post_attn (bool, defaultnya True). —
  • chunk_plucker_channels (int, default 48) — 6 dims * temporal_stride 8.
  • chunk_plucker_post_attn_blocks (int, defaultnya 20) — Semua blok.
  • fp32_attention (bool, defaultnya True) — Tidak digunakan; attention selalu berjalan dalam fp32. Dipertahankan agar file config.json yang dirilis dapat dimuat.
  • image_size (int, defaultnya 720) — Ukuran nominal gambar.
  • caption_channels (int, defaultnya 2304) — ukuran tersembunyi Gemma-2.

SANA-WM 1600M DiT bidireksional yang dikendalikan kamera.

DiT satu kelas (depth=20, hidden_size=2240, patch_size=(1,1,1), num_heads=20 — yaitu rilis publik Efficient-Large-Model/SANA-WM_bidirectional). save_pretrained / from_pretrained berfungsi langsung melalui ConfigMixin.

Setiap blok menjalankan perhatian yang dikondisikan kamera (UCPE): [BidirectionalGDNUCPESinglePathLiteLA], kecuali setiap blok ke-softmax_every_n yang menjalankan padanan softmax-nya [_SoftmaxUCPESinglePathLiteLA].

State-dict identik dengan checkpoint sana publik, kecuali buffer pos_embed yang sengaja dihapus.

forward

< >

( hidden_states: torch.Tensortimestep: torch.Tensorencoder_hidden_states: torch.Tensorencoder_attention_mask: torch.Tensor | None = Nonemask: torch.Tensor | None = Nonereturn_dict: bool = Truedata_info: Optional[dict] = Nonecamera_conditions: torch.Tensor | None = Nonechunk_plucker: torch.Tensor | None = Nonecam_pos_embeds: Optional[dict] = Nonepos_embeds: torch.Tensor | None = Noneraymats: torch.Tensor | None = Noneframe_valid_mask: torch.Tensor | None = Nonechunk_size: int | None = None )

Parameter

  • hidden_states — latents (B, C, T, H, W).
  • timestep — (B, 1, T) timestep difusi per-frame (gaya LTX).
  • encoder_hidden_states — embedding teks (B, 1, L, D_caption).
  • encoder_attention_mask — (B, L) mask perhatian teks (konvensi diffusers).
  • mask — Alias untuk encoder_attention_mask yang sesuai dengan nama kwarg DiT sana. Jika keduanya diteruskan, mask yang diprioritaskan.
  • return_dict — Jika True (default), mengembalikan Transformer2DModelOutput; jika tidak, mengembalikan satu tuple (sample,).
  • data_info — Kondisioning tambahan; data_info["image_vae_embeds"] digabungkan ke latents sepanjang sumbu channel jika ada.
  • camera_conditions — (B, T, 20) kondisi kamera mentah yang menggerakkan cabang kontrol kamera (UCPE).
  • chunk_plucker — Plucker ray embeddings (B, C, T, H, W), digunakan ketika model dikonfigurasi dengan use_chunk_plucker_input / use_chunk_plucker_post_attn.
  • cam_pos_embeds — Embedding posisi kamera yang sudah dihitung sebelumnya (entri "absmap" / "P") yang digunakan kembali alih-alih dihitung ulang.
  • pos_embeds — Embedding posisi rotasi yang sudah dihitung sebelumnya (opsional); jika None, embedding ini dibangun dari bentuk laten.
  • raymats — Matriks ray UCPE yang sudah dihitung sebelumnya (hanya digunakan ketika cam_pos_embeds tidak membawa "P").
  • frame_valid_mask — Mask validitas per frame opsional, berbentuk (B, 1, T, 1, 1), (B, 1, T) atau (B, T).
  • chunk_size — Penggantian panjang chunk yang diteruskan ke blok; kembali ke chunk_size yang dikonfigurasi untuk masing-masing blok.

Jalankan SANA-WM DiT.

unpatchify

< >

( xpost_patch_num_framespost_patch_heightpost_patch_width )

x: (N, T, patch_size*2 C) imgs: (N, H, W, C)

Transformer2DModelOutput

kelas diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

Parameter

  • sample (torch.Tensor dengan bentuk (batch_size, num_channels, height, width) atau (batch size, num_vector_embeds - 1, num_latent_pixels) jika Transformer2DModel bersifat diskrit) — Output hidden states yang dikondisikan pada input encoder_hidden_states. Jika diskrit, mengembalikan distribusi probabilitas untuk latent pixels yang tidak berisik.

Output dari Transformer2DModel.

Update on GitHub