Diffusers documentation
Kandinsky 6 Transformers
Kandinsky 6 Transformers
O Kandinsky 6 usa um difusor de transformador multimodal que remove o ruído dos latentes de vídeo e áudio juntos para a geração de vídeo e áudio a partir de texto/imagem, e um difusor de transformador sem texto para super-resolução de vídeo.
Kandinsky6Transformer3DModel
O transformer multimodal usado por 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
)classe 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 )
Parâmetros
- in_visual_dim (int, opcional, padrão 16) — Número de canais latentes de vídeo de entrada.
- out_visual_dim (int, opcional, padrão 16) — Número de canais latentes de vídeo de saída.
- in_text_dim (int, opcional, padrão 3584) — Dimensão do embedding de tokens de texto.
- in_text_dim2 (int, opcional, padrão 768) — Dimensão do embedding de texto agrupado.
- time_dim (int, opcional, padrão 1024) — Dimensão do embedding de tempo.
- patch_size (tuple[int, int, int], opcional, padrão
(1, 2, 2)) — Tamanho do patch do vídeo. - model_dim (int, opcional, padrão 4096) — Dimensão oculta do transformer de vídeo.
- ff_dim (int, opcional, padrão 16384) — Dimensão oculta do feed-forward do vídeo.
- num_text_blocks (int, opcional, padrão 4) — Número de blocos de texto por modalidade.
- num_visual_blocks (int, opcional, padrão 60) — Número de blocos de vídeo/áudio fundidos.
- axes_dims (tuple[int, int, int], opcional, padrão
(32, 48, 48)) — Dimensões do RoPE para vídeo. - visual_cond (bool, opcional, padrão True) — Indica se os canais de condicionamento de vídeo estão presentes.
- in_audio_dim (int, opcional, padrão 20) — Número de canais latentes de áudio de entrada.
- out_audio_dim (int, opcional, padrão 20) — Número de canais latentes de áudio de saída.
- model_dim_a (int, opcional) — Dimensão oculta do transformador de áudio. O padrão é model_dim.
- time_dim_a (int, opcional) — Dimensão do embedding de tempo do áudio. Padrão: time_dim.
- ff_dim_a (int, opcional) — Dimensão oculta do feed-forward de áudio. O padrão é ff_dim.
- axes_dims_a (tuple[int, int, int], opcional) — Dimensões do RoPE de áudio. O padrão é axes_dims.
- audio_freqs_scaling (float, opcional, padrão 1.0) — Escalonamento de frequência do RoPE de áudio.
- scale_factor (tuple[float, float, float], opcional, padrão (1.0, 2.0, 2.0)) — Escalonamento de frequência RoPE por eixo (t, h, w) aplicado às posições do vídeo.
- text_token_padding (bool, opcional, padrão é False) — Metadados do checkpoint que registram se as sequências de texto do modelo de referência são preenchidas (padded). O forward sempre aceita um encoder_attention_mask opcional, independentemente dessa flag; se um é realmente passado depende inteiramente do chamador.
- ca_rope (bool, opcional, padrão False) — Se deve usar RoPE de áudio entre modais.
- cross_gates (bool, opcional, padrão é False) — Se deve usar portas residuais entre modais.
- fix_modulation (bool, opcional, padrão é False) — Se deve usar a variante de modulação fixa.
- visual_token_type_num_embeddings (int, opcional, padrão 0) — Número de embeddings de tipo de token visual.
Kandinsky 6, um transformer multimodal para geração de vídeo e áudio a partir de texto/imagens.
Vídeo e áudio são desruídos juntos por meio de blocos de transformer fundidos e intermodais, cada um condicionado em seu próprio ramo de texto (tokens do Qwen2.5-VL + embedding agregado do CLIP). Ao não passar audio_hidden_states, apenas o vídeo é desruído, enquanto ainda são executadas as etapas de autoatenção do vídeo, atenção cruzada e feed-forward do bloco fundido. Os embeddings rotacionais são calculados dentro de forward a partir da grade de tokens.
Os checkpoints liberados definem text_token_padding, ca_rope, cross_gates e fix_modulation como True (veja o transformer/config.json de cada checkpoint); os padrões False descrevem apenas uma variante de arquitetura para a qual este repositório não distribui pesos.
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
Parâmetros
- hidden_states (
torch.Tensorde forma(batch_size, num_frames, height, width, in_channels)) — Latentes de vídeo no layout(B, T, H, W, C). Comvisual_cond=True,in_channelsé2 * in_visual_dim + 1: o latente com ruído, o latente de condicionamento e uma máscara de condicionamento. - encoder_hidden_states (
torch.Tensorde forma(batch_size, sequence_length, in_text_dim)) — Incorporações de tokens de texto, compartilhadas pelos ramos de texto de vídeo e áudio. - pooled_projections (
torch.Tensorde forma(batch_size, in_text_dim2)) — Incorporação de texto agregada adicionada à incorporação de passo de tempo de ambos os ramos. - timestep (
torch.Tensorde forma(batch_size,)) — Passo de difusão na escala[0, num_train_timesteps], compartilhado por ambas as modalidades. - audio_hidden_states (
torch.Tensorde forma(batch_size, audio_length, in_audio_dim), opcional) — Latentes de áudio. Quando omitido, os blocos fundidos executam apenas o caminho de vídeo. - visual_rope_pos (
tuple[torch.Tensor, torch.Tensor, torch.Tensor], opcional) — Índices de posição rotacional por eixo(t, h, w)dos tokens de vídeo em patches. O padrão éarangepara cada eixo. O pipeline passa um índice temporal explícito quando adiciona um quadro de referência que reutiliza a posição0. - encoder_attention_mask (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Máscara booleana de preenchimento paraencoder_hidden_states. PasseNonequando nenhum prompt for preenchido. - visual_token_type_ids (
torch.Tensorde forma(batch_size, num_frames), opcional) — IDs de tipo de token por quadro, incorporados por meio devisual_token_type_embeddings. Exigevisual_token_type_num_embeddings > 0. - return_dict (
bool, padrãoTrue) — Se deve retornar umKandinsky6TransformerOutputem vez de uma tupla simples.
Retorna
Kandinsky6TransformerOutput ou tuple
A velocidade de vídeo prevista no layout (B, T, H, W, out_visual_dim) e, quando
audio_hidden_states foi fornecido, a velocidade de áudio prevista com a forma (B, audio_length, out_audio_dim).
Kandinsky6SRTransformer3DModel
O transformer sem texto usado pelo Kandinsky6SRPipeline para refinar um tile de cada vez do vídeo ampliado.
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)classe 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)) )
Parâmetros
- in_visual_dim (
int, padrão64) — Número de canais latentes do K-VAE. - out_visual_dim (
int, padrão640) — Número de canais de saída. - time_dim (
int, padrão512) — Dimensão do embedding de timestep. - patch_size (
tuple[int, int, int], defaults to(1, 1, 1)) — Patch size as(temporal, height, width). - model_dim (
int, padrão1792) — Dimensão oculta do transformer. - ff_dim (
int, padrão7168) — Dimensão interna das redes feed-forward. - num_visual_blocks (
int, padrão32) — Número de blocos do transformer. - axes_dims (
tuple[int, int, int], padrão(16, 24, 24)) — Dimensões do RoPE para cada eixo(t, h, w); a soma delas é a dimensão da cabeça de atenção. - scale_factor (
tuple[float, float, float], padrão(1.0, 2.0, 2.0)) — Escala de frequência RoPE por eixo aplicada às posições dos tokens. - nabla_threshold (
float, padrão0.8) — Limiar de atenção cumulativa para a seleção de blocos NABLA. - nabla_window (
tuple[int, int, int], padrão(11, 7, 7)) — Extensões ímpares(t, h, w)do prior de tiles deslizantes ao qual cada bloco de tokens 8x8 sempre presta atenção. - tile_sizes (
tuple[tuple[int, int], ...], defaults to((512, 512), (512, 768), (768, 512))) — Pixel(height, width)sizes of the video tiles the model was trained on. Kandinsky6SRPipeline refines every tile at the size whose aspect ratio is closest to the input video’s.
Transformador de difusão sem texto para super-resolução de vídeo do Kandinsky 6.
O modelo remove o ruído dos tiles do vídeo latente do K-VAE. Sua entrada concatena o latente com ruído com o latente âncora e a máscara âncora que condicionam a super-resolução (2 * in_visual_dim + 1 canais), e sua saída contém out_visual_dim canais: in_visual_dim para um checkpoint de velocidade simples, ou um n_grid * in_visual_dim ampliado para os checkpoints destilados do PiflowScheduler. A autoatenção do vídeo é executada através do padrão de bloco esparsos NABLA no backend de atenção flex, que exige que a grade de tokens (height e width após patch_size) seja divisível por 8.
forward
< source >( hidden_states: Tensortimestep: Tensorreturn_dict: bool = True ) → Transformer2DModelOutput or tuple
Parâmetros
- hidden_states (
torch.Tensorde forma(batch_size, num_frames, height, width, 2 * in_visual_dim + 1)) — Tiles latentes no layout(B, T, H, W, C): o latente com ruído, o latente âncora e a máscara âncora concatenados ao longo do eixo de canais. - timestep (
torch.Tensorde forma(batch_size,)) — Passo de difusão na escala[0, num_train_timesteps]. - return_dict (
bool, padrãoTrue) — Se deve retornar um Transformer2DModelOutput em vez de uma tupla simples.
Retorna
Transformer2DModelOutput ou tuple
A previsão da forma (batch_size, num_frames, height, width, out_visual_dim).