# Kandinsky 6 Transformers

Kandinsky 6 は、テキスト/画像から動画とオーディオを生成するために、動画とオーディオの潜在変数を同時にノイズ除去するマルチモーダル拡散トランスフォーマー、および動画スーパーリゾリューション用のテキストフリー拡散トランスフォーマーを使用しています。

## Kandinsky6Transformer3DModel[[diffusers.Kandinsky6Transformer3DModel]]

[Kandinsky6TI2VAPipeline](/docs/diffusers/v0.43.0/ja/api/pipelines/kandinsky6#diffusers.Kandinsky6TI2VAPipeline)で使用されるマルチモーダルTransformerです。

```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/v0.43.0/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) : Video transformer の隠れ次元。

ff_dim (*int*、*optional*、デフォルトは 16384) : ビデオのフィードフォワード隠れ層の次元数。

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*) : Audio transformer の隠れ次元。デフォルト値は *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)*) : 動画の位置に適用される、軸ごとの *(t, h, w)* RoPE 周波数スケーリング。

text_token_padding (*bool*、*optional*、デフォルトは False) : 参照モデルのテキストシーケンスがパディングされているかどうかを記録するチェックポイントのメタデータです。*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 は、テキスト/画像から動画とオーディオを生成するためのマルチモーダル・トランスフォーマーです。

Video と audio は、融合されたクロスモーダル transformer ブロックを通じて同時にノイズ除去されます。各ブロックは、それぞれ独自のテキストブランチ（Qwen2.5-VL トークン + CLIP のプーリング埋め込み）を条件として使用します。*audio_hidden_states* を渡さない場合、video 単独でノイズ除去が行われますが、融合ブロックの video 自己注意、クロス注意、フィードフォワードの各ステージは引き続き実行されます。ローテーション埋め込みは、*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/v0.43.0/src/diffusers/models/transformers/transformer_kandinsky6.py#L739)

**パラメータ:**

hidden_states (`torch.Tensor`、shape `(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`、shape `(batch_size,)`) : `[0, num_train_timesteps]` のスケールにおける拡散タイムステップで、両方のモダリティで共有されます。

audio_hidden_states (`torch.Tensor`、shape `(batch_size, audio_length, in_audio_dim)`、*optional*) : Audio latents。省略した場合、fused blocks は video path のみを実行します。

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` 用の Boolean パディングマスクです。プロンプトにパディングがない場合は `None` を渡してください。

visual_token_type_ids (`torch.Tensor`、shape `(batch_size, num_frames)`、*optional*) : フレームごとのトークンタイプID。`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/v0.43.0/ja/api/pipelines/kandinsky6#diffusers.Kandinsky6SRPipeline) が、アップスケールされた動画のタイルを1つずつ精緻化するために使用するテキストフリーの Transformer。

```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/v0.43.0/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)` 形式の Patch サイズ。

model_dim (`int`、デフォルトは`1792`) : Transformerの隠れ層の次元数。

ff_dim (`int`、デフォルトは`7168`) : フィードフォワードネットワークの内部次元。

num_visual_blocks (`int`、デフォルトは`32`) : Transformerブロックの数。

axes_dims (`tuple[int, int, int]`、デフォルトは `(16, 24, 24)`) : `(t, h, w)` 各軸ごとの RoPE 次元数。これら 3 つの合計が attention head の次元数になります。

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)`) : 各 8x8 トークンブロックが常にアテンションを行うスライディングタイルの事前分布の、奇数である `(t, h, w)` 次元の範囲。

tile_sizes (`tuple[tuple[int, int], ...]`、デフォルトは `((512, 512), (512, 768), (768, 512))`) : モデルが学習された動画タイルのピクセル `(height, width)` サイズです。[Kandinsky6SRPipeline](/docs/diffusers/v0.43.0/ja/api/pipelines/kandinsky6#diffusers.Kandinsky6SRPipeline) は、入力動画のアスペクト比に最も近いサイズのタイルで、すべてのタイルを精細化します。

Kandinsky 6のビデオ超解像度向けのテキストフリー拡散トランスフォーマー。

モデルは、K-VAEの潜在空間における動画のタイルをノイズ除去します。その入力には、ノイズの乗った潜在変数と、スーパーリゾリューションを条件づけるアンカー潜在変数およびアンカーマスクが連結されており（`2 * in_visual_dim + 1`チャネル）、出力は`out_visual_dim`チャネルを持ちます。通常のvelocityチェックポイントの場合は`in_visual_dim`、[PiflowScheduler](/docs/diffusers/v0.43.0/ja/api/schedulers/piflow#diffusers.PiflowScheduler)による蒸留済みチェックポイントの場合は拡張された`n_grid * in_visual_dim`となります。動画の自己アテンションは、`flex`アテンションバックエンド上でNABLAスパースブロックパターンを通じて実行されます。このため、`patch_size`適用後のトークングリッド（`height`と`width`）が8で割り切れる必要があります。

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

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

[ソース](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_kandinsky6_sr.py#L496)

**パラメータ:**

hidden_states (`torch.Tensor`、shape `(batch_size, num_frames, height, width, 2 * in_visual_dim + 1)`) : `(B, T, H, W, C)` レイアウトの潜在タイルです。ノイズ付き潜在変数、アンカー潜在変数、アンカーマスクがチャネル軸方向に連結されています。

timestep (`torch.Tensor`、shape `(batch_size,)`) : `[0, num_train_timesteps]` スケール上の Diffusion timestep。

return_dict (`bool`、デフォルトは`True`) : プレーンなタプルではなく、[Transformer2DModelOutput](/docs/diffusers/v0.43.0/ja/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput)を返すかどうか。

**戻り値:** [Transformer2DModelOutput](/docs/diffusers/v0.43.0/ja/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) または `tuple`

形状`(batch_size, num_frames, height, width, out_visual_dim)`の予測。

