Diffusers documentation

Kandinsky 5.0 Video

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 5.0 Video

Kandinsky 5.0 es una familia de modelos de difusión para la generación de video e imágenes.

Kandinsky 5.0 Lite, una línea de modelos ligeros de generación de video (2B parámetros) que ocupa el puesto #1 entre los modelos de código abierto de su clase. Supera a modelos más grandes y ofrece la mejor comprensión de conceptos rusos en el ecosistema de código abierto.

Kandinsky 5.0 Pro, una línea de modelos de gran tamaño para la generación de videos de alta calidad (19 mil millones de parámetros). Ofrece una generación de alta calidad en HD y más formatos de generación, como I2V.

El modelo introduce varias innovaciones clave:

  • Pipeline de difusión latente con Flow Matching para mejorar la estabilidad del entrenamiento
  • Diffusion Transformer (DiT) como columna vertebral generativa principal, con atención cruzada a los incrustados de texto
  • Codificación de texto dual usando Qwen2.5-VL y CLIP para una comprensión exhaustiva del texto
  • HunyuanVideo 3D VAE para la codificación y decodificación eficientes de video
  • Mecanismos de atención dispersa (NABLA) para el procesamiento eficiente de secuencias largas

El código original se puede encontrar en kandinskylab/Kandinsky-5.

Consulta la organización Kandinsky Lab en el Hub para los puntos de control oficiales de modelos para la generación de texto a video, que incluyen variantes preentrenadas, SFT, no-CFG y destiladas.

Modelos disponibles

Kandinsky 5.0 T2V Pro:

model_idDescripciónCasos de uso
kandinskylab/Kandinsky-5.0-T2V-Pro-sft-5s-DiffusersModelo Pro de Texto a Video de 5 segundosGeneración de texto a video de alta calidad
kandinskylab/Kandinsky-5.0-I2V-Pro-sft-5s-DiffusersModelo Pro de imagen a video de 5 segundosGeneración de video a partir de imágenes de alta calidad

Kandinsky 5.0 T2V Lite: | model_id | Descripción | Casos de uso | |------------|-------------|-----------| | kandinskylab/Kandinsky-5.0-T2V-Lite-sft-5s-Diffusers | Modelo Supervised Fine-Tuned de 5 segundos | Mayor calidad de generación | | kandinskylab/Kandinsky-5.0-T2V-Lite-sft-10s-Diffusers | Modelo Supervised Fine-Tuned de 10 segundos | Mayor calidad de generación | | kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-5s-Diffusers | Classifier-Free Guidance destilado de 5 segundos | Inferencia 2× más rápida | | kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-10s-Diffusers | Classifier-Free Guidance destilado de 10 segundos | Inferencia 2× más rápida | | kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-5s-Diffusers | Diffusion de 5 segundos destilada a 16 pasos | Inferencia 6× más rápida, pérdida mínima de calidad | | kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-10s-Diffusers | Diffusion de 10 segundos destilada a 16 pasos | Inferencia 6× más rápida, pérdida mínima de calidad | | kandinskylab/Kandinsky-5.0-T2V-Lite-pretrain-5s-Diffusers | Modelo Base preentrenado de 5 segundos | Investigación y fine-tuning | | kandinskylab/Kandinsky-5.0-T2V-Lite-pretrain-10s-Diffusers | Modelo Base preentrenado de 10 segundos | Investigación y fine-tuning |

Ejemplos de uso

Generación básica de texto a video

Pro

⚠️ ¡Advertencia! todos los modelos Pro deben inferirse con pipeline.enable_model_cpu_offload()

import torch
from diffusers import Kandinsky5T2VPipeline
from diffusers.utils import export_to_video

# Load the pipeline
model_id = "kandinskylab/Kandinsky-5.0-T2V-Pro-sft-5s-Diffusers"
pipe = Kandinsky5T2VPipeline.from_pretrained(model_id, dtype=torch.bfloat16)

pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"
pipeline.transformer.set_attention_backend("flex")                            # <--- Set attention backend to Flex
pipeline.enable_model_cpu_offload()                                           # <--- Enable cpu offloading for single GPU inference
pipeline.transformer.compile(mode="max-autotune-no-cudagraphs", dynamic=True) # <--- Compile with max-autotune-no-cudagraphs

