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 — это семейство диффузионных моделей для генерации видео и изображений.

Линейка Kandinsky 5.0 Lite — это набор лёгких моделей генерации видео (2 млрд параметров), занимающий первое место среди открытых моделей в своём классе. Они превосходят более крупные модели и обеспечивают лучшее понимание русских концепций в экосистеме открытых исходных кодов.

Линейка Kandinsky 5.0 Pro — это крупные модели высокого качества для генерации видео (19 млрд параметров). Она обеспечивает высококачественную генерацию в HD и поддерживает дополнительные форматы генерации, такие как I2V.

Модель вносит несколько ключевых инноваций:

  • Конвейер латентного диффузионного моделирования с Flow Matching для повышения стабильности обучения
  • Diffusion Transformer (DiT) в качестве основного генеративного каркаса с кросс-вниманием к текстовым эмбеддингам
  • Двойное кодирование текста с использованием Qwen2.5-VL и CLIP для комплексного понимания текста
  • HunyuanVideo 3D VAE для эффективного кодирования и декодирования видео
  • Механизмы разреженного внимания (NABLA) для эффективной обработки длинных последовательностей

Исходный код можно найти в репозитории kandinskylab/Kandinsky-5.

Ознакомьтесь с организацией Kandinsky Lab на Hub, где размещены официальные контрольные точки моделей для генерации видео по тексту, включая предобученные, SFT, no-CFG и дистиллированные варианты.

Доступные модели

Kandinsky 5.0 T2V Pro:

model_idОписаниеСценарии использования
kandinskylab/Kandinsky-5.0-T2V-Pro-sft-5s-DiffusersМодель Text-to-Video Pro для генерации видео длительностью 5 секундГенерация видео из текста высокого качества
kandinskylab/Kandinsky-5.0-I2V-Pro-sft-5s-DiffusersМодель Image-to-Video Pro для генерации видео длительностью 5 секундГенерация видео из изображений высокого качества

Kandinsky 5.0 T2V Lite: | model_id | Описание | Сценарии использования | |------------|-------------|-----------| | kandinskylab/Kandinsky-5.0-T2V-Lite-sft-5s-Diffusers | 5-секундная модель с дообучением (Supervised Fine-Tuned) | Наивысшее качество генерации | | kandinskylab/Kandinsky-5.0-T2V-Lite-sft-10s-Diffusers | 10-секундная модель с дообучением (Supervised Fine-Tuned) | Наивысшее качество генерации | | kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-5s-Diffusers | 5-секундная модель с дистилляцией Classifier-Free Guidance | Инференс в 2 раза быстрее | | kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-10s-Diffusers | 10-секундная модель с дистилляцией Classifier-Free Guidance | Инференс в 2 раза быстрее | | kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-5s-Diffusers | 5-секундная модель с дистилляцией Diffusion до 16 шагов | Инференс в 6 раз быстрее, минимальная потеря качества | | kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-10s-Diffusers | 10-секундная модель с дистилляцией Diffusion до 16 шагов | Инференс в 6 раз быстрее, минимальная потеря качества | | kandinskylab/Kandinsky-5.0-T2V-Lite-pretrain-5s-Diffusers | 5-секундная базовая предобученная модель | Исследования и дообучение | | kandinskylab/Kandinsky-5.0-T2V-Lite-pretrain-10s-Diffusers | 10-секундная базовая предобученная модель | Исследования и дообучение |

Примеры использования

Базовая генерация видео из текста

Pro

⚠️ Внимание! все модели Pro следует выводить с помощью 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)

Модели за 10 секунд

⚠️ Внимание! все модели с длительностью 10 секунд следует использовать с Flex attention и компиляцией 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)

Diffusion Distilled модель

⚠️ Внимание! все модели nocfg и дистиллированные диффузионные модели следует использовать для вывода без 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)

Базовая генерация видео из изображений

⚠️ Внимание! все модели Pro следует выводить с помощью 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)

Оценка Kandinsky 5.0 Pro в формате «рядом»

imageimage
Сравнение с Veo 3Сравнение с Veo 3 fast
imageimage
Сравнение с режимом генерации видео по тексту Wan 2.2 A14BComparison with Wan 2.2 A14B Image-to-Video mode

