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

카메라 제어 이미지-비디오 생성을 위한 3D Diffusion Transformer(1.6B 파라미터)로, SanaWMPipeline의 1단계 샘플러로 사용됩니다. 이 Transformer는 다음을 결합합니다:

  • 양방향 GDN-Triton 선형 어텐션 메인 브랜치(깊이 20, 숨김 2240, 헤드 20),
  • 요청된 궤도의 raymap + Plücker 표현을 소비하는 UCPE(Unified Camera Pose Embedding) 카메라 제어 브랜치,
  • softmax_every_n 레이어마다 주입되는 Wan 스타일의 3D 회전 위치 임베딩과 주기적 softmax-attention 블록

모델은 다음으로 로드할 수 있습니다:

import torch
from diffusers import SanaWMTransformer3DModel

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

SanaWMTransformer3DModel

클래스 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' )

매개변수

  • in_channels (int, 기본값 128) — VAE latent channels (LTX-2).
  • softmax_every_n (int, 기본값 4) — N개 블록마다 softmax attention 블록을 사용합니다.
  • linear_head_dim (int, 기본값 112) — GDN 헤드 차원.
  • ffn_type (str, 기본값 "GLUMBConvTemp") — FFN.
  • t_kernel_size (int, 기본값 3) — 시간 차원 컨볼루션 커널.
  • conv_kernel_size (int, 기본값 4) — attention 내부의 공간적 conv 커널
  • k_conv_only (bool, 기본값 True) — K에만 conv를 적용합니다.
  • pos_embed_type (str, 기본값 "wan_rope") — 위치 임베딩.
  • qk_norm (bool, 기본값 True) — Q/K에 적용되는 RMSNorm.
  • cross_norm (bool, 기본값 True) — cross-attention K에 적용되는 RMSNorm.
  • y_norm (bool, 기본값 True) — 텍스트 임베딩에 attention_y_norm을 적용합니다.
  • init_cam_from_base (bool, 기본값 True) — 미사용; 카메라 브랜치는 체크포인트에서 로드됩니다. 발행된 config.json 파일이 로드되도록 유지됩니다.
  • use_chunk_plucker_post_attn (bool, 기본값 True). —
  • chunk_plucker_channels (int, 기본값 48) — 6 dims * temporal_stride 8.
  • chunk_plucker_post_attn_blocks (int, 기본값 20) — 모든 블록.
  • fp32_attention (bool, 기본값 True) — 미사용; attention은 항상 fp32로 실행됩니다. 공개된 config.json 파일이 로드되도록 유지됩니다.
  • image_size (int, 기본값 720) — 명목상 이미지 크기.
  • caption_channels (int, 기본값 2304) — Gemma-2 hidden size.

SANA-WM 1600M 양방향 카메라 제어 DiT.

단일 클래스 DiT(depth=20, hidden_size=2240, patch_size=(1,1,1), num_heads=20 — 즉 공개된 Efficient-Large-Model/SANA-WM_bidirectional 릴리스). save_pretrained / from_pretrained는 ConfigMixin을 통해 바로 사용할 수 있습니다.

모든 블록은 카메라 조건부(UCPE) 어텐션인 [BidirectionalGDNUCPESinglePathLiteLA]를 실행하며, softmax_every_n번째 블록만 softmax 대응 버전인 [_SoftmaxUCPESinglePathLiteLA]를 실행합니다.

state-dict는 의도적으로 제거된 pos_embed 버퍼를 제외하고 공개된 sana 체크포인트와 동일합니다.

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 )

매개변수

  • hidden_states — (B, C, T, H, W) 형태의 latents.
  • timestep — (B, 1, T) 프레임별 diffusion timesteps (LTX 스타일).
  • encoder_hidden_states — (B, 1, L, D_caption) 텍스트 임베딩.
  • encoder_attention_mask — (B, L) 텍스트 어텐션 마스크 (diffusers 규약).
  • mask — sana DiT의 kwarg 이름과 일치하는 encoder_attention_mask의 별칭입니다. 둘 다 전달되면 mask가 우선합니다.
  • return_dict — True(기본값)인 경우 Transformer2DModelOutput를 반환하고, 그렇지 않으면 1-튜플 (sample,)을 반환합니다.
  • data_info — 추가 조건; data_info["image_vae_embeds"]은 존재할 경우 채널 축을 따라 latents에 연결됩니다.
  • camera_conditions — 카메라 제어(UCPE) 브랜치를 구동하는 (B, T, 20) 크기의 원시 카메라 조건
  • chunk_plucker — Plucker ray 임베딩 (B, C, T, H, W). 모델이 use_chunk_plucker_input / use_chunk_plucker_post_attn로 구성된 경우 사용됨.
  • cam_pos_embeds — 재계산 대신 재사용할 선택적 사전 계산된 카메라 위치 임베딩("absmap" / "P" 항목)
  • pos_embeds — 선택 사항인 사전 계산된 회전 위치 임베딩입니다. None인 경우 잠재 변수의 모양에서 생성됩니다.
  • raymats — 선택 사항. 미리 계산된 UCPE 레이 행렬(cam_pos_embeds에 "P"가 없는 경우에만 사용됨).
  • frame_valid_mask — 프레임별 유효성 마스크(선택 사항). 모양은 (B, 1, T, 1, 1), (B, 1, T) 또는 (B, T)입니다.
  • chunk_size — 블록으로 전달되는 청크 길이 오버라이드입니다. 각 블록에 설정된 chunk_size로 대체됩니다.

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

클래스 diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

매개변수

  • sample (torch.Tensor, shape (batch_size, num_channels, height, width) 또는 Transformer2DModel이 discrete인 경우 (batch size, num_vector_embeds - 1, num_latent_pixels)) — encoder_hidden_states 입력에 조건부인 hidden states 출력입니다. discrete인 경우, 노이즈가 제거된 latent 픽셀에 대한 확률 분포를 반환합니다.

Transformer2DModel의 출력입니다.

Update on GitHub