# Generate video
prompt = "A cat and a dog baking a cake together in a kitchen."
negative_prompt = "Static, 2D cartoon, cartoon, 2d animation, paintings, images, worst quality, low quality, ugly, deformed, walking backwards"

output = pipe(
    prompt=prompt,
    negative_prompt=negative_prompt,
    height=768,
    width=1024,
    num_frames=121,  # ~5 seconds at 24fps
    num_inference_steps=50,
    guidance_scale=5.0,
).frames[0]

export_to_video(output, "output.mp4", fps=24, quality=9)

Lite

import torch
from diffusers import Kandinsky5T2VPipeline
from diffusers.utils import export_to_video

# Load the pipeline
model_id = "kandinskylab/Kandinsky-5.0-T2V-Lite-sft-5s-Diffusers"
pipe = Kandinsky5T2VPipeline.from_pretrained(model_id, dtype=torch.bfloat16)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

# Generate video
prompt = "A cat and a dog baking a cake together in a kitchen."
negative_prompt = "Static, 2D cartoon, cartoon, 2d animation, paintings, images, worst quality, low quality, ugly, deformed, walking backwards"

output = pipe(
    prompt=prompt,
    negative_prompt=negative_prompt,
    height=512,
    width=768,
    num_frames=121,  # ~5 seconds at 24fps
    num_inference_steps=50,
    guidance_scale=5.0,
).frames[0]

export_to_video(output, "output.mp4", fps=24, quality=9)

Modelos de 10 segundos

⚠️ ¡Advertencia! todos los modelos de 10 segundos deben usarse con Flex attention y compilación max-autotune-no-cudagraphs:

pipe = Kandinsky5T2VPipeline.from_pretrained(
    "kandinskylab/Kandinsky-5.0-T2V-Lite-sft-10s-Diffusers", 
    dtype=torch.bfloat16
)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

pipe.transformer.set_attention_backend(
    "flex"
)                                       # <--- Set attention backend to Flex
pipe.transformer.compile(
    mode="max-autotune-no-cudagraphs", 
    dynamic=True
)                                       # <--- Compile with max-autotune-no-cudagraphs

prompt = "A cat and a dog baking a cake together in a kitchen."
negative_prompt = "Static, 2D cartoon, cartoon, 2d animation, paintings, images, worst quality, low quality, ugly, deformed, walking backwards"

output = pipe(
    prompt=prompt,
    negative_prompt=negative_prompt,
    height=512,
    width=768,
    num_frames=241,
    num_inference_steps=50,
    guidance_scale=5.0,
).frames[0]

export_to_video(output, "output.mp4", fps=24, quality=9)

Modelo de difusión destilado

⚠️ ¡Advertencia! todos los modelos nocfg y destilados de difusión deben inferirse sin CFG (guidance_scale=1.0):

model_id = "kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-5s-Diffusers"
pipe = Kandinsky5T2VPipeline.from_pretrained(model_id, dtype=torch.bfloat16)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

output = pipe(
    prompt="A beautiful sunset over mountains",
    num_inference_steps=16,  # <--- Model is distilled in 16 steps
    guidance_scale=1.0,      # <--- no CFG
).frames[0]

export_to_video(output, "output.mp4", fps=24, quality=9)

Generación básica de imagen a video

⚠️ ¡Advertencia! todos los modelos Pro deben inferirse con pipeline.enable_model_cpu_offload()

import torch
from diffusers import Kandinsky5T2VPipeline
from diffusers.utils import export_to_video

# Load the pipeline
model_id = "kandinskylab/Kandinsky-5.0-I2V-Pro-sft-5s-Diffusers"
pipe = Kandinsky5T2VPipeline.from_pretrained(model_id, dtype=torch.bfloat16)

pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"
pipeline.transformer.set_attention_backend("flex")                            # <--- Set attention backend to Flex
pipeline.enable_model_cpu_offload()                                           # <--- Enable cpu offloading for single GPU inference
pipeline.transformer.compile(mode="max-autotune-no-cudagraphs", dynamic=True) # <--- Compile with max-autotune-no-cudagraphs