Сравнительная оценка Kandinsky 5.0 Lite

Оценка основана на расширенных промптах из Movie Gen benchmark, которые доступны в столбце expanded_prompt файла benchmark/moviegen_bench.csv.

Сопоставительная оценка Kandinsky 5.0 Lite Distill

Kandinsky5T2VPipeline

класс diffusers.Kandinsky5T2VPipeline

< >

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

Параметры

  • transformer (Kandinsky5Transformer3DModel) — Условный Transformer для удаления шума из закодированных латентов видео.
  • vae (AutoencoderKLHunyuanVideo) — модель вариационного автоэнкодера hunyuanvideo-community/HunyuanVideo (vae) для кодирования и декодирования видео в латентные представления и обратно.
  • text_encoder (Qwen2_5_VLForConditionalGeneration) — Замороженный текстовый энкодер Qwen2.5-VL.
  • tokenizer (AutoProcessor) — Токенизатор для Qwen2.5-VL.
  • text_encoder_2 (CLIPTextModel) — замороженный CLIP, а именно вариант clip-vit-large-patch14.
  • tokenizer_2 (CLIPTokenizer) — Токенизатор для CLIP.
  • scheduler (FlowMatchEulerDiscreteScheduler) — планировщик, используемый в связке с transformer для удаления шума из закодированных латентов видео.

Пайплайн для генерации видео из текста с использованием Kandinsky 5.0.

Эта модель наследуется от DiffusionPipeline. Общую документацию по методам, реализованным для всех пайплайнов (загрузка, сохранение, запуск на конкретном устройстве и т. д.), см. в документации родительского класса.

__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

