Diffusers documentation
SanaWMTransformer3DModel
SanaWMTransformer3DModel
Một Diffusion Transformer 3D (1,6 tỷ tham số) cho việc tạo video từ hình ảnh có điều khiển bởi camera, được dùng làm trình lấy mẫu giai đoạn 1 của SanaWMPipeline. Transformer này kết hợp:
- một nhánh chính của GDN-Triton linear-attention hai chiều (độ sâu 20, ẩn 2240, 20 đầu),
- một nhánh điều khiển camera UCPE (Unified Camera Pose Embedding) nhận vào biểu diễn raymap + Plücker của quỹ đạo được yêu cầu, và
- một embedding vị trí xoay 3D theo phong cách Wan cùng các khối softmax-attention tuần hoàn được chèn vào mỗi
softmax_every_nlớp.
Mô hình có thể được tải bằng cách:
import torch
from diffusers import SanaWMTransformer3DModel
transformer = SanaWMTransformer3DModel.from_pretrained(
"Efficient-Large-Model/SANA-WM_bidirectional-diffusers",
subfolder="transformer",
torch_dtype=torch.bfloat16,
)SanaWMTransformer3DModel
lớp diffusers.SanaWMTransformer3DModel
< source >( 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' )
Tham số
- in_channels (int, mặc định là 128) — Kênh latent của VAE (LTX-2).
- softmax_every_n (int, mặc định là 4) — Sử dụng một khối chú ý softmax mỗi N khối.
- linear_head_dim (int, mặc định là 112) — Kích thước đầu GDN.
- ffn_type (str, mặc định là
"GLUMBConvTemp") — FFN. - t_kernel_size (int, mặc định là 3) — Nhân conv theo chiều thời gian.
- conv_kernel_size (int, mặc định là 4) — Kích thước nhân conv không gian bên trong attention.
- k_conv_only (bool, mặc định là True) — Chỉ áp dụng conv lên K.
- pos_embed_type (str, mặc định là
"wan_rope") — Nhúng vị trí. - qk_norm (bool, mặc định là True) — RMSNorm trên Q/K.
- cross_norm (bool, mặc định là True) — RMSNorm trên K của cross-attention.
- y_norm (bool, mặc định là True) — Áp dụng
attention_y_normcho các embedding văn bản. - init_cam_from_base (bool, mặc định là True) — Không được sử dụng; nhánh camera được nạp từ checkpoint. Được giữ lại để các tệp config.json đã phát hành có thể nạp được.
- use_chunk_plucker_post_attn (bool, mặc định là True). —
- chunk_plucker_channels (int, mặc định là 48) —
6 dims * temporal_stride 8. - chunk_plucker_post_attn_blocks (int, mặc định là 20) — Tất cả các khối.
- fp32_attention (bool, mặc định là True) — Không được sử dụng; attention luôn chạy ở fp32. Được giữ lại để các tệp config.json đã phát hành có thể được nạp.
- image_size (int, mặc định là 720) — Kích thước ảnh danh định.
- caption_channels (int, mặc định là 2304) — Kích thước ẩn của Gemma-2.
SANA-WM 1600M DiT hai chiều điều khiển bằng camera.
DiT một lớp (depth=20, hidden_size=2240, patch_size=(1,1,1), num_heads=20 — tức là bản phát hành công khai Efficient-Large-Model/SANA-WM_bidirectional). save_pretrained / from_pretrained hoạt động ngay lập tức thông qua ConfigMixin.
Mỗi khối thực hiện chú ý có điều kiện camera (UCPE) [BidirectionalGDNUCPESinglePathLiteLA], ngoại trừ mỗi khối thứ softmax_every_n thực hiện phiên bản softmax tương ứng [_SoftmaxUCPESinglePathLiteLA].
State-dict giống hệt checkpoint sana công khai, ngoại trừ buffer pos_embed bị loại bỏ một cách có chủ đích.
forward
< source >( 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 )
Tham số
- hidden_states — latents có kích thước
(B, C, T, H, W). - timestep —
(B, 1, T)các bước khuếch tán (timesteps) cho từng khung hình (theo phong cách LTX). - encoder_hidden_states —
(B, 1, L, D_caption)các vector nhúng văn bản. - encoder_attention_mask —
(B, L)mặt nạ chú ý văn bản (quy ước của diffusers). - mask — Tên gọi khác của
encoder_attention_maskđể khớp với tên tham số kwarg của DiT sana. Nếu cả hai đều được truyền vào,masksẽ được ưu tiên. - return_dict — Nếu
True(mặc định), trả về mộtTransformer2DModelOutput; nếu không, trả về một one-tuple(sample,). - data_info — Điều kiện bổ sung;
data_info["image_vae_embeds"]được nối vào các latents dọc theo trục kênh khi có mặt. - camera_conditions —
(B, T, 20)điều kiện camera thô điều khiển nhánh camera-control (UCPE). - chunk_plucker — Nhúng tia Plucker
(B, C, T, H, W), được sử dụng khi mô hình được cấu hình vớiuse_chunk_plucker_input/use_chunk_plucker_post_attn. - cam_pos_embeds — Các embedding vị trí camera đã tính trước (tùy chọn)
(các mục
"absmap"/"P") được tái sử dụng thay vì tính lại. - pos_embeds — Các embedding vị trí xoay (rotary position embeddings) đã được tính toán trước, tùy chọn; khi
None, chúng sẽ được xây dựng từ hình dạng của latent. - raymats — Ma trận tia UCPE đã tính trước tùy chọn (chỉ được sử dụng khi
cam_pos_embedskhông chứa"P"). - frame_valid_mask — Mặt nạ hợp lệ cho từng khung hình tùy chọn, có hình dạng
(B, 1, T, 1, 1),(B, 1, T)hoặc(B, T). - chunk_size — Độ dài chunk ghi đè được chuyển tiếp đến các khối; nếu không có thì dùng
chunk_sizeđã cấu hình của từng khối.
Chạy SANA-WM DiT.
x: (N, T, patch_size*2 C) imgs: (N, H, W, C)
Transformer2DModelOutput
lớp diffusers.models.modeling_outputs.Transformer2DModelOutput
< source >( sample: torch.Tensor )
Tham số
- sample (
torch.Tensorcó hình dạng(batch_size, num_channels, height, width)hoặc(batch size, num_vector_embeds - 1, num_latent_pixels)nếu Transformer2DModel là rời rạc) — Trạng thái ẩn đầu ra được điều kiện bởi đầu vàoencoder_hidden_states. Nếu là rời rạc, trả về các phân phối xác suất cho các pixel tiềm ẩn không nhiễu.
Đầu ra của Transformer2DModel.