# Generate video
image = load_image(
    "https://huggingface.co/kandinsky-community/kandinsky-3/resolve/main/assets/title.jpg?download=true"
)
height = 896
width = 896
image = image.resize((width, height))

prompt = "An funny furry creture smiles happily and holds a sign that says 'Kandinsky'"
negative_prompt = ""

output = pipe(
    prompt=prompt,
    negative_prompt=negative_prompt,
    height=height,
    width=width,
    num_frames=121,  # ~5 seconds at 24fps
    num_inference_steps=50,
    guidance_scale=5.0,
).frames[0]

export_to_video(output, "output.mp4", fps=24, quality=9)

Evaluación lado a lado de Kandinsky 5.0 Pro

imageimage
Comparación con Veo 3Comparación con Veo 3 fast
imageimage
Comparación con el modo de texto a video de Wan 2.2 A14BComparación con el modo de imagen a video de Wan 2.2 A14B

Evaluación lado a lado de Kandinsky 5.0 Lite

La evaluación se basa en los prompts ampliados del Movie Gen benchmark, que están disponibles en la columna expanded_prompt del archivo benchmark/moviegen_bench.csv.

Evaluación lado a lado de Kandinsky 5.0 Lite Distill

Kandinsky5T2VPipeline

clase diffusers.Kandinsky5T2VPipeline

< >

( transformer: Kandinsky5Transformer3DModelvae: AutoencoderKLHunyuanVideotext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2VLProcessortext_encoder_2: CLIPTextModeltokenizer_2: CLIPTokenizerscheduler: FlowMatchEulerDiscreteScheduler )

Parámetros

  • transformer (Kandinsky5Transformer3DModel) — Transformador condicional para desruidar los latentes de video codificados.
  • vae (AutoencoderKLHunyuanVideo) — Modelo de Autoencoder Variacional hunyuanvideo-community/HunyuanVideo (vae) para codificar y decodificar videos a partir de representaciones latentes.
  • text_encoder (Qwen2_5_VLForConditionalGeneration) — Codificador de texto congelado Qwen2.5-VL.
  • tokenizer (AutoProcessor) — Tokenizador para Qwen2.5-VL.
  • text_encoder_2 (CLIPTextModel) — CLIP congelado, específicamente la variante clip-vit-large-patch14.
  • tokenizer_2 (CLIPTokenizer) — Tokenizer para CLIP.
  • scheduler (FlowMatchEulerDiscreteScheduler) — Un scheduler para usar en combinación con transformer para desruidar los latentes de video codificados.

Pipeline para la generación de texto a video usando Kandinsky 5.0.

Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos implementados en todas las tuberías (descarga, guardado, ejecución en un dispositivo específico, etc.).

__call__

< >

( prompt: str | list[str] = Nonenegative_prompt: str | list[str] | None = Noneheight: int = 512width: int = 768num_frames: int = 121num_inference_steps: int = 50guidance_scale: float = 5.0num_videos_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds_qwen: typing.Optional[torch.Tensor] = Noneprompt_embeds_clip: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_qwen: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_clip: typing.Optional[torch.Tensor] = Noneprompt_cu_seqlens: typing.Optional[torch.Tensor] = Nonenegative_prompt_cu_seqlens: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512 ) → ~KandinskyPipelineOutput or tuple