Параметры

  • prompt (str или list[str], необязательный) — Промпт или промпты для управления генерацией видео. Если не задан, передайте вместо него prompt_embeds.
  • negative_prompt (str или list[str], необязательный) — Промпт или промпты, которые следует избегать при генерации видео. Если не определён, передайте вместо него negative_prompt_embeds. Игнорируется, если не используется guidance (guidance_scale < 1).
  • height (int, по умолчанию 512) — Высота генерируемого видео в пикселях.
  • width (int, по умолчанию 768) — Ширина генерируемого видео в пикселях.
  • num_frames (int, по умолчанию 25) — Количество кадров в сгенерированном видео.
  • num_inference_steps (int, по умолчанию 50) — Количество шагов денойзинга.
  • guidance_scale (float, по умолчанию 5.0) — Масштаб руководства, как определено в classifier-free guidance.
  • num_videos_per_prompt (int, необязательный, по умолчанию 1) — Количество видео, генерируемых для каждого промпта.
  • generator (torch.Generator или list[torch.Generator], необязательный) — Генератор torch для обеспечения детерминированности генерации.
  • latents (torch.Tensor, необязательный) — Предварительно сгенерированные зашумленные латенты.
  • prompt_embeds_qwen (torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги из текстового энкодера Qwen.
  • prompt_embeds_clip (torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги из текстового энкодера CLIP.
  • negative_prompt_embeds_qwen (torch.Tensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги из текстового энкодера Qwen.
  • negative_prompt_embeds_clip (torch.Tensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги из текстового энкодера CLIP.
  • prompt_cu_seqlens (torch.Tensor, необязательный) — Кумулятивные длины последовательностей для эмбеддингов промпта Qwen, используются для внимания переменной длины.
  • negative_prompt_cu_seqlens (torch.Tensor, необязательный) — Кумулятивные длины последовательностей для эмбеддингов отрицательного промпта Qwen, используемые для внимания переменной длины.
  • output_type (str, необязательный, по умолчанию "pil") — Формат вывода сгенерированного видео.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, возвращать ли объект KandinskyPipelineOutput.
  • callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, необязательный) — Функция, вызываемая в конце каждого шага денойзинга.
  • callback_on_step_end_tensor_inputs (list, необязательный) — Список тензорных входных данных для функции callback_on_step_end.
  • max_sequence_length (int, по умолчанию 512) — Максимальная длина последовательности для кодирования текста.

Возвращает

~KandinskyPipelineOutput или tuple

Если return_dict равно True, возвращается KandinskyPipelineOutput, иначе возвращается tuple, где первый элемент — это список с сгенерированными изображениями.

Функция вызова конвейера для генерации.

Примеры:

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

Параметры

  • prompt — Входящий промпт
  • negative_prompt — Отрицательный промпт для управления
  • height — Высота видео
  • width — ширина видео
  • prompt_embeds_qwen — Предварительно вычисленные эмбеддинги промпта Qwen
  • prompt_embeds_clip — Предварительно вычисленные эмбеддинги промптов CLIP
  • negative_prompt_embeds_qwen — Предварительно вычисленные эмбеддинги отрицательного промпта Qwen
  • negative_prompt_embeds_clip — Предварительно вычисленные эмбеддинги отрицательного промпта CLIP
  • prompt_cu_seqlens — Предварительно вычисленные накопительные длины последовательностей для положительного промпта Qwen
  • negative_prompt_cu_seqlens — Предварительно вычисленные накопительные длины последовательностей для отрицательного промпта Qwen
  • callback_on_step_end_tensor_inputs — тензорные входные данные для колбэка

Исключения

ValueError

  • ValueError — если входные данные недействительны

Проверка входных параметров конвейера.

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]

Параметры

  • prompt (str или list[str]) — Промпт для кодирования.
  • num_videos_per_prompt (int, необязательный, по умолчанию 1) — Количество видео, генерируемых для каждого промпта.
  • max_sequence_length (int, необязательный, по умолчанию 512) — Максимальная длина последовательности для кодирования текста.
  • device (torch.device, необязательный) — Устройство Torch.
  • dtype (torch.dtype, необязательный) — dtype Torch.

Возвращает

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

  • Qwen текстовые эмбеддинги формы (batch_size * num_videos_per_prompt, sequence_length, embedding_dim)
  • Собранные эмбеддинги CLIP формы (batch_size * num_videos_per_prompt, clip_embedding_dim)
  • Кумулятивные длины последовательностей (cu_seqlens) для эмбеддингов Qwen формы (batch_size * num_videos_per_prompt + 1,)

Кодирует один промпт (положительный или отрицательный) в скрытые состояния текстового энкодера.

Этот метод объединяет эмбеддинги из текстовых энкодеров Qwen2.5-VL и CLIP, чтобы создать комплексные текстовые представления для генерации видео.

fast_sta_nabla

< >

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

Параметры

  • T (int) — Количество временных кадров
  • H (int) — Высота в латентном пространстве
  • W (int) — Ширина в латентном пространстве
  • wT (int) — Размер временного окна внимания
  • wH (int) — Размер окна внимания по высоте
  • wW (int) — Размер окна внимания по ширине
  • device (str) — Устройство, на котором создаётся тензор

Возвращает

torch.Tensor

Разреженная маска внимания формы (THW, THW)

Создайте маску разреженного временного внимания (STA) для эффективной генерации видео.

Этот метод генерирует маску, ограничивающую внимание соседними кадрами и пространственными позициями, что снижает вычислительную сложность при генерации видео.

get_sparse_params

< >

( sampledevice ) → Dict

Параметры

  • sample (torch.Tensor) — Входной тензор выборки
  • device (torch.device) — Устройство, на котором размещаются тензоры

Возвращает

Dict

Словарь, содержащий параметры разреженного внимания

Сгенерируйте параметры разреженного внимания для трансформера на основе размерностей выборки.

Этот метод вычисляет конфигурацию разреженного внимания, необходимую для эффективной обработки видео в трансформерной модели.

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

Параметры

  • batch_size (int) — Количество генерируемых видео
  • num_channels_latents (int) — Количество каналов в латентном пространстве
  • height (int) — Высота сгенерированного видео
  • width (int) — Ширина сгенерированного видео
  • num_frames (int) — Количество кадров в видео
  • dtype (torch.dtype) — Тип данных для латентов
  • device (torch.device) — Устройство, на котором создаются латенты
  • generator (torch.Generator) — генератор случайных чисел
  • latents (torch.Tensor) — Существующие латенты для использования

Возвращает

torch.Tensor

Подготовленный тензор латентов

Подготовьте начальные латентные переменные для генерации видео.

Этот метод создаёт случайные шумовые латенты или использует предоставленные латенты в качестве начальной точки для процесса устранения шума.

Kandinsky5I2VPipeline

класс diffusers.Kandinsky5I2VPipeline

< >

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

Параметры

  • transformer (Kandinsky5Transformer3DModel) — Условный Transformer для удаления шума из закодированных латентов видео.
  • vae (AutoencoderKLHunyuanVideo) — модель вариационного автоэнкодера hunyuanvideo-community/HunyuanVideo (vae) для кодирования и декодирования видео в латентные представления и обратно.
  • text_encoder (Qwen2_5_VLForConditionalGeneration) — Замороженный текстовый энкодер Qwen2.5-VL.
  • tokenizer (AutoProcessor) — Токенизатор для Qwen2.5-VL.
  • text_encoder_2 (CLIPTextModel) — замороженный CLIP, а именно вариант clip-vit-large-patch14.
  • tokenizer_2 (CLIPTokenizer) — Токенизатор для CLIP.
  • scheduler (FlowMatchEulerDiscreteScheduler) — планировщик, используемый в связке с transformer для удаления шума из закодированных латентов видео.

Пайплайн для генерации видео из изображений с использованием Kandinsky 5.0.

Эта модель наследуется от DiffusionPipeline. Общую документацию по методам, реализованным для всех пайплайнов (загрузка, сохранение, запуск на конкретном устройстве и т. д.), см. в документации родительского класса.

__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

Параметры

  • image (PipelineImageInput) — Входное изображение, на основе которого выполняется генерация. Должно быть изображением, списком изображений или torch.Tensor.
  • prompt (str или list[str], необязательный) — Промпт или промпты для управления генерацией видео. Если не задан, передайте вместо него prompt_embeds.
  • negative_prompt (str или list[str], необязательный) — Промпт или промпты, которые следует избегать при генерации видео. Если не определён, передайте вместо него negative_prompt_embeds. Игнорируется, если не используется guidance (guidance_scale < 1).
  • height (int, по умолчанию 512) — Высота генерируемого видео в пикселях.
  • width (int, по умолчанию 768) — Ширина генерируемого видео в пикселях.
  • num_frames (int, по умолчанию 121) — Количество кадров в сгенерированном видео.
  • num_inference_steps (int, по умолчанию 50) — Количество шагов денойзинга.
  • guidance_scale (float, по умолчанию 5.0) — Масштаб руководства, как определено в classifier-free guidance.
  • num_videos_per_prompt (int, необязательный, по умолчанию 1) — Количество видео, генерируемых для каждого промпта.
  • generator (torch.Generator или list[torch.Generator], необязательный) — Генератор torch для обеспечения детерминированности генерации.
  • latents (torch.Tensor, необязательный) — Предварительно сгенерированные зашумленные латенты.
  • prompt_embeds_qwen (torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги Qwen.
  • prompt_embeds_clip (torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги CLIP.
  • negative_prompt_embeds_qwen (torch.Tensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги Qwen.
  • negative_prompt_embeds_clip (torch.Tensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги CLIP.
  • prompt_cu_seqlens (torch.Tensor, необязательный) — Предварительно сгенерированные накопленные длины последовательностей для положительного промпта Qwen.
  • negative_prompt_cu_seqlens (torch.Tensor, необязательный) — Предварительно вычисленные накопленные длины последовательностей для отрицательного промпта Qwen.
  • output_type (str, необязательный, по умолчанию "pil") — Формат вывода сгенерированного видео.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, возвращать ли объект KandinskyPipelineOutput.
  • callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, необязательный) — Функция, вызываемая в конце каждого шага денойзинга.
  • callback_on_step_end_tensor_inputs (List, необязательный) — Список тензорных входных данных для функции callback_on_step_end.
  • max_sequence_length (int, по умолчанию 512) — Максимальная длина последовательности для кодирования текста.

Возвращает

~KandinskyPipelineOutput или tuple

Если return_dict равно True, возвращается KandinskyPipelineOutput, иначе возвращается tuple, где первый элемент — это список с сгенерированными видео.

Функция вызова pipeline для генерации видео по изображению.

Примеры:

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

Параметры

  • prompt — Входящий промпт
  • negative_prompt — Отрицательный промпт для управления
  • image — Входное изображение для обусловливания
  • height — Высота видео
  • width — ширина видео
  • prompt_embeds_qwen — Предварительно вычисленные эмбеддинги промпта Qwen
  • prompt_embeds_clip — Предварительно вычисленные эмбеддинги промптов CLIP
  • negative_prompt_embeds_qwen — Предварительно вычисленные эмбеддинги отрицательного промпта Qwen
  • negative_prompt_embeds_clip — Предварительно вычисленные эмбеддинги отрицательного промпта CLIP
  • prompt_cu_seqlens — Предварительно вычисленные накопительные длины последовательностей для положительного промпта Qwen
  • negative_prompt_cu_seqlens — Предварительно вычисленные накопительные длины последовательностей для отрицательного промпта Qwen
  • callback_on_step_end_tensor_inputs — тензорные входные данные для колбэка

Исключения

ValueError

  • ValueError — если входные данные недействительны

Проверка входных параметров конвейера.

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]

Параметры

  • prompt (str или list[str]) — Промпт для кодирования.
  • num_videos_per_prompt (int, необязательный, по умолчанию 1) — Количество видео, генерируемых для каждого промпта.
  • max_sequence_length (int, необязательный, по умолчанию 512) — Максимальная длина последовательности для кодирования текста.
  • device (torch.device, необязательный) — Устройство Torch.
  • dtype (torch.dtype, необязательный) — dtype Torch.

Возвращает

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

  • Qwen текстовые эмбеддинги формы (batch_size * num_videos_per_prompt, sequence_length, embedding_dim)
  • Собранные эмбеддинги CLIP формы (batch_size * num_videos_per_prompt, clip_embedding_dim)
  • Кумулятивные длины последовательностей (cu_seqlens) для эмбеддингов Qwen формы (batch_size * num_videos_per_prompt + 1,)

Кодирует один промпт (положительный или отрицательный) в скрытые состояния текстового энкодера.

Этот метод объединяет эмбеддинги из текстовых энкодеров Qwen2.5-VL и CLIP, чтобы создать комплексные текстовые представления для генерации видео.

fast_sta_nabla

< >

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

Параметры

  • T (int) — Количество временных кадров
  • H (int) — Высота в латентном пространстве
  • W (int) — Ширина в латентном пространстве
  • wT (int) — Размер временного окна внимания
  • wH (int) — Размер окна внимания по высоте
  • wW (int) — Размер окна внимания по ширине
  • device (str) — Устройство, на котором создаётся тензор

Возвращает

torch.Tensor

Разреженная маска внимания формы (THW, THW)

Создайте маску разреженного временного внимания (STA) для эффективной генерации видео.

Этот метод генерирует маску, ограничивающую внимание соседними кадрами и пространственными позициями, что снижает вычислительную сложность при генерации видео.

get_sparse_params

< >

( sampledevice ) → Dict

Параметры

  • sample (torch.Tensor) — Входной тензор выборки
  • device (torch.device) — Устройство, на котором размещаются тензоры

Возвращает

Dict

Словарь, содержащий параметры разреженного внимания

Сгенерируйте параметры разреженного внимания для трансформера на основе размерностей выборки.

Этот метод вычисляет конфигурацию разреженного внимания, необходимую для эффективной обработки видео в трансформерной модели.

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

Параметры

  • image (PipelineImageInput) — Входное изображение для обусловливания генерации
  • batch_size (int) — Количество генерируемых видео
  • num_channels_latents (int) — Количество каналов в латентном пространстве
  • height (int) — Высота сгенерированного видео
  • width (int) — Ширина сгенерированного видео
  • num_frames (int) — Количество кадров в видео
  • dtype (torch.dtype) — Тип данных для латентов
  • device (torch.device) — Устройство, на котором создаются латенты
  • generator (torch.Generator) — генератор случайных чисел
  • latents (torch.Tensor) — Существующие латенты для использования

Возвращает

torch.Tensor

Подготовленный тензор латентов с первым кадром в виде закодированного изображения

Подготовьте начальные латентные переменные для генерации видео по изображению.

Этот метод создаёт случайные шумовые латенты для всех кадров, кроме первого, который заменяется закодированным входным изображением.

Цитирование

@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