Diffusers documentation

Kandinsky 6 Transformers

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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

< >

( 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

< >

( 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.Tensor de forma (batch_size, num_frames, height, width, in_channels)) — Latentes de video en el formato (B, T, H, W, C). Con visual_cond=True, in_channels es 2 * in_visual_dim + 1: el latente con ruido, el latente de condicionamiento y una máscara de condicionamiento.
  • encoder_hidden_states (torch.Tensor de 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.Tensor de 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.Tensor de forma (batch_size,)) — Paso de difusión en la escala [0, num_train_timesteps], compartido por ambas modalidades.
  • audio_hidden_states (torch.Tensor de 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 usa arange en cada eje. El pipeline pasa un índice temporal explícito cuando añade un cuadro de referencia que reutiliza la posición 0.
  • encoder_attention_mask (torch.Tensor de forma (batch_size, sequence_length), opcional) — Máscara booleana de relleno para encoder_hidden_states. Pasa None cuando el prompt no tiene relleno.
  • visual_token_type_ids (torch.Tensor de forma (batch_size, num_frames), opcional) — ids de tipo de token por cuadro, incrustados a través de visual_token_type_embeddings. Requiere visual_token_type_num_embeddings > 0.
  • return_dict (bool, por defecto True) — Si se debe devolver un Kandinsky6TransformerOutput en 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

< >

( 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 defecto 64) — Número de canales latentes del K-VAE.
  • out_visual_dim (int, por defecto 640) — Número de canales de salida.
  • time_dim (int, por defecto 512) — 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 defecto 1792) — Dimensión oculta del transformer.
  • ff_dim (int, por defecto 7168) — Dimensión interna de las redes feed-forward.
  • num_visual_blocks (int, por defecto 32) — 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 defecto 0.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

< >

( hidden_states: Tensortimestep: Tensorreturn_dict: bool = True ) → Transformer2DModelOutput or tuple

Parámetros

  • hidden_states (torch.Tensor de 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.Tensor de forma (batch_size,)) — Paso de difusión en la escala [0, num_train_timesteps].
  • return_dict (bool, por defecto True) — 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).

Update on GitHub