Parámetros

  • prompt (str o list[str], opcional) — El prompt o prompts para guiar la generación del video. Si no se define, pase prompt_embeds en su lugar.
  • negative_prompt (str o list[str], opcional) — El prompt o prompts a evitar durante la generación de video. Si no se define, pase negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (guidance_scale < 1).
  • height (int, por defecto 512) — La altura en píxeles del video generado.
  • width (int, por defecto 768) — El ancho en píxeles del video generado.
  • num_frames (int, por defecto 25) — El número de fotogramas en el video generado.
  • num_inference_steps (int, por defecto 50) — El número de pasos de desruido.
  • guidance_scale (float, por defecto 5.0) — Escala de guía tal como se define en la guía libre de clasificador.
  • num_videos_per_prompt (int, opcional, valor predeterminado 1) — El número de vídeos que se generarán por prompt.
  • generator (torch.Generator o list[torch.Generator], opcional) — Un generador de torch para hacer la generación determinista.
  • latents (torch.Tensor, opcional) — Latentes ruidosos pregenerados.
  • prompt_embeds_qwen (torch.Tensor, opcional) — Incrustaciones de texto pregeneradas del codificador de texto de Qwen.
  • prompt_embeds_clip (torch.Tensor, opcional) — Incrustaciones de texto pregeneradas del codificador de texto de CLIP.
  • negative_prompt_embeds_qwen (torch.Tensor, opcional) — Incrustaciones de texto negativas pregeneradas del codificador de texto de Qwen.
  • negative_prompt_embeds_clip (torch.Tensor, opcional) — Incrustaciones de texto negativas pregeneradas del codificador de texto de CLIP.
  • prompt_cu_seqlens (torch.Tensor, opcional) — Longitudes de secuencia acumuladas para las incrustaciones del prompt de Qwen, utilizadas para la atención de longitud variable.
  • negative_prompt_cu_seqlens (torch.Tensor, opcional) — Longitudes de secuencia acumuladas para los embeddings del prompt negativo de Qwen, utilizadas para la atención de longitud variable.
  • output_type (str, opcional, valor predeterminado "pil") — El formato de salida del video generado.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un KandinskyPipelineOutput.
  • callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opcional) — Una función que se llama al final de cada paso de desruido.
  • callback_on_step_end_tensor_inputs (list, opcional) — La lista de entradas de tensor para la función callback_on_step_end.
  • max_sequence_length (int, por defecto 512) — La longitud máxima de la secuencia para la codificación de texto.

Devuelve

~KandinskyPipelineOutput o tuple

Si return_dict es True, se devuelve KandinskyPipelineOutput; en caso contrario, se devuelve una tuple cuyo primer elemento es una lista con las imágenes generadas.

La función de llamada para el pipeline de generación.

Ejemplos:

>>> import torch
>>> from diffusers import Kandinsky5T2VPipeline
>>> from diffusers.utils import export_to_video

>>> # Available models:
>>> # kandinskylab/Kandinsky-5.0-T2V-Pro-sft-5s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-sft-5s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-5s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-5s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-pretrain-5s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-sft-10s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-10s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-10s-Diffusers
>>> # kandinskylab/Kandinsky-5.0-T2V-Lite-pretrain-10s-Diffusers

>>> model_id = "kandinskylab/Kandinsky-5.0-T2V-Lite-sft-5s-Diffusers"
>>> pipe = Kandinsky5T2VPipeline.from_pretrained(model_id, torch_dtype=torch.bfloat16)
>>> pipe = pipe.to("cuda")

>>> prompt = "A cat and a dog baking a cake together in a kitchen."
>>> negative_prompt = "Static, 2D cartoon, cartoon, 2d animation, paintings, images, worst quality, low quality, ugly, deformed, walking backwards"

>>> output = pipe(
...     prompt=prompt,
...     negative_prompt=negative_prompt,
...     height=512,
...     width=768,
...     num_frames=121,
...     num_inference_steps=50,
...     guidance_scale=5.0,
... ).frames[0]

>>> export_to_video(output, "output.mp4", fps=24, quality=9)

check_inputs

< >

( promptnegative_promptheightwidthprompt_embeds_qwen = Noneprompt_embeds_clip = Nonenegative_prompt_embeds_qwen = Nonenegative_prompt_embeds_clip = Noneprompt_cu_seqlens = Nonenegative_prompt_cu_seqlens = Nonecallback_on_step_end_tensor_inputs = Nonemax_sequence_length = None )

Parámetros

  • prompt — Prompt de entrada
  • negative_prompt — Prompt negativo para la guía
  • height — Altura del video
  • width — Ancho del video
  • prompt_embeds_qwen — Embeddings de prompt de Qwen precalculados
  • prompt_embeds_clip — Embeddings de prompt de CLIP precalculados
  • negative_prompt_embeds_qwen — Embeddings de prompt negativo de Qwen precalculados
  • negative_prompt_embeds_clip — Embeddings de prompt negativo de CLIP precalculados
  • prompt_cu_seqlens — Longitudes de secuencia acumuladas precalculadas para el prompt positivo de Qwen
  • negative_prompt_cu_seqlens — Longitudes de secuencia acumuladas precalculadas para el prompt negativo de Qwen
  • callback_on_step_end_tensor_inputs — Entradas de tensor del callback

