Diffusers documentation
Kandinsky 6 Transformers
Kandinsky 6 Transformers
Kandinsky 6 utiliza un transformador de difusión multimodal que desruidea los latentes de video y audio de forma conjunta para la generación de video y audio a partir de texto/imagen, y un transformador de difusión sin texto para la superresolución de video.
Kandinsky6Transformer3DModel
El transformer multimodal utilizado 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
)clase 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, valor predeterminado 16) — Número de canales latentes de entrada del video.
- out_visual_dim (int, opcional, valor predeterminado 16) — Número de canales latentes de video de salida.
- in_text_dim (int, opcional, valor predeterminado 3584) — Dimensión de la incrustación de tokens de texto.
- in_text_dim2 (int, opcional, valor predeterminado 768) — Dimensión de la incrustación de texto agrupada.
- time_dim (int, opcional, valor predeterminado 1024) — Dimensión del embedding temporal.
- patch_size (tuple[int, int, int], opcional, por defecto
(1, 2, 2)) — Tamaño del parche de video. - model_dim (int, opcional, valor predeterminado 4096) — Dimensión oculta del transformer de video.
- ff_dim (int, opcional, valor predeterminado 16384) — Dimensión oculta de la red feed-forward del video.
- num_text_blocks (int, opcional, valor predeterminado 4) — Número de bloques de texto por modalidad.
- num_visual_blocks (int, opcional, valor predeterminado 60) — Número de bloques de video/audio fusionados.
- axes_dims (tuple[int, int, int], opcional, por defecto
(32, 48, 48)) — Dimensiones de RoPE para video. - visual_cond (bool, opcional, valor predeterminado True) — Indica si están presentes los canales de condicionamiento de video.
- in_audio_dim (int, opcional, valor predeterminado 20) — Número de canales latentes de audio de entrada.
- out_audio_dim (int, opcional, valor predeterminado 20) — Número de canales latentes de audio de salida.
- model_dim_a (int, opcional) — Dimensión oculta del transformador de audio. El valor predeterminado es model_dim.
- time_dim_a (int, opcional) — Dimensión del embedding temporal de audio. El valor predeterminado es time_dim.
- ff_dim_a (int, opcional) — Dimensión oculta de la red feed-forward de audio. El valor predeterminado es ff_dim.
- axes_dims_a (tuple[int, int, int], opcional) — Dimensiones de RoPE para audio. El valor predeterminado es axes_dims.
- audio_freqs_scaling (float, opcional, valor predeterminado 1.0) — Escalado de frecuencia de RoPE para audio.
- scale_factor (tuple[float, float, float], opcional, valor predeterminado (1.0, 2.0, 2.0)) — Escalado de frecuencia RoPE por eje (t, h, w) aplicado a las posiciones del video.
- text_token_padding (bool, opcional, valor predeterminado False) — Metadatos del punto de control que registran si las secuencias de texto del modelo de referencia están rellenas. forward siempre acepta un encoder_attention_mask opcional, independientemente de esta bandera; si se pasa o no depende por completo del llamador.
- ca_rope (bool, opcional, predeterminado en False) — Si se debe usar RoPE de audio entre modalidades.
- cross_gates (bool, opcional, predeterminado en False) — Si se deben usar puertas residuales entre modalidades.
- fix_modulation (bool, opcional, predeterminado en False) — Si se debe usar la variante de modulación fija.
- visual_token_type_num_embeddings (int, opcional, valor predeterminado 0) — Número de embeddings de tipo de token visual.
Kandinsky 6, un transformer multimodal para la generación de video y audio a partir de texto/imagen.
El video y el audio se desruidan juntos a través de bloques de transformador fusionados y multimodales, cada uno condicionado por su propia rama de texto (tokens de Qwen2.5-VL + embedding agrupado de CLIP). Si no se pasa audio_hidden_states, se desruidan solo el video, ejecutando aún así las etapas de autoatención del video, atención cruzada y red feed-forward del bloque fusionado. Los embeddings rotatorios se calculan dentro de forward a partir de la cuadrícula de tokens.
Los puntos de control publicados establecen text_token_padding, ca_rope, cross_gates y fix_modulation en True (consulte el transformer/config.json de cada punto de control); los valores predeterminados de False solo describen una variante de arquitectura para la que este repositorio no distribuye 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 video en el formato(B, T, H, W, C). Convisual_cond=True,in_channelses2 * in_visual_dim + 1: el latente con ruido, el latente de condicionamiento y una máscara de condicionamiento. - encoder_hidden_states (
torch.Tensorde forma(batch_size, sequence_length, in_text_dim)) — Incrustaciones de tokens de texto, compartidas por las ramas de texto de video y audio. - pooled_projections (
torch.Tensorde forma(batch_size, in_text_dim2)) — Incrustado de texto agrupado que se añade al incrustado del paso de tiempo de ambas ramas. - timestep (
torch.Tensorde forma(batch_size,)) — Paso de difusión en la escala[0, num_train_timesteps], compartido por ambas modalidades. - audio_hidden_states (
torch.Tensorde forma(batch_size, audio_length, in_audio_dim), opcional) — Latentes de audio. Si se omite, los bloques fusionados solo ejecutan su ruta de video. - visual_rope_pos (
tuple[torch.Tensor, torch.Tensor, torch.Tensor], opcional) — Índices de posición rotacional por eje(t, h, w)de los tokens de video segmentados. Por defecto, se usaarangeen cada eje. El pipeline pasa un índice temporal explícito cuando añade un cuadro de referencia que reutiliza la posición0. - encoder_attention_mask (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Máscara booleana de relleno paraencoder_hidden_states. PasaNonecuando el prompt no tiene relleno. - visual_token_type_ids (
torch.Tensorde forma(batch_size, num_frames), opcional) — ids de tipo de token por cuadro, incrustados a través devisual_token_type_embeddings. Requierevisual_token_type_num_embeddings > 0. - return_dict (
bool, por defectoTrue) — Si se debe devolver unKandinsky6TransformerOutputen lugar de una tupla simple.
Devuelve
Kandinsky6TransformerOutput o tuple
La velocidad de video predicha en el formato (B, T, H, W, out_visual_dim) y, cuando se proporcionó audio_hidden_states, la velocidad de audio predicha de forma (B, audio_length, out_audio_dim).
Kandinsky6SRTransformer3DModel
El transformer sin texto que utiliza Kandinsky6SRPipeline para refinar una baldosa a la vez del video 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)clase 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, por defecto64) — Número de canales latentes del K-VAE. - out_visual_dim (
int, por defecto640) — Número de canales de salida. - time_dim (
int, por defecto512) — Dimensión del embedding del paso de tiempo. - patch_size (
tuple[int, int, int], por defecto(1, 1, 1)) — Tamaño del parche como(temporal, height, width). - model_dim (
int, por defecto1792) — Dimensión oculta del transformer. - ff_dim (
int, por defecto7168) — Dimensión interna de las redes feed-forward. - num_visual_blocks (
int, por defecto32) — Número de bloques de transformer. - axes_dims (
tuple[int, int, int], por defecto(16, 24, 24)) — Dimensiones de RoPE por eje(t, h, w); su suma es la dimensión de la cabeza de atención. - scale_factor (
tuple[float, float, float], por defecto(1.0, 2.0, 2.0)) — Escala de frecuencia de RoPE por eje aplicada a las posiciones de los tokens. - nabla_threshold (
float, por defecto0.8) — Umbral de atención acumulada para la selección de bloques de NABLA. - nabla_window (
tuple[int, int, int], por defecto(11, 7, 7)) — Extensiones impares(t, h, w)del prior de mosaicos deslizantes al que cada bloque de tokens 8x8 siempre presta atención. - tile_sizes (
tuple[tuple[int, int], ...], por defecto((512, 512), (512, 768), (768, 512))) — Tamaños en píxeles(height, width)de los mosaicos de vídeo en los que se entrenó el modelo. Kandinsky6SRPipeline refina cada mosaico con el tamaño cuya relación de aspecto es la más cercana a la del vídeo de entrada.
Transformador de difusión sin texto para la superresolución de video de Kandinsky 6.
El modelo desruidiza los mosaicos del video latente de K-VAE. Su entrada concatena el latente ruidoso con el latente de anclaje y la máscara de anclaje que condicionan la superresolución (2 * in_visual_dim + 1 canales), y su salida contiene out_visual_dim canales: in_visual_dim para un checkpoint de velocidad simple, o un n_grid * in_visual_dim ampliado para los checkpoints destilados de PiflowScheduler. La autoatención del video se ejecuta a través del patrón de bloques dispersos NABLA en el backend de atención flex, lo que requiere que la cuadrícula de tokens (height y width después de patch_size) sea divisible entre 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)) — Mosaicos latentes en el formato(B, T, H, W, C): el latente con ruido, el latente de anclaje y la máscara de anclaje concatenados a lo largo del eje de canales. - timestep (
torch.Tensorde forma(batch_size,)) — Paso de difusión en la escala[0, num_train_timesteps]. - return_dict (
bool, por defectoTrue) — Si se debe devolver un Transformer2DModelOutput en lugar de una tupla simple.
Devuelve
Transformer2DModelOutput o tuple
La predicción de la forma (batch_size, num_frames, height, width, out_visual_dim).