Diffusers documentation
WanAnimate2Transformer3DModel
WanAnimate2Transformer3DModel
Um modelo Diffusion Transformer para dados de vídeo 3D-like usado no Wan-Animate-2 pela equipe Wan da Alibaba. Ele anima uma imagem de personagem com o movimento de um vídeo de referência por meio de um mecanismo de referência in-context: cada segmento primeiro executa uma passagem de referência (kv_cache_mode="extract") que faz o cache dos K/V de referência de cada camada, e em seguida as passagens de desruido (kv_cache_mode="cached") atendem conjuntamente sobre os tokens de geração e os tokens de referência em cache por meio de um flex BlockMask.
O modelo pode ser carregado com o seguinte trecho de código.
from diffusers import WanAnimate2Transformer3DModel
transformer = WanAnimate2Transformer3DModel.from_pretrained("Wan-AI/Wan2.2-Animate-2-14B-Diffusers", subfolder="transformer", dtype=torch.bfloat16)WanAnimate2Transformer3DModel
classe diffusers.WanAnimate2Transformer3DModel
< source >( patch_size: tuple = (1, 2, 2)text_len: int = 512in_dim: int = 36dim: int = 5120ffn_dim: int = 13824freq_dim: int = 256text_dim: int = 4096out_dim: int = 16num_heads: int = 40num_layers: int = 40cross_attn_norm: bool = Trueeps: float = 1e-06use_img_emb: bool = Truerefer_offset_t: int = 1refer_offset_h: int = 0refer_offset_w: int = -1refer_stride: int = 1 )
Parâmetros
- patch_size (tuple[int], padrão (1, 2, 2)) — Dimensões do patch 3D para incorporação de vídeo (t_patch, h_patch, w_patch).
- text_len (int, padrão 512) — Comprimento fixo para incorporações de texto.
- in_dim (int, padrão 36) — O número de canais na entrada (2 * latent_channels + 4 para o canal de máscara).
- dim (int, padrão 5120) — O número de canais no transformer.
- ffn_dim (int, padrão 13824) — Dimensão intermediária na rede feed-forward.
- freq_dim (int, padrão 256) — Dimensão para incorporações de tempo sinusoidais.
- text_dim (int, padrão 4096) — Dimensão de entrada para embeddings de texto.
- out_dim (int, padrão 16) — O número de canais na saída.
- num_heads (int, padrão 40) — O número de cabeças de atenção.
- num_layers (int, padrão 40) — O número de blocos de transformadores a serem usados.
- cross_attn_norm (bool, padrão True) — Ativa a normalização de atenção cruzada.
- eps (float, padrão 1e-6) — Valor de epsilon para as camadas de normalização.
- use_img_emb (bool, padrão True) — Se deve usar o embedding de imagem do CLIP.
- refer_offset_t (int, padrão 1) — Deslocamento RoPE para a dimensão temporal da referência.
- refer_offset_h (int, padrão 0) — Offset de RoPE para a dimensão de altura da referência.
- refer_offset_w (int, padrão -1) — Deslocamento RoPE para a dimensão de largura da referência. -1 significa usar o tamanho da grade de geração.
- refer_stride (int, padrão 1) — Passo para a aplicação de RoPE na referência.
Um modelo Transformer para dados semelhantes a vídeo usado no modelo Wan-Animate-2.
Wan-Animate-2 usa um mecanismo de atenção em contexto com um cache de KV: primeiro, um vídeo de referência é codificado
(kv_cache_mode="extract") para preencher um [WanAnimate2KVCache]; em seguida, cada etapa de desruidamento
(kv_cache_mode="cached") atende conjuntamente sobre os tokens de geração e o K/V de referência em cache por meio de um flex BlockMask. Portanto, a autoatenção de geração é executada apenas no backend de atenção flex; toda outra
atenção no modelo funciona em qualquer backend.
forward
< source >( hidden_states: listtimestep: Tensorencoder_hidden_states: listcondition_latents: listkv_cache: WanAnimate2KVCachekv_cache_mode: strseq_len: intencoder_hidden_states_image: typing.Optional[torch.Tensor] = Noneoffset_grid_sizes: typing.Optional[torch.Tensor] = Nonereference_grid_sizes: typing.Optional[torch.Tensor] = Noneorigin_len: int | None = Noneorigin_area: list[int] | None = Noneis_uncondtion: bool = Falsereturn_dict: bool = True ) → Transformer2DModelOutput or tuple(list[torch.Tensor])
Parâmetros
- hidden_states (
list[torch.Tensor]) — Latentes para esta passagem — os latentes de referência quandokv_cache_mode="extract", os latentes de geração com ruído quandokv_cache_mode="cached". - timestep (
torch.Tensor) — Timestep de desruidamento. Ignorado sobkv_cache_mode="extract", que usa um timestep fixo de 1. - encoder_hidden_states (
list[torch.Tensor]) — Incorporações de texto para esta passagem. - condition_latents (
list[torch.Tensor]) — Latentes de condicionamento concatenados ahidden_statesantes da incorporação de patches. - kv_cache (
WanAnimate2KVCache) — Escrito sobkv_cache_mode="extract", lido sob"cached". - kv_cache_mode (
str) —"extract"executa a passagem de referência e preenchekv_cache;"cached"executa um passo de desruidamento contra os tokens de referência em cache. - seq_len (
int) — Quantidade de tokens que cada amostra deve ter após o patch embedding. - encoder_hidden_states_image (
torch.Tensor, opcional) — Incorporações de imagem do CLIP, usadas quando o modelo é configurado comuse_img_emb. - offset_grid_sizes (
torch.Tensor, opcional) — Grade de patches dos latentes de referência, usada para resolver qualquerrefer_offset_*definido como -1. Obrigatório quandokv_cache_mode="extract"; quando"cached",reference_grid_sizesdescreve a mesma grade e é usado no lugar. - reference_grid_sizes (
torch.Tensor, opcional) — Grade de patches dos latentes de referência, usada para os embeddings rotativos de referência. Obrigatório quandokv_cache_mode="cached". - origin_len (
int, opcional) — Número de quadros do vídeo completo, sobre o qual a máscara de bloco em contexto é construída. Obrigatório quandokv_cache_mode="cached". - origin_area (
list[int], opcional) — Tamanho espacial[height, width]do vídeo completo, sobre o qual a máscara de bloco em contexto é construída. Obrigatório quandokv_cache_mode="cached". - is_uncondtion (
bool, opcional) — Se este é o ramo incondicional da classifier-free guidance. - return_dict (
bool, opcional, padrãoTrue) — Se deve retornar um~models.transformer_2d.Transformer2DModelOutputem vez de uma tupla simples.
Retorna
Transformer2DModelOutput ou tuple(list[torch.Tensor])
A amostra prevista por latente de entrada, sem desfragmentação; uma tupla simples se return_dict for False.
Transformer2DModelOutput
classe diffusers.models.modeling_outputs.Transformer2DModelOutput
< source >( sample: torch.Tensor )
Parâmetros
- sample (
torch.Tensorde forma(batch_size, num_channels, height, width)ou(batch size, num_vector_embeds - 1, num_latent_pixels)se Transformer2DModel for discreto) — A saída dos estados ocultos condicionada à entradaencoder_hidden_states. Se discreto, retorna distribuições de probabilidade para os pixels latentes sem ruído.
A saída de Transformer2DModel.