Lanza

ValueError

  • ValueError — Si las entradas no son válidas

Validar los parámetros de entrada del pipeline.

encode_prompt

< >

( prompt: str | list[str]num_videos_per_prompt: int = 1max_sequence_length: int = 512device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None ) → tuple[torch.Tensor, torch.Tensor, torch.Tensor]

Parámetros

  • prompt (str o list[str]) — Prompt a codificar.
  • num_videos_per_prompt (int, opcional, valor predeterminado 1) — Número de vídeos que se generan por indicación.
  • max_sequence_length (int, opcional, valor predeterminado 512) — Longitud máxima de la secuencia para la codificación de texto.
  • device (torch.device, opcional) — Dispositivo de Torch.
  • dtype (torch.dtype, opcional) — dtype de Torch.

Devuelve

tuple[torch.Tensor, torch.Tensor, torch.Tensor]

  • Incrustaciones de texto de Qwen de forma (batch_size * num_videos_per_prompt, sequence_length, embedding_dim)
  • CLIP pooled embeddings de forma (batch_size * num_videos_per_prompt, clip_embedding_dim)
  • Longitudes de secuencia acumuladas (cu_seqlens) para los embeddings de Qwen de forma (batch_size * num_videos_per_prompt + 1,)

Codifica un único prompt (positivo o negativo) en estados ocultos del codificador de texto.

Este método combina los embeddings de los codificadores de texto de Qwen2.5-VL y CLIP para crear representaciones de texto integrales para la generación de video.

fast_sta_nabla

< >

( T: intH: intW: intwT: int = 3wH: int = 3wW: int = 3device = 'cuda' ) → torch.Tensor

Parámetros

  • T (int) — Número de fotogramas temporales
  • H (int) — Altura en el espacio latente
  • W (int) — Ancho en el espacio latente
  • wT (int) — Tamaño de la ventana de atención temporal
  • wH (int) — Tamaño de la ventana de atención de altura
  • wW (int) — Tamaño de la ventana de atención
  • device (str) — Dispositivo en el que se creará el tensor

Devuelve

torch.Tensor

Máscara de atención dispersa de forma (THW, THW)

Cree una máscara de atención temporal dispersa (STA) para una generación de video eficiente.

Este método genera una máscara que limita la atención a fotogramas y posiciones espaciales cercanos, reduciendo la complejidad computacional para la generación de video.

get_sparse_params

< >

( sampledevice ) → Dict

Parámetros

  • sample (torch.Tensor) — Tensor de muestra de entrada
  • device (torch.device) — Dispositivo en el que colocar los tensores

Devuelve

Dict

Diccionario que contiene los parámetros de atención dispersa

Genera los parámetros de atención dispersa para el transformador en función de las dimensiones de la muestra.

Este método calcula la configuración de atención dispersa necesaria para un procesamiento de video eficiente en el modelo transformer.

prepare_latents

< >

( batch_size: intnum_channels_latents: int = 16height: int = 480width: int = 832num_frames: int = 81dtype: typing.Optional[torch.dtype] = Nonedevice: typing.Optional[torch.device] = Nonegenerator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = None ) → torch.Tensor

Parámetros

  • batch_size (int) — Número de vídeos a generar
  • num_channels_latents (int) — Número de canales en el espacio latente
  • height (int) — Altura del video generado
  • width (int) — Ancho del video generado
  • num_frames (int) — Número de fotogramas en el video
  • dtype (torch.dtype) — Tipo de datos para los latentes
  • device (torch.device) — Dispositivo en el que se crearán los latentes
  • generator (torch.Generator) — Generador de números aleatorios
  • latents (torch.Tensor) — Latentes existentes para usar

Devuelve

torch.Tensor

Tensor latente preparado

Prepara las variables latentes iniciales para la generación de video.

Este método crea latentes de ruido aleatorio o utiliza los latentes proporcionados como punto de partida para el proceso de desruido.

Kandinsky5I2VPipeline

clase diffusers.Kandinsky5I2VPipeline

< >

