Diffusers documentation

Kandinsky 6 Transformers

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
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 utilise un transformeur de diffusion multimodal qui débruite conjointement les latents vidéo et audio pour la génération de vidéo et d’audio à partir de texte ou d’image, ainsi qu’un transformeur de diffusion sans texte pour la super-résolution vidéo.

Kandinsky6Transformer3DModel

Le transformer multimodal utilisé par 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

< >

( 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 )

Paramètres

  • in_visual_dim (int, facultatif, par défaut 16) — Nombre de canaux latents d'entrée vidéo.
  • out_visual_dim (int, facultatif, par défaut 16) — Nombre de canaux latents de sortie pour la vidéo.
  • in_text_dim (int, facultatif, par défaut 3584) — Dimension des embeddings de jetons de texte.
  • in_text_dim2 (int, facultatif, par défaut 768) — Dimension de l'embedding de texte agrégé.
  • time_dim (int, facultatif, par défaut 1024) — Dimension de l'embedding temporel.
  • patch_size (tuple[int, int, int], facultatif, par défaut (1, 2, 2)) — Taille des patches vidéo.
  • model_dim (int, facultatif, par défaut 4096) — Dimension cachée du transformateur vidéo.
  • ff_dim (int, facultatif, par défaut 16384) — Dimension cachée du réseau de propagation avant de la vidéo.
  • num_text_blocks (int, facultatif, par défaut 4) — Nombre de blocs de texte par modalité.
  • num_visual_blocks (int, facultatif, par défaut 60) — Nombre de blocs vidéo/audio fusionnés.
  • axes_dims (tuple[int, int, int], facultatif, par défaut (32, 48, 48)) — Dimensions de RoPE pour la vidéo.
  • visual_cond (bool, facultatif, valeur par défaut True) — Indique si des canaux de conditionnement vidéo sont présents.
  • in_audio_dim (int, facultatif, par défaut 20) — Nombre de canaux latents audio en entrée.
  • out_audio_dim (int, facultatif, par défaut 20) — Nombre de canaux latents audio en sortie.
  • model_dim_a (int, facultatif) — Dimension cachée du transformeur audio. Par défaut, model_dim.
  • time_dim_a (int, facultatif) — Dimension de l'embedding temporel audio. Valeur par défaut : time_dim.
  • ff_dim_a (int, facultatif) — Dimension cachée du réseau de propagation avant audio. Valeur par défaut : ff_dim.
  • axes_dims_a (tuple[int, int, int], facultatif) — Dimensions de RoPE audio. Valeur par défaut : axes_dims.
  • audio_freqs_scaling (float, facultatif, valeur par défaut 1.0) — Mise à l'échelle des fréquences RoPE audio.
  • scale_factor (tuple[float, float, float], facultatif, par défaut (1.0, 2.0, 2.0)) — Mise à l'échelle des fréquences RoPE par axe (t, h, w) appliquée aux positions de la vidéo.
  • text_token_padding (bool, facultatif, valeur par défaut False) — Métadonnées du point de contrôle indiquant si les séquences de texte du modèle de référence sont remplies. forward accepte toujours un encoder_attention_mask facultatif, indépendamment de ce drapeau ; le fait de le transmettre ou non relève entièrement de l’appelant.
  • ca_rope (bool, facultatif, valeur par défaut False) — Indique s'il faut utiliser le RoPE audio intermodal.
  • cross_gates (bool, facultatif, par défaut False) — Indique s'il faut utiliser des portes résiduelles inter-modales.
  • fix_modulation (bool, facultatif, défaut : False) — Indique s'il faut utiliser la variante à modulation fixe.
  • visual_token_type_num_embeddings (int, facultatif, valeur par défaut 0) — Nombre d'embeddings de type de jeton visuel.

Kandinsky 6, un transformeur multimodal pour la génération de vidéo et d'audio à partir de texte et d'images.

La vidéo et l’audio sont débruités ensemble à l’aide de blocs de transformateurs fusionnés inter-modaux, chacun étant conditionné par sa propre branche de texte (jetons Qwen2.5-VL + plongée CLIP agrégée). Ne transmettre aucun audio_hidden_states permet de débruyer la vidéo seule, tout en exécutant toujours les étapes d’auto-attention vidéo, d’attention croisée et de réseau de neurones entièrement connecté du bloc fusionné. Les plongées rotationnelles sont calculées à l’intérieur de forward à partir de la grille de jetons.

Les points de contrôle publiés définissent text_token_padding, ca_rope, cross_gates et fix_modulation sur True (voir le fichier transformer/config.json de chaque point de contrôle) ; les valeurs par défaut False ne décrivent qu’une variante d’architecture pour laquelle ce dépôt ne fournit pas de poids.

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

