Diffusers documentation
SanaWMTransformer3DModel
SanaWMTransformer3DModel
Kamera kontrollü görüntüden video üretimi için 3B Boyutlu Difüzyon Transformer'ı (1.6B parametre), SanaWMPipeline'ın 1. aşama örnekleyicisi olarak kullanılır. Transformer şunları birleştirir:
- çift yönlü GDN-Triton doğrusal-dikkat ana dalı (derinlik 20, gizli 2240, 20 baş),
- istenen yörünge için bir ışın haritası + Plücker temsilini tüketen bir UCPE (Unified Camera Pose Embedding) kamera kontrol dalı ve
- her
softmax_every_nkatmanda enjekte edilen Wan tarzı 3D döner konum gömme ve periyodik softmax-dikkat blokları.
Model şu şekilde yüklenebilir:
import torch
from diffusers import SanaWMTransformer3DModel
transformer = SanaWMTransformer3DModel.from_pretrained(
"Efficient-Large-Model/SANA-WM_bidirectional-diffusers",
subfolder="transformer",
torch_dtype=torch.bfloat16,
)SanaWMTransformer3DModel
sınıf 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' )
Parametreler
- in_channels (int, varsayılan 128) — VAE gizli kanalları (LTX-2).
- softmax_every_n (int, varsayılan 4) — Her N bloktan birinde softmax dikkat bloğu kullanın.
- linear_head_dim (int, varsayılan 112) — GDN baş boyutu.
- ffn_type (str, varsayılan
"GLUMBConvTemp") — FFN. - t_kernel_size (int, varsayılan 3) — Zamanlama konvolüsyon çekirdeği.
- conv_kernel_size (int, varsayılan 4) — Dikkat içindeki uzamsal konvolüsyon çekirdeği.
- k_conv_only (bool, varsayılan olarak True) — Conv yalnızca K üzerinde uygulanır.
- pos_embed_type (str, varsayılan
"wan_rope") — Konum gömme. - qk_norm (bool, varsayılan True) — Q/K üzerinde RMSNorm.
- cross_norm (bool, varsayılan True) — Çapraz dikkat K'si üzerinde RMSNorm.
- y_norm (bool, varsayılan True) — Metin gömcelerine
attention_y_normuygulayın. - init_cam_from_base (bool, varsayılan True) — Kullanılmıyor; kamera dalı checkpoint'ten yüklenir. Yayınlanan config.json dosyalarının yüklenmesi için korunur.
- use_chunk_plucker_post_attn (bool, varsayılan olarak True). —
- chunk_plucker_channels (int, varsayılan 48) —
6 dims * temporal_stride 8. - chunk_plucker_post_attn_blocks (int, varsayılan 20) — Tüm bloklar.
- fp32_attention (bool, varsayılan olarak True) — Kullanılmıyor; attention her zaman fp32'de çalışır. Yayımlanan config.json dosyalarının yüklenmesi için korunur.
- image_size (int, varsayılan 720) — Nominal görüntü boyutu.
- caption_channels (int, varsayılan 2304) — Gemma-2 gizli boyutu.
SANA-WM 1600M çift yönlü kamera kontrollü DiT.
Tek sınıf DiT (depth=20, hidden_size=2240, patch_size=(1,1,1), num_heads=20 — yani halka açık Efficient-Large-Model/SANA-WM_bidirectional sürümü). save_pretrained / from_pretrained, ConfigMixin sayesinde kutudan çıktığı gibi çalışır.
Her blok, her softmax_every_n-inci blok hariç olmak üzere, kamera koşullu (UCPE) dikkat mekanizmasını [BidirectionalGDNUCPESinglePathLiteLA] çalıştırır; bu istisna bloklar ise softmax karşılığını [_SoftmaxUCPESinglePathLiteLA] çalıştırır.
State-dict, bilinçli olarak kaldırılan pos_embed tamponu dışında, herkese açık sana checkpoint'i ile birebir aynıdır.
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 )
Parametreler
- hidden_states —
(B, C, T, H, W)latentleri. - timestep —
(B, 1, T)kare başına difüzyon adımları (LTX stili). - encoder_hidden_states —
(B, 1, L, D_caption)metin gömme değerleri. - encoder_attention_mask —
(B, L)metin dikkat maskesi (diffusers sözleşmesi). - mask —
encoder_attention_maskiçin, sana DiT’nin kwarg adıyla eşleşen bir takma adı. Her ikisi de geçirilirsemaskönceliklidir. - return_dict —
Trueise (varsayılan),Transformer2DModelOutputdöndürür; aksi halde tekli bir demet(sample,)döndürür. - data_info — Ek koşullandırma;
data_info["image_vae_embeds"]mevcut olduğunda, latentlere kanal ekseni boyunca birleştirilir. - camera_conditions — kamera kontrolü (UCPE) dalını sürdüren
(B, T, 20)ham kamera koşulları. - chunk_plucker — Plucker ışın gömüleri
(B, C, T, H, W), modeluse_chunk_plucker_input/use_chunk_plucker_post_attnile yapılandırıldığında kullanılır. - cam_pos_embeds — Yeniden hesaplamak yerine yeniden kullanılan, isteğe bağlı önceden hesaplanmış kamera konumsal gömme değerleri (
"absmap"/"P"girdileri). - pos_embeds — İsteğe bağlı, önceden hesaplanmış döner konum gömme değerleri;
Noneolduğunda latent şekilden oluşturulurlar. - raymats — İsteğe bağlı, önceden hesaplanmış UCPE ışın matrisleri (yalnızca
cam_pos_embeds"P"taşımıyorsa kullanılır). - frame_valid_mask — İsteğe bağlı kare başına geçerlilik maskesi, şekli
(B, 1, T, 1, 1),(B, 1, T)veya(B, T). - chunk_size — Bloklara iletilen parça uzunluğu geçersiz kılma; her bir bloğun yapılandırılmış
chunk_sizedeğerine geri düşer.
SANA-WM DiT'yi çalıştırın.
x: (N, T, patch_size*2 C) imgs: (N, H, W, C)
Transformer2DModelOutput
sınıf diffusers.models.modeling_outputs.Transformer2DModelOutput
< source >( sample: torch.Tensor )
Parametreler
- sample (
torch.Tensor, şekli(batch_size, num_channels, height, width)veya Transformer2DModel ayrık (discrete) ise(batch size, num_vector_embeds - 1, num_latent_pixels)) —encoder_hidden_statesgirdisine koşullu gizli durum (hidden states) çıktısı. Ayrık (discrete) ise, gürültüsü kaldırılmış (unnoised) gizli (latent) pikseller için olasılık dağıtımlarını döndürür.
Transformer2DModel'nin çıktısı.