Diffusers documentation
WanAnimate2Transformer3DModel
WanAnimate2Transformer3DModel
Un modelo Diffusion Transformer para datos de video 3D utilizado en Wan-Animate-2 por el equipo Wan de Alibaba. Anima una imagen de personaje con el movimiento de un video de referencia mediante un mecanismo de referencia en contexto: cada segmento primero ejecuta una pasada de referencia (kv_cache_mode="extract") que almacena en caché las K/V de referencia de cada capa, y luego las pasadas de desruido (kv_cache_mode="cached") atienden conjuntamente a los tokens de generación y a los tokens de referencia en caché a través de una flex BlockMask.
El modelo se puede cargar con el siguiente fragmento 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
clase 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], por defecto (1, 2, 2)) — Dimensiones del parche 3D para la incrustación de video (t_patch, h_patch, w_patch).
- text_len (int, por defecto 512) — Longitud fija para las incorporaciones de texto.
- in_dim (int, por defecto 36) — El número de canales en la entrada (2 * latent_channels + 4 para el canal de máscara).
- dim (int, por defecto 5120) — El número de canales en el transformer.
- ffn_dim (int, por defecto 13824) — Dimensión intermedia en la red feed-forward.
- freq_dim (int, por defecto 256) — Dimensión para las incrustaciones sinusoidales de tiempo.
- text_dim (int, por defecto 4096) — Dimensión de entrada para los embeddings de texto.
- out_dim (int, por defecto 16) — El número de canales en la salida.
- num_heads (int, por defecto 40) — El número de cabezas de atención.
- num_layers (int, por defecto 40) — El número de capas de bloques de transformador a utilizar.
- cross_attn_norm (bool, por defecto True) — Habilita la normalización de atención cruzada.
- eps (float, por defecto 1e-6) — Valor de epsilon para las capas de normalización.
- use_img_emb (bool, por defecto True) — Si se debe usar el embedding de imagen de CLIP.
- refer_offset_t (int, por defecto 1) — Desplazamiento de RoPE para la dimensión temporal de la referencia.
- refer_offset_h (int, por defecto 0) — Desplazamiento de RoPE para la dimensión de altura de la referencia.
- refer_offset_w (int, por defecto -1) — Desplazamiento de RoPE para la dimensión de ancho de la referencia. -1 significa usar el tamaño de la cuadrícula de generación.
- refer_stride (int, por defecto 1) — Paso para la aplicación de RoPE en la referencia.
Un modelo Transformer para datos tipo video utilizado en el modelo Wan-Animate-2.
Wan-Animate-2 utiliza un mecanismo de atención en contexto con una caché KV: primero se codifica un video de referencia (kv_cache_mode="extract") para poblar una [WanAnimate2KVCache], y luego cada paso de desruido (kv_cache_mode="cached") atiende conjuntamente sobre los tokens de generación y los K/V de referencia en caché a través de una BlockMask flexible. Por lo tanto, la autoatención de generación se ejecuta únicamente en el backend de atención flex; cualquier otra atención en el modelo funciona en cualquier backend.
forward
< source >( hidden_states: list[torch.Tensor]timestep: Tensorencoder_hidden_states: list[torch.Tensor]condition_latents: list[torch.Tensor]kv_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 pasada: los latentes de referencia cuandokv_cache_mode="extract", los latentes de generación con ruido cuandokv_cache_mode="cached". - timestep (
torch.Tensor) — Paso de tiempo de desruido. Se ignora bajokv_cache_mode="extract", que utiliza un paso de tiempo fijo de 1. - encoder_hidden_states (
list[torch.Tensor]) — Incrustaciones de texto para esta pasada. - condition_latents (
list[torch.Tensor]) — Latentes de condicionamiento concatenados ahidden_statesantes del patch embedding. - kv_cache (
WanAnimate2KVCache) — Se escribe conkv_cache_mode="extract"y se lee con"cached". - kv_cache_mode (
str) —"extract"ejecuta el paso de referencia y rellenakv_cache;"cached"ejecuta un paso de desruido contra los tokens de referencia en caché. - seq_len (
int) — Número de tokens que cada muestra debe contener después del patch embedding. - encoder_hidden_states_image (
torch.Tensor, opcional) — Incrustaciones de imagen de CLIP, utilizadas cuando el modelo está configurado conuse_img_emb. - offset_grid_sizes (
torch.Tensor, opcional) — Rejilla de parches de los latentes de referencia, utilizada para resolver cualquierrefer_offset_*establecido en -1. Obligatorio conkv_cache_mode="extract"; con"cached",reference_grid_sizesdescribe la misma rejilla y se utiliza en su lugar. - reference_grid_sizes (
torch.Tensor, opcional) — Cuadrícula de parches de los latentes de referencia, utilizada para las incrustaciones rotacionales de referencia. Obligatorio cuandokv_cache_mode="cached". - origin_len (
int, opcional) — Número de fotogramas del video completo sobre el que se construye la máscara de bloques en contexto. Obligatorio cuandokv_cache_mode="cached". - origin_area (
list[int], opcional) — Tamaño espacial[height, width]del video completo, sobre el cual se construye la máscara de bloques en contexto. Obligatorio bajokv_cache_mode="cached". - is_uncondtion (
bool, opcional) — Indica si se trata de la rama incondicional de la guía de clasificación libre (classifier-free guidance). - return_dict (
bool, opcional, valor predeterminadoTrue) — Si se debe devolver un~models.transformer_2d.Transformer2DModelOutputen lugar de una tupla simple.
Devuelve
Transformer2DModelOutput o tuple(list[torch.Tensor])
La muestra predicha por latente de entrada, sin parchear; una tupla simple si return_dict es False.
Transformer2DModelOutput
clase diffusers.models.modeling_outputs.Transformer2DModelOutput
< source >( sample: torch.Tensor )
Parámetros
- sample (
torch.Tensorde forma(batch_size, num_channels, height, width)o(batch size, num_vector_embeds - 1, num_latent_pixels)si Transformer2DModel es discreto) — La salida de estados ocultos condicionada a la entradaencoder_hidden_states. Si es discreto, devuelve distribuciones de probabilidad para los píxeles latentes sin ruido.
La salida de Transformer2DModel.