Paramètres

  • hidden_states (torch.Tensor de forme (batch_size, num_frames, height, width, in_channels)) — Latents vidéo dans le format (B, T, H, W, C). Avec visual_cond=True, in_channels vaut 2 * in_visual_dim + 1 : le latent bruité, le latent de conditionnement et un masque de conditionnement.
  • encoder_hidden_states (torch.Tensor de forme (batch_size, sequence_length, in_text_dim)) — Embeddings des jetons de texte, partagés par les branches texte de la vidéo et de l’audio.
  • pooled_projections (torch.Tensor de forme (batch_size, in_text_dim2)) — Embedding de texte agrégé ajouté à l'embedding de timestep des deux branches.
  • timestep (torch.Tensor de forme (batch_size,)) — Pas de diffusion sur l'échelle [0, num_train_timesteps], partagé par les deux modalités.
  • audio_hidden_states (torch.Tensor de forme (batch_size, audio_length, in_audio_dim), facultatif) — Latents audio. S'ils sont omis, les blocs fusionnés n'exécutent que leur chemin vidéo.
  • visual_rope_pos (tuple[torch.Tensor, torch.Tensor, torch.Tensor], facultatif) — Indices de position rotative par axe (t, h, w) des jetons vidéo patchifiés. Par défaut, arange sur chaque axe. Le pipeline transmet un index temporel explicite lorsqu’il ajoute un cadre de référence qui réutilise la position 0.
  • encoder_attention_mask (torch.Tensor de forme (batch_size, sequence_length), facultatif) — Masque booléen de bourrage pour encoder_hidden_states. Passez None si le prompt n’est pas bourré.
  • visual_token_type_ids (torch.Tensor de forme (batch_size, num_frames), facultatif) — Identifiants de type de jeton par image, intégrés via visual_token_type_embeddings. Nécessite visual_token_type_num_embeddings > 0.
  • return_dict (bool, par défaut True) — Indique s'il faut retourner un Kandinsky6TransformerOutput plutôt qu'un simple tuple.

Retourne

Kandinsky6TransformerOutput ou tuple

La vitesse vidéo prédite dans la disposition (B, T, H, W, out_visual_dim) et, lorsque audio_hidden_states a été fourni, la vitesse audio prédite de forme (B, audio_length, out_audio_dim).

Kandinsky6SRTransformer3DModel

Le transformer sans texte utilisé par Kandinsky6SRPipeline pour affiner une tuile à la fois de la vidéo mise à l'échelle.

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

< >

( 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)) )

Paramètres

  • in_visual_dim (int, par défaut 64) — Nombre de canaux latents du K-VAE.
  • out_visual_dim (int, par défaut 640) — Nombre de canaux de sortie.
  • time_dim (int, par défaut 512) — Dimension de l'embedding du pas de temps.
  • patch_size (tuple[int, int, int], defaults to (1, 1, 1)) — Patch size as (temporal, height, width).
  • model_dim (int, par défaut 1792) — Dimension cachée du transformer.
  • ff_dim (int, par défaut 7168) — Dimension interne des réseaux feed-forward.
  • num_visual_blocks (int, par défaut 32) — Nombre de blocs transformer.
  • axes_dims (tuple[int, int, int], par défaut (16, 24, 24)) — Dimensions de RoPE pour chaque axe (t, h, w) ; leur somme correspond à la dimension de tête d'attention.
  • scale_factor (tuple[float, float, float], par défaut (1.0, 2.0, 2.0)) — Mise à l'échelle des fréquences RoPE par axe appliquée aux positions des jetons.
  • nabla_threshold (float, par défaut 0.8) — Seuil d'attention cumulée pour la sélection des blocs NABLA.
  • nabla_window (tuple[int, int, int], par défaut (11, 7, 7)) — Étendues impaires (t, h, w) du prior à tuiles glissantes auquel chaque bloc de jetons 8x8 accorde toujours son attention.
  • 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.

Transformeur de diffusion sans texte pour la super-résolution vidéo de Kandinsky 6.

Le modèle débruite les tuiles de la vidéo latente du K-VAE. Son entrée concatène le latent bruité avec le latent d’ancrage et le masque d’ancrage qui conditionnent la super-résolution (2 * in_visual_dim + 1 canaux), et sa sortie contient out_visual_dim canaux : in_visual_dim pour un point de contrôle de vitesse standard, ou un n_grid * in_visual_dim élargi pour les points de contrôle distillés PiflowScheduler. L’auto-attention vidéo passe par le motif de blocs creux NABLA sur le backend d’attention flex, ce qui exige que la grille de jetons (height et width après patch_size) soit divisible par 8.

forward

< >

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

Paramètres

  • hidden_states (torch.Tensor de forme (batch_size, num_frames, height, width, 2 * in_visual_dim + 1)) — Tuiles latentes dans la disposition (B, T, H, W, C) : le latent bruité, le latent d’ancrage et le masque d’ancrage concaténés le long de l’axe des canaux.
  • timestep (torch.Tensor de forme (batch_size,)) — Pas de diffusion sur l'échelle [0, num_train_timesteps].
  • return_dict (bool, par défaut True) — Indique s'il faut retourner un Transformer2DModelOutput plutôt qu'un simple tuple.

Retourne

Transformer2DModelOutput ou tuple

La prédiction de la forme (batch_size, num_frames, height, width, out_visual_dim).

Update on GitHub