( transformer: Kandinsky5Transformer3DModelvae: AutoencoderKLHunyuanVideotext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2VLProcessortext_encoder_2: CLIPTextModeltokenizer_2: CLIPTokenizerscheduler: FlowMatchEulerDiscreteScheduler )

Parámetros

  • transformer (Kandinsky5Transformer3DModel) — Transformador condicional para desruidar los latentes de video codificados.
  • vae (AutoencoderKLHunyuanVideo) — Modelo de Autoencoder Variacional hunyuanvideo-community/HunyuanVideo (vae) para codificar y decodificar videos a partir de representaciones latentes.
  • text_encoder (Qwen2_5_VLForConditionalGeneration) — Codificador de texto congelado Qwen2.5-VL.
  • tokenizer (AutoProcessor) — Tokenizador para Qwen2.5-VL.
  • text_encoder_2 (CLIPTextModel) — CLIP congelado, específicamente la variante clip-vit-large-patch14.
  • tokenizer_2 (CLIPTokenizer) — Tokenizer para CLIP.
  • scheduler (FlowMatchEulerDiscreteScheduler) — Un scheduler para usar en combinación con transformer para desruidar los latentes de video codificados.

Pipeline para la generación de video a partir de imágenes usando Kandinsky 5.0.

Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos implementados en todas las tuberías (descarga, guardado, ejecución en un dispositivo específico, etc.).

__call__

< >

( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]prompt: str | list[str] = Nonenegative_prompt: str | list[str] | None = Noneheight: int = 512width: int = 768num_frames: int = 121num_inference_steps: int = 50guidance_scale: float = 5.0num_videos_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds_qwen: typing.Optional[torch.Tensor] = Noneprompt_embeds_clip: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_qwen: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_clip: typing.Optional[torch.Tensor] = Noneprompt_cu_seqlens: typing.Optional[torch.Tensor] = Nonenegative_prompt_cu_seqlens: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int, NoneType], diffusers.callbacks.PipelineCallback | diffusers.callbacks.MultiPipelineCallbacks]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512 ) → ~KandinskyPipelineOutput or tuple

Parámetros

  • image (PipelineImageInput) — La imagen de entrada para condicionar la generación. Debe ser una imagen, una lista de imágenes o un torch.Tensor.
  • prompt (str o list[str], opcional) — El prompt o prompts para guiar la generación del video. Si no se define, pase prompt_embeds en su lugar.
  • negative_prompt (str o list[str], opcional) — El prompt o prompts a evitar durante la generación de video. Si no se define, pase negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (guidance_scale < 1).
  • height (int, por defecto 512) — La altura en píxeles del video generado.
  • width (int, por defecto 768) — El ancho en píxeles del video generado.
  • num_frames (int, por defecto 121) — El número de fotogramas en el video generado.
  • num_inference_steps (int, por defecto 50) — El número de pasos de desruido.
  • guidance_scale (float, por defecto 5.0) — Escala de guía tal como se define en la guía libre de clasificador.
  • num_videos_per_prompt (int, opcional, valor predeterminado 1) — El número de vídeos que se generarán por prompt.
  • generator (torch.Generator o list[torch.Generator], opcional) — Un generador de torch para hacer la generación determinista.
  • latents (torch.Tensor, opcional) — Latentes ruidosos pregenerados.
  • prompt_embeds_qwen (torch.Tensor, opcional) — Incrustaciones de texto de Qwen pregeneradas.
  • prompt_embeds_clip (torch.Tensor, opcional) — Incrustaciones de texto CLIP pregeneradas.
  • negative_prompt_embeds_qwen (torch.Tensor, opcional) — Incrustaciones de texto negativo de Qwen pregeneradas.
  • negative_prompt_embeds_clip (torch.Tensor, opcional) — Incrustaciones de texto negativo de CLIP pregeneradas.
  • prompt_cu_seqlens (torch.Tensor, opcional) — Longitudes de secuencia acumuladas pregeneradas para el prompt positivo de Qwen.
  • negative_prompt_cu_seqlens (torch.Tensor, opcional) — Longitudes de secuencia acumuladas pregeneradas para el prompt negativo de Qwen.
  • output_type (str, opcional, valor predeterminado "pil") — El formato de salida del video generado.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un KandinskyPipelineOutput.
  • callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opcional) — Una función que se llama al final de cada paso de desruido.
  • callback_on_step_end_tensor_inputs (List, opcional) — La lista de entradas de tensor para la función callback_on_step_end.
  • max_sequence_length (int, por defecto 512) — La longitud máxima de la secuencia para la codificación de texto.

