Diffusers documentation
Kandinsky 6 Transformers
Kandinsky 6 Transformers
Kandinsky 6 sử dụng một diffusion transformer đa phương thức để khử nhiễu các latents của video và âm thanh cùng nhau cho việc tạo video và âm thanh từ văn bản/ảnh, và một diffusion transformer không cần văn bản cho siêu phân giải video.
Kandinsky6Transformer3DModel
Transformer đa phương thức được sử dụng bởi Kandinsky6TI2VAPipeline.
import torch
from diffusers import Kandinsky6Transformer3DModel
transformer = Kandinsky6Transformer3DModel.from_pretrained(
"kandinskylab/Kandinsky-6.0-Pro-distill-5s-Diffusers", subfolder="transformer", torch_dtype=torch.bfloat16
)lớp diffusers.Kandinsky6Transformer3DModel
< source >( in_visual_dim: int = 16out_visual_dim: int = 16in_text_dim: int = 3584in_text_dim2: int = 768time_dim: int = 1024patch_size: tuple = (1, 2, 2)model_dim: int = 4096ff_dim: int = 16384num_text_blocks: int = 4num_visual_blocks: int = 60axes_dims: tuple = (32, 48, 48)visual_cond: bool = Truein_audio_dim: int = 20out_audio_dim: int = 20model_dim_a: int | None = Nonetime_dim_a: int | None = Noneff_dim_a: int | None = Noneaxes_dims_a: tuple | None = Noneaudio_freqs_scaling: float = 1.0scale_factor: tuple | list[float] = (1.0, 2.0, 2.0)text_token_padding: bool = Falseca_rope: bool = Falsecross_gates: bool = Falsefix_modulation: bool = Falsevisual_token_type_num_embeddings: int = 0 )
Tham số
- in_visual_dim (int, optional, mặc định là 16) — Số lượng kênh tiềm ẩn của video đầu vào.
- out_visual_dim (int, optional, mặc định là 16) — Số lượng kênh tiềm ẩn video đầu ra.
- in_text_dim (int, optional, mặc định là 3584) — Kích thước nhúng token văn bản.
- in_text_dim2 (int, tuỳ chọn, mặc định là 768) — Kích thước nhúng văn bản đã gộp (pooled).
- time_dim (int, optional, mặc định là 1024) — Kích thước nhúng thời gian.
- patch_size (tuple[int, int, int], tuỳ chọn, mặc định là
(1, 2, 2)) — Kích thước patch của video. - model_dim (int, optional, mặc định là 4096) — Chiều ẩn của video transformer.
- ff_dim (int, optional, mặc định là 16384) — Kích thước ẩn của lớp feed-forward cho video.
- num_text_blocks (int, tuỳ chọn, mặc định là 4) — Số lượng khối văn bản cho mỗi phương thức.
- num_visual_blocks (int, optional, mặc định là 60) — Số lượng khối video/âm thanh đã hợp nhất.
- axes_dims (tuple[int, int, int], optional, mặc định là
(32, 48, 48)) — Các chiều RoPE cho video. - visual_cond (bool, optional, mặc định là True) — Xác định xem các kênh điều kiện video có hiện diện hay không.
- in_audio_dim (int, optional, mặc định là 20) — Số lượng kênh âm thanh tiềm ẩn đầu vào.
- out_audio_dim (int, optional, mặc định là 20) — Số lượng kênh âm thanh tiềm ẩn đầu ra.
- model_dim_a (int, optional) — Kích thước ẩn của audio transformer. Mặc định là model_dim.
- time_dim_a (int, optional) — Chiều của embedding thời gian cho âm thanh. Mặc định là time_dim.
- ff_dim_a (int, optional) — Kích thước ẩn của lớp feed-forward cho âm thanh. Mặc định là ff_dim.
- axes_dims_a (tuple[int, int, int], tuỳ chọn) — Các chiều RoPE cho âm thanh. Mặc định là axes_dims.
- audio_freqs_scaling (float, optional, mặc định là 1.0) — Thang tần số RoPE cho âm thanh.
- scale_factor (tuple[float, float, float], optional, mặc định là (1.0, 2.0, 2.0)) — Hệ số mở rộng tần số RoPE theo từng trục (t, h, w) được áp dụng cho các vị trí video.
- text_token_padding (bool, optional, mặc định là False) — Metadata của checkpoint ghi nhận xem các chuỗi văn bản của mô hình tham chiếu có được đệm (padding) hay không. forward luôn chấp nhận một encoder_attention_mask tùy chọn bất kể cờ này; việc có thực sự truyền vào hay không hoàn toàn do người gọi quyết định.
- ca_rope (bool, optional, mặc định là False) — Có sử dụng cross-modal audio RoPE hay không.
- cross_gates (bool, tuỳ chọn, mặc định là False) — Có sử dụng cổng dư đa chế độ hay không.
- fix_modulation (bool, optional, mặc định là False) — Có sử dụng biến thể modulation cố định hay không.
- visual_token_type_num_embeddings (int, optional, mặc định là 0) — Số lượng embedding loại token thị giác.
Kandinsky 6 transformer đa phương thức để tạo video và âm thanh từ văn bản/hình ảnh.
Video và audio được khử nhiễu cùng nhau thông qua các khối transformer liên hợp, đa phương thức, mỗi khối được điều kiện bởi nhánh văn bản riêng của nó (token Qwen2.5-VL + embedding CLIP đã pool). Việc không truyền audio_hidden_states sẽ khử nhiễu video đơn lẻ trong khi vẫn thực hiện các giai đoạn self-attention của video, cross-attention và feed-forward của khối liên hợp. Rotary embeddings được tính toán bên trong forward từ lưới token.
Các checkpoint được phát hành đặt text_token_padding, ca_rope, cross_gates và fix_modulation thành True (xem transformer/config.json của từng checkpoint); các giá trị mặc định False chỉ mô tả một biến thể kiến trúc mà kho này không cung cấp trọng số.
forward
< source >( hidden_states: Tensorencoder_hidden_states: Tensorpooled_projections: Tensortimestep: Tensoraudio_hidden_states: Tensor | None = Nonevisual_rope_pos: tuple[Tensor, Tensor, Tensor] | None = Noneencoder_attention_mask: Tensor | None = Nonevisual_token_type_ids: Tensor | None = Nonereturn_dict: bool = True ) → Kandinsky6TransformerOutput or tuple
Tham số
- hidden_states (
torch.Tensorcó hình dạng(batch_size, num_frames, height, width, in_channels)) — Các latent của video trong bố cục(B, T, H, W, C). Khivisual_cond=True,in_channelslà2 * in_visual_dim + 1: bao gồm latent nhiễu, latent điều kiện và mặt nạ điều kiện. - encoder_hidden_states (
torch.Tensorcó hình dạng(batch_size, sequence_length, in_text_dim)) — Các embedding token văn bản, được chia sẻ bởi các nhánh văn bản của video và âm thanh. - pooled_projections (
torch.Tensorcó hình dạng(batch_size, in_text_dim2)) — Nhúng văn bản đã gộp (pooled) được thêm vào nhúng bước thời gian (timestep embedding) của cả hai nhánh. - timestep (
torch.Tensorcó hình dạng(batch_size,)) — Bước thời gian khuếch tán trên thang đo[0, num_train_timesteps], được dùng chung cho cả hai phương thức. - audio_hidden_states (
torch.Tensorcó hình dạng(batch_size, audio_length, in_audio_dim), tùy chọn) — Các ẩn âm thanh. Khi bị bỏ qua, các khối hợp nhất chỉ chạy đường dẫn video. - visual_rope_pos (
tuple[torch.Tensor, torch.Tensor, torch.Tensor], tuỳ chọn) — Chỉ số vị trí xoay(t, h, w)theo từng trục của các token video đã được chia patch. Mặc định làarangetrên mỗi trục. Pipeline truyền một chỉ số thời gian rõ ràng khi nó thêm một khung hình tham chiếu tái sử dụng vị trí0. - encoder_attention_mask (
torch.Tensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Mặt nạ đệm Boolean choencoder_hidden_states. TruyềnNonekhi không có prompt nào được đệm. - visual_token_type_ids (
torch.Tensorcó shape(batch_size, num_frames), tùy chọn) — Token type ids cho từng frame, được nhúng thông quavisual_token_type_embeddings. Yêu cầuvisual_token_type_num_embeddings > 0. - return_dict (
bool, mặc định làTrue) — Có nên trả về mộtKandinsky6TransformerOutputthay vì một tuple thông thường hay không.
Trả về
Kandinsky6TransformerOutput hoặc tuple
Tốc độ video dự đoán trong bố cục (B, T, H, W, out_visual_dim) và, khi
audio_hidden_states được cung cấp, tốc độ âm thanh dự đoán có hình dạng (B, audio_length, out_audio_dim).
Kandinsky6SRTransformer3DModel
Transformer không có văn bản được sử dụng bởi Kandinsky6SRPipeline để tinh chỉnh từng ô của video đã được phóng to một cách tuần tự.
import torch
from diffusers import Kandinsky6SRTransformer3DModel
transformer = Kandinsky6SRTransformer3DModel.from_pretrained(
"kandinskylab/Kandinsky-6.0-VSR-distilled2steps-5s-Diffusers", subfolder="transformer", torch_dtype=torch.bfloat16
)
# The transformer always runs NABLA sparse attention (`nabla_threshold`, 0.8 by default) on the `flex` backend.
# Compile it, otherwise flex falls back to an eager implementation that needs far more memory at video resolutions.
transformer.compile_repeated_blocks(fullgraph=True)lớp diffusers.Kandinsky6SRTransformer3DModel
< source >( in_visual_dim: int = 64out_visual_dim: int = 640time_dim: int = 512patch_size: tuple[int, int, int] = (1, 1, 1)model_dim: int = 1792ff_dim: int = 7168num_visual_blocks: int = 32axes_dims: tuple[int, int, int] = (16, 24, 24)scale_factor: tuple[float, float, float] = (1.0, 2.0, 2.0)nabla_threshold: float = 0.8nabla_window: tuple[int, int, int] = (11, 7, 7)tile_sizes: tuple[tuple[int, int], ...] = ((512, 512), (512, 768), (768, 512)) )
Tham số
- in_visual_dim (
int, mặc định là64) — Số lượng kênh tiềm ẩn của K-VAE. - out_visual_dim (
int, mặc định là640) — Số lượng kênh đầu ra. - time_dim (
int, mặc định là512) — Kích thước của embedding bước thời gian. - patch_size (
tuple[int, int, int], mặc định là(1, 1, 1)) — Kích thước patch dưới dạng(temporal, height, width). - model_dim (
int, mặc định là1792) — Chiều ẩn của transformer. - ff_dim (
int, mặc định là7168) — Kích thước chiều trong của các mạng feed-forward. - num_visual_blocks (
int, mặc định là32) — Số lượng khối transformer. - axes_dims (
tuple[int, int, int], mặc định là(16, 24, 24)) — Số chiều RoPE cho mỗi trục(t, h, w); tổng của chúng là số chiều đầu chú ý (attention head dimension). - scale_factor (
tuple[float, float, float], mặc định là(1.0, 2.0, 2.0)) — Hệ số mở rộng tần số RoPE theo từng trục được áp dụng cho các vị trí token. - nabla_threshold (
float, mặc định là0.8) — Ngưỡng chú ý tích lũy của việc chọn khối NABLA. - nabla_window (
tuple[int, int, int], mặc định là(11, 7, 7)) — Phạm vi(t, h, w)lẻ của prior trượt gạch mà mọi khối token 8x8 luôn chú ý đến. - tile_sizes (
tuple[tuple[int, int], ...], mặc định là((512, 512), (512, 768), (768, 512))) — Kích thước(height, width)của các ô video (tính bằng pixel) mà mô hình được huấn luyện. Kandinsky6SRPipeline tinh chỉnh mỗi ô ở kích thước có tỷ lệ khung hình gần nhất với video đầu vào.
Biến đổi khuếch tán không có văn bản cho siêu phân giải video Kandinsky 6.
Mô hình khử nhiễu các ô của video tiềm ẩn K-VAE. Đầu vào của nó là phép nối giữa tiềm ẩn nhiễu với tiềm ẩn neo và mặt nạ neo, đóng vai trò điều kiện cho siêu phân giải (2 * in_visual_dim + 1 kênh), và đầu ra chứa out_visual_dim kênh: in_visual_dim cho checkpoint vận tốc thông thường, hoặc n_grid * in_visual_dim mở rộng cho các checkpoint chưng cất của PiflowScheduler. Tự chú ý video chạy qua mẫu khối thưa NABLA trên backend chú ý flex, đòi hỏi lưới token (height và width sau patch_size) phải chia hết cho 8.
forward
< source >( hidden_states: Tensortimestep: Tensorreturn_dict: bool = True ) → Transformer2DModelOutput or tuple
Tham số
- hidden_states (
torch.Tensorcó hình dạng(batch_size, num_frames, height, width, 2 * in_visual_dim + 1)) — Các lát latent theo bố cục(B, T, H, W, C): latent nhiễu, latent neo và mặt nạ neo được nối theo trục kênh. - timestep (
torch.Tensorcó shape(batch_size,)) — Bước thời gian khuếch tán trên thang đo[0, num_train_timesteps]. - return_dict (
bool, mặc định làTrue) — Có nên trả về một Transformer2DModelOutput thay vì một tuple thông thường hay không.
Trả về
Transformer2DModelOutput hoặc tuple
Dự đoán hình dạng (batch_size, num_frames, height, width, out_visual_dim).