Diffusers documentation
PAN2Transformer3DModel
PAN2Transformer3DModel
PAN 2의 diffusion transformer입니다. 비디오 토큰과 텍스트 토큰에 대해 결합된 attention을 수행하며, 각 스트림에 대해 별도의 projection과 feed-forward network를 사용합니다.
비디오 입력은 노이즈가 포함된 잠재 변수, 조건부 잠재 변수, 그리고 1채널 조건부 마스크를 스택하므로, 동일한 모델이 텍스트-비디오 및 이미지-비디오 모두에 사용할 수 있습니다.
import torch
from diffusers import PAN2Transformer3DModel
transformer = PAN2Transformer3DModel.from_pretrained("IFM/PAN2", subfolder="transformer", dtype=torch.bfloat16)PAN2Transformer3DModel
클래스 diffusers.PAN2Transformer3DModel
< source >( patch_size: tuple[int, int, int] = (1, 2, 2)in_channels: int = 97out_channels: int = 48num_attention_heads: int = 32attention_head_dim: int = 128num_layers: int = 44num_refiner_layers: int = 4mlp_ratio: float = 8.0context_mlp_ratio: float = 4.0refiner_mlp_ratio: float = 4.0text_embed_dim: int = 4096rope_axes_dim: tuple[int, int, int] = (16, 56, 56)rope_theta: float = 256.0rope_temporal_scale: float = 0.6666666666666666 )
매개변수
- patch_size (
tuple[int, int, int], 기본값(1, 2, 2)) — 패치 임베딩의(t, h, w)패치 크기입니다. - in_channels (
int, 기본값97) — 입력 채널 수: 노이즈된 latents, 조건부 latents 및 하나의 조건부 mask 채널. - out_channels (
int, 기본값48) — 출력 채널의 수입니다. - num_attention_heads (
int, 기본값32) — Attention head의 수입니다. - attention_head_dim (
int, 기본값128) — 각 attention head의 채널 수입니다. - num_layers (
int, 기본값44) — joint-attention 블록의 수입니다. - num_refiner_layers (
int, 기본값4) — 텍스트 임베딩에 적용되는 토크 리파이너 블록의 수입니다. - mlp_ratio (
float, 기본값8.0) — 비디오 피드포워드 내부 차원과 숨겨진 차원의 비율입니다. - context_mlp_ratio (
float, 기본값4.0) — 텍스트 피드포워드 내부 차원과 숨겨진 차원의 비율입니다. - refiner_mlp_ratio (
float, 기본값4.0) — 토큰 리파이너 피드포워드 내부 차원과 히든 차원의 비율입니다. - text_embed_dim (
int, 기본값4096) — 텍스트 인코더의 숨겨진 상태(hidden states) 차원입니다. - rope_axes_dim (
tuple[int, int, int], 기본값(16, 56, 56)) — 회전 임베딩에서 각(t, h, w)축의 채널 수입니다. - rope_theta (
float, 기본값256.0) — 회전 임베딩의 기본값입니다. - rope_temporal_scale (
float, 기본값16 / 24) — 회전 임베딩의 프레임 위치가 곱해지는 계수입니다: 회전 임베딩의 기준 프레임 레이트를 비디오의 프레임 레이트로 나눈 값입니다.
PAN 2의 diffusion transformer입니다.
패치화된 비디오 라텐트와 정제된 텍스트 토큰의 연결(concatenation) 위에 쌓인 결합 주의(joint-attention) 블록 스택입니다. 비디오 입력은 노이즈가 포함된 라텐트, 조건부 라텐트, 조건부 마스크를 채널 축을 따라 스택하여 전달하므로, 동일한 모델이 텍스트-비디오 생성과 이미지-비디오 생성 모두를 처리할 수 있습니다.
forward
< source >( hidden_states: Tensortimestep: Tensorencoder_hidden_states: Tensorattention_kwargs: dict[str, typing.Any] | None = Nonereturn_dict: bool = True ) → Transformer2DModelOutput or tuple
매개변수
- hidden_states (
torch.Tensor, shape(batch_size, in_channels, num_frames, height, width)) — 채널 방향으로 연결된 노이즈된 latents, conditioning latents, conditioning mask입니다. - timestep (
torch.Tensor, shape(batch_size,)) —[0, 1000]범위의 노이즈 제거(timestep)입니다. - encoder_hidden_states (
torch.Tensor, shape(batch_size, text_seq_len, text_embed_dim)) — 텍스트 인코더의 숨겨진 상태(hidden states)입니다. - attention_kwargs (
dict, 선택 사항) —AttentionProcessor에 전달되는 kwargs 딕셔너리입니다. LoRA 스케일에만 사용됩니다. - return_dict (
bool, 선택 사항, 기본값True) — 단순 tuple 대신 Transformer2DModelOutput를 반환할지 여부.
반환값
Transformer2DModelOutput 또는 tuple
(batch_size, out_channels, num_frames, height, width) 형태의 예측 속도입니다.
PAN2Transformer3DModel의 forward 메서드입니다.