Devuelve

~KandinskyPipelineOutput o tuple

Si return_dict es True, se devuelve KandinskyPipelineOutput; en caso contrario, se devuelve una tuple cuyo primer elemento es una lista con los videos generados.

La función de llamada al pipeline para la generación de imagen a video.

Ejemplos:

>>> import torch
>>> from diffusers import Kandinsky5I2VPipeline
>>> from diffusers.utils import export_to_video, load_image

>>> # Available models:
>>> # kandinskylab/Kandinsky-5.0-I2V-Pro-sft-5s-Diffusers

>>> model_id = "kandinskylab/Kandinsky-5.0-I2V-Pro-sft-5s-Diffusers"
>>> pipe = Kandinsky5I2VPipeline.from_pretrained(model_id, torch_dtype=torch.bfloat16)
>>> pipe = pipe.to("cuda")

>>> image = load_image(
...     "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/astronaut.jpg"
... )
>>> prompt = "An astronaut floating in space with Earth in the background, cinematic shot"
>>> negative_prompt = "Static, 2D cartoon, cartoon, 2d animation, paintings, images, worst quality, low quality, ugly, deformed, walking backwards"

>>> output = pipe(
...     image=image,
...     prompt=prompt,
...     negative_prompt=negative_prompt,
...     height=512,
...     width=768,
...     num_frames=121,
...     num_inference_steps=50,
...     guidance_scale=5.0,
... ).frames[0]

>>> export_to_video(output, "output.mp4", fps=24, quality=9)

check_inputs

< >

( promptnegative_promptimageheightwidthprompt_embeds_qwen = Noneprompt_embeds_clip = Nonenegative_prompt_embeds_qwen = Nonenegative_prompt_embeds_clip = Noneprompt_cu_seqlens = Nonenegative_prompt_cu_seqlens = Nonecallback_on_step_end_tensor_inputs = Nonemax_sequence_length = None )

Parámetros

  • prompt — Prompt de entrada
  • negative_prompt — Prompt negativo para la guía
  • image — Imagen de entrada para el condicionamiento
  • height — Altura del video
  • width — Ancho del video
  • prompt_embeds_qwen — Embeddings de prompt de Qwen precalculados
  • prompt_embeds_clip — Embeddings de prompt de CLIP precalculados
  • negative_prompt_embeds_qwen — Embeddings de prompt negativo de Qwen precalculados
  • negative_prompt_embeds_clip — Embeddings de prompt negativo de CLIP precalculados
  • prompt_cu_seqlens — Longitudes de secuencia acumuladas precalculadas para el prompt positivo de Qwen
  • negative_prompt_cu_seqlens — Longitudes de secuencia acumuladas precalculadas para el prompt negativo de Qwen
  • callback_on_step_end_tensor_inputs — Entradas de tensor del callback

Lanza

ValueError

  • ValueError — Si las entradas no son válidas

Validar los parámetros de entrada del pipeline.

encode_prompt

< >

( prompt: str | list[str]num_videos_per_prompt: int = 1max_sequence_length: int = 512device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None ) → tuple[torch.Tensor, torch.Tensor, torch.Tensor]

Parámetros

  • prompt (str o list[str]) — Prompt a codificar.
  • num_videos_per_prompt (int, opcional, valor predeterminado 1) — Número de vídeos que se generan por indicación.
  • max_sequence_length (int, opcional, valor predeterminado 512) — Longitud máxima de la secuencia para la codificación de texto.
  • device (torch.device, opcional) — Dispositivo de Torch.
  • dtype (torch.dtype, opcional) — dtype de Torch.

Devuelve

tuple[torch.Tensor, torch.Tensor, torch.Tensor]

  • Incrustaciones de texto de Qwen de forma (batch_size * num_videos_per_prompt, sequence_length, embedding_dim)
  • CLIP pooled embeddings de forma (batch_size * num_videos_per_prompt, clip_embedding_dim)
  • Longitudes de secuencia acumuladas (cu_seqlens) para los embeddings de Qwen de forma (batch_size * num_videos_per_prompt + 1,)

