Diffusers documentation
Kandinsky 6 Transformers
Kandinsky 6 Transformers
Kandinsky 6 использует мультимодальный диффузионный трансформер, который одновременно снимает шум с латентных представлений видео и аудио для генерации видео и аудио по тексту или изображению, а также диффузионный трансформер без текстового ввода для супер-разрешения видео.
Kandinsky6Transformer3DModel
Мультимодальный трансформер, используемый в 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
)класс 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 )
Параметры
- in_visual_dim (int, optional, по умолчанию 16) — Количество входных каналов латентного видео.
- out_visual_dim (int, optional, по умолчанию 16) — Количество выходных латентных каналов видео.
- in_text_dim (int, optional, по умолчанию 3584) — Размерность эмбеддингов текстовых токенов.
- in_text_dim2 (int, необязательный, по умолчанию 768) — размерность пуллинг-эмбеддинга текста.
- time_dim (int, optional, по умолчанию 1024) — Размерность временного эмбеддинга.
- patch_size (tuple[int, int, int], optional, по умолчанию
(1, 2, 2)) — Размер патча видео. - model_dim (int, optional, по умолчанию 4096) — скрытое измерение видео-трансформера.
- ff_dim (int, optional, по умолчанию 16384) — Скрытое размерность полносвязного слоя для видео.
- num_text_blocks (int, необязательный, по умолчанию 4) — Количество текстовых блоков на модальность.
- num_visual_blocks (int, optional, по умолчанию 60) — Количество объединённых блоков видео/аудио.
- axes_dims (tuple[int, int, int], optional, по умолчанию
(32, 48, 48)) — размеры RoPE для видео. - visual_cond (bool, optional, по умолчанию True) — Указывает, присутствуют ли каналы видеоусловий.
- in_audio_dim (int, optional, по умолчанию 20) — Количество входных каналов аудиовыходных латентов.
- out_audio_dim (int, optional, по умолчанию 20) — Количество выходных каналов аудиовыхода.
- model_dim_a (int, optional) — Скрытое измерение аудио-трансформера. По умолчанию model_dim.
- time_dim_a (int, optional) — Размерность временного эмбеддинга аудио. По умолчанию time_dim.
- ff_dim_a (int, optional) — Скрытое размерность аудио-feed-forward слоя. По умолчанию ff_dim.
- axes_dims_a (tuple[int, int, int], необязательный) — Размеры Audio RoPE. По умолчанию axes_dims.
- audio_freqs_scaling (float, optional, по умолчанию 1.0) — масштабирование частот Audio RoPE.
- scale_factor (tuple[float, float, float], optional, по умолчанию (1.0, 2.0, 2.0)) — масштабирование частот RoPE по осям (t, h, w), применяемое к позициям видео.
- text_token_padding (bool, optional, по умолчанию False) — метаданные контрольной точки, фиксирующие, выполнялось ли выравнивание (padding) текстовых последовательностей в эталонной модели. forward всегда принимает необязательный encoder_attention_mask независимо от этого флага; передаётся ли он на самом деле, полностью зависит от вызывающего кода.
- ca_rope (bool, optional, по умолчанию False) — Использовать ли кросс-модальный аудио RoPE.
- cross_gates (bool, optional, по умолчанию False) — Использовать ли межмодальные остаточные гейты.
- fix_modulation (bool, optional, по умолчанию False) — Использовать ли вариант с фиксированной модуляцией.
- visual_token_type_num_embeddings (int, optional, по умолчанию 0) — Количество эмбеддингов типов визуальных токенов.
Kandinsky 6 мультимодальный трансформер для генерации видео и аудио по тексту/изображению.
Видео и аудио денойзируются совместно через объединённые кросс-модальные трансформерные блоки, каждый из которых обусловлен собственной текстовой ветвью (токены Qwen2.5-VL + пул-эмбеддинг CLIP). Если не передавать audio_hidden_states, выполняется денойзинг только видео, при этом в объединённом блоке по-прежнему работают этапы само-внимания, кросс-внимания и полносвязного слоя для видео. Вращательные эмбеддинги вычисляются внутри forward на основе сетки токенов.
Опубликованные контрольные точки задают значения text_token_padding, ca_rope, cross_gates и fix_modulation равными True (см. transformer/config.json каждой контрольной точки); значения по умолчанию False описывают лишь вариант архитектуры, для которого в этом репозитории не публикуются веса.
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
Параметры
- hidden_states (
torch.Tensorформы(batch_size, num_frames, height, width, in_channels)) — Латентные представления видео в раскладке(B, T, H, W, C). Приvisual_cond=Trueзначениеin_channelsравно2 * in_visual_dim + 1: шумовое латентное представление, латентное представление для условия и маска условия. - encoder_hidden_states (
torch.Tensorформы(batch_size, sequence_length, in_text_dim)) — Векторы токенов текста, общие для текстовых ветвей видео и аудио. - pooled_projections (
torch.Tensorформы(batch_size, in_text_dim2)) — Средневзвешенное текстовое представление, добавляемое к представлению временного шага в обоих ветвях. - timestep (
torch.Tensorформы(batch_size,)) — Шаг диффузии в масштабе[0, num_train_timesteps], общий для обеих модальностей. - audio_hidden_states (
torch.Tensorформы(batch_size, audio_length, in_audio_dim), необязательный) — Латенты аудио. Если параметр не указан, объединённые блоки выполняют только видео-путь. - visual_rope_pos (
tuple[torch.Tensor, torch.Tensor, torch.Tensor], необязательный) — Индексы ротационных позиций по осям(t, h, w)для токенов видео, разбитых на патчи. По умолчанию используетсяarangeдля каждой оси. Конвейер передаёт явный временной индекс, когда добавляет опорный кадр, повторно использующий позицию0. - encoder_attention_mask (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Маска буферизации дляencoder_hidden_states. ПередавайтеNone, если промпт не дополнен. - visual_token_type_ids (
torch.Tensorформы(batch_size, num_frames), необязательный) — Идентификаторы типов токенов для каждого кадра, встроенные черезvisual_token_type_embeddings. Требует, чтобыvisual_token_type_num_embeddings > 0. - return_dict (
bool, по умолчаниюTrue) — Определяет, возвращать лиKandinsky6TransformerOutputвместо обычного кортежа.
Возвращает
Kandinsky6TransformerOutput или tuple
Скорость предсказанного видео в раскладке (B, T, H, W, out_visual_dim) и, если было передано audio_hidden_states, скорость предсказанного аудио с формой (B, audio_length, out_audio_dim).
Kandinsky6SRTransformer3DModel
Текст-свободный трансформер, используемый Kandinsky6SRPipeline для последовательной доработки каждого тайла увеличенного видео.
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)класс 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)) )
Параметры
- in_visual_dim (
int, по умолчанию64) — Количество латентных каналов K-VAE. - out_visual_dim (
int, по умолчанию640) — Количество выходных каналов. - time_dim (
int, по умолчанию512) — Размерность эмбеддинга временного шага. - patch_size (
tuple[int, int, int], по умолчанию(1, 1, 1)) — Размер патча в формате(temporal, height, width). - model_dim (
int, по умолчанию1792) — Скрытое измерение трансформера. - ff_dim (
int, по умолчанию7168) — Внутреннее измерение полносвязных сетей. - num_visual_blocks (
int, по умолчанию32) — Количество блоков трансформера. - axes_dims (
tuple[int, int, int], по умолчанию(16, 24, 24)) — размерности RoPE для каждой оси(t, h, w); их сумма равна размерности головы внимания. - scale_factor (
tuple[float, float, float], по умолчанию(1.0, 2.0, 2.0)) — Масштабирование частоты RoPE по каждой оси, применяемое к позициям токенов. - nabla_threshold (
float, по умолчанию0.8) — Порог кумулятивного внимания для выбора блоков NABLA. - nabla_window (
tuple[int, int, int], по умолчанию(11, 7, 7)) — Нечёткие размеры(t, h, w)скользящего тайлового априорного распределения, на которое всегда обращает внимание каждый блок токенов 8x8. - tile_sizes (
tuple[tuple[int, int], ...], по умолчанию((512, 512), (512, 768), (768, 512))) — Размеры(height, width)в пикселях видеотайлов, на которых обучалась модель. Kandinsky6SRPipeline уточняет каждый тайл с тем размером, чье соотношение сторон наиболее близко к соотношению входного видео.
Диффузионный трансформер без текста для супер-разрешения видео Kandinsky 6.
Модель выполняет денойзинг тайлов латентного видео K-VAE. На вход модели подаётся конкатенация зашумлённого латента с якорным латентом и якорной маской, которые задают условия для супер-разрешения (2 * in_visual_dim + 1 каналов), а на выходе формируется out_visual_dim каналов: in_visual_dim для обычного velocity-чекпоинта или расширенные n_grid * in_visual_dim для дистиллированных чекпоинтов PiflowScheduler. Само-внимание видео выполняется через разреженный блочный паттерн NABLA на бэкенде внимания flex, который требует, чтобы сетка токенов (height и width после patch_size) делилась на 8.
forward
< source >( hidden_states: Tensortimestep: Tensorreturn_dict: bool = True ) → Transformer2DModelOutput or tuple
Параметры
- hidden_states (
torch.Tensorформы(batch_size, num_frames, height, width, 2 * in_visual_dim + 1)) — Латентные тайлы в раскладке(B, T, H, W, C): зашумлённый латентный, якорный латентный и маска якоря, конкатенированные по оси каналов. - timestep (
torch.Tensorформы(batch_size,)) — Шаг диффузии в масштабе[0, num_train_timesteps]. - return_dict (
bool, по умолчаниюTrue) — Определяет, следует ли возвращать Transformer2DModelOutput вместо обычного кортежа.
Возвращает
Transformer2DModelOutput или tuple
Предсказание формы (batch_size, num_frames, height, width, out_visual_dim).