Diffusers documentation
WanAnimate2Transformer3DModel
WanAnimate2Transformer3DModel
Một mô hình Diffusion Transformer cho dữ liệu dạng video 3D được sử dụng trong Wan-Animate-2 của nhóm Alibaba Wan. Mô hình này tạo chuyển động cho một hình ảnh nhân vật bằng chuyển động của một video điều khiển thông qua cơ chế tham chiếu trong ngữ cảnh: mỗi đoạn trước tiên chạy một lượt tham chiếu (kv_cache_mode="extract") để lưu trữ bộ nhớ đệm K/V tham chiếu của mọi lớp, sau đó các lượt khử nhiễu (kv_cache_mode="cached") chú ý đồng thời trên các token sinh và các token tham chiếu đã được lưu trong bộ nhớ đệm thông qua một BlockMask linh hoạt.
Mô hình có thể được tải bằng đoạn mã sau.
from diffusers import WanAnimate2Transformer3DModel
transformer = WanAnimate2Transformer3DModel.from_pretrained("Wan-AI/Wan2.2-Animate-2-14B-Diffusers", subfolder="transformer", dtype=torch.bfloat16)WanAnimate2Transformer3DModel
lớp 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 )
Tham số
- patch_size (tuple[int], mặc định là (1, 2, 2)) — Kích thước patch 3D cho nhúng video (t_patch, h_patch, w_patch).
- text_len (int, mặc định là 512) — Độ dài cố định cho các vector nhúng văn bản.
- in_dim (int, mặc định là 36) — Số lượng kênh trong đầu vào (2 * latent_channels + 4 cho kênh mask).
- dim (int, mặc định là 5120) — Số lượng kênh trong transformer.
- ffn_dim (int, mặc định là 13824) — Kích thước chiều trung gian trong mạng feed-forward.
- freq_dim (int, mặc định là 256) — Kích thước cho các nhúng thời gian hình sin.
- text_dim (int, mặc định là 4096) — Kích thước đầu vào cho các vector nhúng văn bản.
- out_dim (int, mặc định là 16) — Số lượng kênh trong đầu ra.
- num_heads (int, mặc định là 40) — Số lượng đầu chú ý (attention heads).
- num_layers (int, mặc định là 40) — Số lượng lớp của các khối transformer cần sử dụng.
- cross_attn_norm (bool, mặc định là True) — Bật chuẩn hóa cross-attention.
- eps (float, mặc định là 1e-6) — Giá trị epsilon cho các lớp chuẩn hóa.
- use_img_emb (bool, mặc định là True) — Có sử dụng nhúng hình ảnh CLIP hay không.
- refer_offset_t (int, mặc định là 1) — Độ lệch RoPE cho chiều thời gian của tham chiếu.
- refer_offset_h (int, mặc định là 0) — Độ lệch RoPE cho chiều cao của tham chiếu.
- refer_offset_w (int, mặc định là -1) — Độ dịch RoPE cho chiều rộng của tham chiếu. -1 có nghĩa là sử dụng kích thước lưới sinh.
- refer_stride (int, mặc định là 1) — Bước nhảy (stride) cho việc áp dụng RoPE trên tham chiếu.
Một mô hình Transformer cho dữ liệu dạng video được sử dụng trong mô hình Wan-Animate-2.
Wan-Animate-2 sử dụng cơ chế chú ý trong ngữ cảnh (in-context attention) với bộ đệm KV: một video tham chiếu trước tiên được mã hóa (kv_cache_mode="extract") để nạp vào [WanAnimate2KVCache], sau đó mỗi bước khử nhiễu (kv_cache_mode="cached") sẽ chú ý đồng thời vào các token sinh ra và K/V tham chiếu đã được đệm thông qua một BlockMask linh hoạt. Do đó, chú ý tự (self-attention) của quá trình sinh chỉ chạy trên backend chú ý flex; mọi chú ý khác trong mô hình đều hoạt động trên bất kỳ backend nào.
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])
Tham số
- hidden_states (
list[torch.Tensor]) — Latents cho lượt này — latents tham chiếu khikv_cache_mode="extract", latents sinh có nhiễu khikv_cache_mode="cached". - timestep (
torch.Tensor) — Bước thời gian khử nhiễu. Bị bỏ qua khikv_cache_mode="extract", chế độ này sử dụng bước thời gian cố định là 1. - encoder_hidden_states (
list[torch.Tensor]) — Các vector nhúng văn bản cho lượt xử lý này. - condition_latents (
list[torch.Tensor]) — Các latents điều kiện được nối vàohidden_statestrước khi thực hiện patch embedding. - kv_cache (
WanAnimate2KVCache) — Được ghi khikv_cache_mode="extract", được đọc khi"cached". - kv_cache_mode (
str) —"extract"chạy bước tham chiếu và nạp dữ liệu vàokv_cache;"cached"chạy một bước khử nhiễu đối với các token tham chiếu đã được lưu trong bộ nhớ đệm. - seq_len (
int) — Số lượng token mà mỗi mẫu phải giữ lại sau khi nhúng patch. - encoder_hidden_states_image (
torch.Tensor, tùy chọn) — Các embedding hình ảnh CLIP, được sử dụng khi mô hình được cấu hình vớiuse_img_emb. - offset_grid_sizes (
torch.Tensor, tuỳ chọn) — Lưới patch của các latent tham chiếu, được dùng để giải quyết bất kỳrefer_offset_*nào được đặt thành -1. Bắt buộc khikv_cache_mode="extract"; khi"cached",reference_grid_sizesmô tả cùng một lưới và được dùng thay thế. - reference_grid_sizes (
torch.Tensor, tùy chọn) — Lưới patch của các latent tham chiếu, được dùng cho các rotary embeddings tham chiếu. Bắt buộc khikv_cache_mode="cached". - origin_len (
int, tùy chọn) — Số lượng khung của video đầy đủ, mà mặt nạ khối ngữ cảnh được xây dựng dựa trên đó. Bắt buộc khikv_cache_mode="cached". - origin_area (
list[int], tùy chọn) — Kích thước không gian[height, width]của video đầy đủ, mà mặt nạ khối ngữ cảnh được xây dựng trên đó. Bắt buộc khikv_cache_mode="cached". - is_uncondtion (
bool, tuỳ chọn) — Liệu đây có phải là nhánh không điều kiện của classifier-free guidance hay không. - return_dict (
bool, tùy chọn, mặc định làTrue) — Có nên trả về một~models.transformer_2d.Transformer2DModelOutputthay vì một tuple thông thường hay không.
Trả về
Transformer2DModelOutput hoặc tuple(list[torch.Tensor])
Mẫu dự đoán cho mỗi latent đầu vào, chưa được unpatchify; một tuple thông thường nếu return_dict là False.
Transformer2DModelOutput
lớp diffusers.models.modeling_outputs.Transformer2DModelOutput
< source >( sample: torch.Tensor )
Tham số
- sample (
torch.Tensorcó hình dạng(batch_size, num_channels, height, width)hoặc(batch size, num_vector_embeds - 1, num_latent_pixels)nếu Transformer2DModel là rời rạc) — Trạng thái ẩn đầu ra được điều kiện bởi đầu vàoencoder_hidden_states. Nếu là rời rạc, trả về các phân phối xác suất cho các pixel tiềm ẩn không nhiễu.
Đầu ra của Transformer2DModel.