Codifica un único prompt (positivo o negativo) en estados ocultos del codificador de texto.

Este método combina los embeddings de los codificadores de texto de Qwen2.5-VL y CLIP para crear representaciones de texto integrales para la generación de video.

fast_sta_nabla

< >

( T: intH: intW: intwT: int = 3wH: int = 3wW: int = 3device = 'cuda' ) → torch.Tensor

Parámetros

  • T (int) — Número de fotogramas temporales
  • H (int) — Altura en el espacio latente
  • W (int) — Ancho en el espacio latente
  • wT (int) — Tamaño de la ventana de atención temporal
  • wH (int) — Tamaño de la ventana de atención de altura
  • wW (int) — Tamaño de la ventana de atención
  • device (str) — Dispositivo en el que se creará el tensor

Devuelve

torch.Tensor

Máscara de atención dispersa de forma (THW, THW)

Cree una máscara de atención temporal dispersa (STA) para una generación de video eficiente.

Este método genera una máscara que limita la atención a fotogramas y posiciones espaciales cercanos, reduciendo la complejidad computacional para la generación de video.

get_sparse_params

< >

( sampledevice ) → Dict

Parámetros

  • sample (torch.Tensor) — Tensor de muestra de entrada
  • device (torch.device) — Dispositivo en el que colocar los tensores

Devuelve

Dict

Diccionario que contiene los parámetros de atención dispersa

Genera los parámetros de atención dispersa para el transformador en función de las dimensiones de la muestra.

Este método calcula la configuración de atención dispersa necesaria para un procesamiento de video eficiente en el modelo transformer.

prepare_latents

< >

( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]batch_size: intnum_channels_latents: int = 16height: int = 480width: int = 832num_frames: int = 81dtype: typing.Optional[torch.dtype] = Nonedevice: typing.Optional[torch.device] = Nonegenerator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = None ) → torch.Tensor

Parámetros

  • image (PipelineImageInput) — Imagen de entrada para condicionar la generación
  • batch_size (int) — Número de vídeos a generar
  • num_channels_latents (int) — Número de canales en el espacio latente
  • height (int) — Altura del video generado
  • width (int) — Ancho del video generado
  • num_frames (int) — Número de fotogramas en el video
  • dtype (torch.dtype) — Tipo de datos para los latentes
  • device (torch.device) — Dispositivo en el que se crearán los latentes
  • generator (torch.Generator) — Generador de números aleatorios
  • latents (torch.Tensor) — Latentes existentes para usar

Devuelve

torch.Tensor

Tensor latente preparado con el primer fotograma como imagen codificada

Prepara las variables latentes iniciales para la generación de imagen a video.

Este método crea latentes de ruido aleatorio para todos los fotogramas excepto el primero, que se reemplaza con la imagen de entrada codificada.

Cita

@misc{kandinsky2025,
    author = {Alexander Belykh and Alexander Varlamov and Alexey Letunovskiy and Anastasia Aliaskina and Anastasia Maltseva and Anastasiia Kargapoltseva and Andrey Shutkin and Anna Averchenkova and Anna Dmitrienko and Bulat Akhmatov and Denis Dimitrov and Denis Koposov and Denis Parkhomenko and Dmitrii and Ilya Vasiliev and Ivan Kirillov and Julia Agafonova and Kirill Chernyshev and Kormilitsyn Semen and Lev Novitskiy and Maria Kovaleva and Mikhail Mamaev and Mikhailov and Nikita Kiselev and Nikita Osterov and Nikolai Gerasimenko and Nikolai Vaulin and Olga Kim and Olga Vdovchenko and Polina Gavrilova and Polina Mikhailova and Tatiana Nikulina and Viacheslav Vasilev and Vladimir Arkhipkin and Vladimir Korviakov and Vladimir Polovnikov and Yury Kolabushin},
    title = {Kandinsky 5.0: A family of diffusion models for Video & Image generation},
    howpublished = {\url{https://github.com/kandinskylab/Kandinsky-5}},
    year = 2025
}
Update on GitHub