Diffusers documentation

WanAnimate2Transformer3DModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

WanAnimate2Transformer3DModel

Модель Diffusion Transformer для 3D-видеоподобных данных, используемая в Wan-Animate-2 от команды Alibaba Wan. Она анимирует изображение персонажа с помощью движения из управляющего видео посредством механизма контекстной ссылки: каждый сегмент сначала выполняет проход ссылки (kv_cache_mode="extract"), кэшируя справочные K/V для каждого слоя, после чего проходы денойзинга (kv_cache_mode="cached") совместно обращаются к токенам генерации и кэшированным справочным токенам через гибкую BlockMask.

Модель можно загрузить с помощью следующего фрагмента кода.

from diffusers import WanAnimate2Transformer3DModel

transformer = WanAnimate2Transformer3DModel.from_pretrained("Wan-AI/Wan2.2-Animate-2-14B-Diffusers", subfolder="transformer", dtype=torch.bfloat16)

WanAnimate2Transformer3DModel

класс diffusers.WanAnimate2Transformer3DModel

< >

( 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 )

Параметры

  • patch_size (tuple[int], по умолчанию (1, 2, 2)) — размеры 3D-патчей для встраивания видео (t_patch, h_patch, w_patch).
  • text_len (int, по умолчанию 512) — Фиксированная длина для текстовых эмбеддингов.
  • in_dim (int, по умолчанию 36) — Количество каналов на входе (2 * latent_channels + 4 для маскирующего канала).
  • dim (int, по умолчанию 5120) — Количество каналов в трансформере.
  • ffn_dim (int, по умолчанию 13824) — Промежуточное измерение в полносвязной сети.
  • freq_dim (int, по умолчанию 256) — Размерность для синусоидных временных эмбеддингов.
  • text_dim (int, по умолчанию 4096) — Размерность входных векторов текстовых эмбеддингов.
  • out_dim (int, по умолчанию 16) — Количество каналов на выходе.
  • num_heads (int, по умолчанию 40) — Количество головок внимания.
  • num_layers (int, по умолчанию 40) — Количество используемых блоков трансформера.
  • cross_attn_norm (bool, по умолчанию True) — Включает нормализацию кросс-внимания.
  • eps (float, по умолчанию 1e-6) — Значение эпсилона для слоёв нормализации.
  • use_img_emb (bool, по умолчанию True) — Использовать ли CLIP image embedding.
  • refer_offset_t (int, по умолчанию 1) — смещение RoPE для временного измерения эталонного сигнала.
  • refer_offset_h (int, по умолчанию 0) — смещение RoPE для измерения высоты эталонного изображения.
  • refer_offset_w (int, по умолчанию -1) — смещение RoPE для ширины опорного изображения. Значение -1 означает использование размера сетки генерации.
  • refer_stride (int, по умолчанию 1) — Шаг применения RoPE для эталонного представления.

Модель Transformer для видео-подобных данных, используемая в модели Wan-Animate-2.

Wan-Animate-2 использует механизм внимания в контексте с кэшем KV: сначала кодируется видео-референс (kv_cache_mode="extract") для заполнения [WanAnimate2KVCache], затем на каждом шаге денойзинга (kv_cache_mode="cached") внимание совместно обрабатывает токены генерации и кэшированные K/V референса через flex BlockMask. Таким образом, само-внимание генерации выполняется только на бэкенде внимания flex; все остальные виды внимания в модели работают на любом бэкенде.

forward

< >

( 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])

Параметры

  • hidden_states (list[torch.Tensor]) — Латенты для этого прохода — эталонные латенты, если kv_cache_mode="extract", или латенты шумной генерации, если kv_cache_mode="cached".
  • timestep (torch.Tensor) — Шаг денойзинга. Игнорируется при kv_cache_mode="extract", который использует фиксированный шаг 1.
  • encoder_hidden_states (list[torch.Tensor]) — Векторные представления текста для этого прохода.
  • condition_latents (list[torch.Tensor]) — Условные латенты, конкатенированные с hidden_states перед patch embedding.
  • kv_cache (WanAnimate2KVCache) — записывается при kv_cache_mode="extract", читается при "cached".
  • kv_cache_mode (str) — "extract" выполняет эталонный проход и заполняет kv_cache; "cached" выполняет шаг денойзинга по кэшированным эталонным токенам.
  • seq_len (int) — Количество токенов, которое должен содержать каждый образец после встраивания патчей.
  • encoder_hidden_states_image (torch.Tensor, необязательный) — встраивания изображений CLIP, используются, когда модель настроена с use_img_emb.
  • offset_grid_sizes (torch.Tensor, необязательный) — Сетка патчей для опорных латентов, используется для разрешения значений refer_offset_*, равных -1. Обязателен при kv_cache_mode="extract"; при "cached" та же сетка описывается параметром reference_grid_sizes и используется вместо него.
  • reference_grid_sizes (torch.Tensor, необязательный) — Сетка патчей для опорных латентов, используется для опорных вращательных эмбеддингов. Обязателен при kv_cache_mode="cached".
  • origin_len (int, необязательный) — Количество кадров полного видео, на основе которого строится маска блока в контексте. Обязателен при kv_cache_mode="cached".
  • origin_area (list[int], необязательный) — Пространственный размер [height, width] полного видео, на основе которого строится маска блока в контексте. Обязателен при kv_cache_mode="cached".
  • is_uncondtion (bool, необязательный) — Указывает, является ли это безусловной ветвью classifier-free guidance.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать ~models.transformer_2d.Transformer2DModelOutput вместо обычного кортежа.

Возвращает

Transformer2DModelOutput или tuple(list[torch.Tensor])

Предсказанный образец на каждый входной латентный, без патчирования; обычный кортеж, если return_dict равно False.

Transformer2DModelOutput

класс diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

Параметры

  • sample (torch.Tensor формы (batch_size, num_channels, height, width) или (batch size, num_vector_embeds - 1, num_latent_pixels), если Transformer2DModel дискретный) — Выходные скрытые состояния, обусловленные входом encoder_hidden_states. Если модель дискретная, возвращает распределения вероятностей для латентных пикселей без шума.

Вывод Transformer2DModel.

Update on GitHub