# Kandinsky 6 Transformers

Kandinsky 6 использует мультимодальный диффузионный трансформер, который одновременно снимает шум с латентных представлений видео и аудио для генерации видео и аудио по тексту или изображению, а также диффузионный трансформер без текстового ввода для супер-разрешения видео.

## Kandinsky6Transformer3DModel[[diffusers.Kandinsky6Transformer3DModel]]

Мультимодальный трансформер, используемый в [Kandinsky6TI2VAPipeline](/docs/diffusers/main/ru/api/pipelines/kandinsky6#diffusers.Kandinsky6TI2VAPipeline).

```python
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[[diffusers.Kandinsky6Transformer3DModel]]

```python
diffusers.Kandinsky6Transformer3DModel(in_visual_dim: int = 16, out_visual_dim: int = 16, in_text_dim: int = 3584, in_text_dim2: int = 768, time_dim: int = 1024, patch_size: tuple = (1, 2, 2), model_dim: int = 4096, ff_dim: int = 16384, num_text_blocks: int = 4, num_visual_blocks: int = 60, axes_dims: tuple = (32, 48, 48), visual_cond: bool = True, in_audio_dim: int = 20, out_audio_dim: int = 20, model_dim_a: int | None = None, time_dim_a: int | None = None, ff_dim_a: int | None = None, axes_dims_a: tuple | None = None, audio_freqs_scaling: float = 1.0, scale_factor: tuple | list[float] = (1.0, 2.0, 2.0), text_token_padding: bool = False, ca_rope: bool = False, cross_gates: bool = False, fix_modulation: bool = False, visual_token_type_num_embeddings: int = 0)
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_kandinsky6.py#L591)

**Параметры:**

in_visual_dim (*int*, *optional*, по умолчанию 16) : Количество входных латентных каналов видео.

out_visual_dim (*int*, *optional*, по умолчанию 16) : Количество каналов выходных латентных переменных видео.

in_text_dim (*int*, *optional*, по умолчанию 3584) : Размерность эмбеддингов текстовых токенов.

in_text_dim2 (*int*, *optional*, по умолчанию 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) : Размер скрытого слоя feed-forward для видео.

num_text_blocks (*int*, *optional*, по умолчанию 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*) : Размер скрытого слоя прямого распространения аудиосигнала. По умолчанию *ff_dim*.

axes_dims_a (*tuple[int, int, int]*, *optional*) : Размеры 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[[diffusers.Kandinsky6Transformer3DModel.forward]]

```python
forward(hidden_states: Tensor, encoder_hidden_states: Tensor, pooled_projections: Tensor, timestep: Tensor, audio_hidden_states: Tensor | None = None, visual_rope_pos: tuple[Tensor, Tensor, Tensor] | None = None, encoder_attention_mask: Tensor | None = None, visual_token_type_ids: Tensor | None = None, return_dict: bool = True)
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_kandinsky6.py#L739)

**Параметры:**

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]`, *optional*) : Индексы ротационных позиций по осям `(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[[diffusers.Kandinsky6SRTransformer3DModel]]

Текст-свободный трансформер, используемый [Kandinsky6SRPipeline](/docs/diffusers/main/ru/api/pipelines/kandinsky6#diffusers.Kandinsky6SRPipeline) для последовательной доработки каждого тайла увеличенного видео.

```python
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[[diffusers.Kandinsky6SRTransformer3DModel]]

```python
diffusers.Kandinsky6SRTransformer3DModel(in_visual_dim: int = 64, out_visual_dim: int = 640, time_dim: int = 512, patch_size: tuple[int, int, int] = (1, 1, 1), model_dim: int = 1792, ff_dim: int = 7168, num_visual_blocks: int = 32, axes_dims: tuple[int, int, int] = (16, 24, 24), scale_factor: tuple[float, float, float] = (1.0, 2.0, 2.0), nabla_threshold: float = 0.8, nabla_window: tuple[int, int, int] = (11, 7, 7), tile_sizes: tuple[tuple[int, int], ...] = ((512, 512), (512, 768), (768, 512)))
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_kandinsky6_sr.py#L412)

**Параметры:**

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](/docs/diffusers/main/ru/api/pipelines/kandinsky6#diffusers.Kandinsky6SRPipeline) уточняет каждый тайл в том размере, чье соотношение сторон наиболее близко к соотношению сторон входного видео.

Диффузионный трансформер без текста для супер-разрешения видео Kandinsky 6.

Модель выполняет денойзинг тайлов латентного видео K-VAE. На вход ей подаётся конкатенация зашумлённого латента, якорного латента и маски якоря, которые задают условия для супер-разрешения (`2 * in_visual_dim + 1` каналов), а на выходе формируется `out_visual_dim` каналов: `in_visual_dim` для обычного velocity-чекпоинта или расширенные `n_grid * in_visual_dim` для дистиллированных чекпоинтов [PiflowScheduler](/docs/diffusers/main/ru/api/schedulers/piflow#diffusers.PiflowScheduler). Само-внимание видео выполняется через разреженный блочный паттерн NABLA на бэкенде внимания `flex`, который требует, чтобы сетка токенов (`height` и `width` после `patch_size`) делилась на 8.

#### forward[[diffusers.Kandinsky6SRTransformer3DModel.forward]]

```python
forward(hidden_states: Tensor, timestep: Tensor, return_dict: bool = True)
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_kandinsky6_sr.py#L496)

**Параметры:**

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](/docs/diffusers/main/ru/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) вместо обычного кортежа.

**Возвращает:** [Transformer2DModelOutput](/docs/diffusers/main/ru/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) или `tuple`

Предсказание формы `(batch_size, num_frames, height, width, out_visual_dim)`.

