# MiniMaxH3ImageTransformer2DModel

MiniMaxによって[MiniMax-H3-Image](https://huggingface.co/MiniMaxAI/MiniMax-H3-Image)で紹介された、画像生成および編集用のDiffusion Transformerモデルです。

これは、音声ストリームを除去した[MiniMaxH3Transformer3DModel](/docs/diffusers/main/ja/api/models/minimax_h3_transformer3d#diffusers.MiniMaxH3Transformer3DModel)です。テキストの条件付け、参照画像の行、生成画像の行を保持する**1つのパックされた1次元シーケンス**に対して、単一のブロックスタックが実行されます。パックされたレイアウトの構築は呼び出し側の責任であるため、forwardのシグネチャは、潜在変数とは別にレイアウトを受け取ります。具体的には、`(t, h, w)`の位置グリッド、行ごとのモダリティタグ、行ごとのタイムステップインデックス、そして画像行とテキスト行を参照する2つのインデックステンソルです。[MiniMaxH3ImageBlocks](/docs/diffusers/main/ja/api/pipelines/minimax_h3_image#diffusers.MiniMaxH3ImageBlocks)がこれらすべてを構築します。

チェックポイントは、1ステップごとに1つの出力ヘッドを保持するParallel Decoding Distillation (PDD)によって6回のサンプリングステップに蒸留されます。そのため、`forward`は現在実行中のステップである`pdd_step_index`を受け取り、そのステップのヘッドで射影を行います。

```python
import torch
from diffusers import MiniMaxH3ImageTransformer2DModel

transformer = MiniMaxH3ImageTransformer2DModel.from_pretrained(
    "MiniMaxAI/MiniMax-H3-Image", subfolder="transformer_diffusers", dtype=torch.bfloat16
).to("cuda")  # or "mps", "xpu", "cpu"
```

チェックポイントは混合精度です。入力パッチ投影、タイムステップ MLP、出力ヘッドは float32 であり、ブロックスタックは bfloat16 です。`from_pretrained` は `_keep_in_fp32_modules` を通じてこのレイアウトを維持するため、`dtype=torch.bfloat16` を渡し、float32 モジュールの配置を任せてください。その後でモデル全体を `.to(torch.bfloat16)` でキャストしないでください。

## MiniMaxH3ImageTransformer2DModel[[diffusers.MiniMaxH3ImageTransformer2DModel]]

#### diffusers.MiniMaxH3ImageTransformer2DModel[[diffusers.MiniMaxH3ImageTransformer2DModel]]

```python
diffusers.MiniMaxH3ImageTransformer2DModel(num_attention_heads: int = 56, attention_head_dim: int = 128, hidden_size: int = 5376, num_layers: int = 50, num_refiner_layers: int = 2, ffn_dim: int = 14336, in_channels: int = 24, patch_size: tuple[int, int, int] = (1, 2, 2), text_dim: int = 5120, freq_dim: int = 256, time_embed_hidden_dim: int = 5376, time_embed_dim: int = 2688, rope_freq_dim: int = 16, rope_theta: float = 10000.0, norm_eps: float = 1e-05, qk_norm_eps: float = 1e-05, final_norm_eps: float = 1e-05, num_pdd_heads: int = 6)
```

[ソース](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_minimax_h3_image.py#L365)

**パラメータ:**

num_attention_heads (`int`、デフォルトは`56`) : マルチヘッドアテンションに使用するヘッド数。

attention_head_dim (`int`、デフォルトは`128`) : 各アテンションヘッドのチャネル数です。`num_attention_heads * attention_head_dim`は`hidden_size`より*大きい*ことに注意してください。

hidden_size (`int`、デフォルトは`5376`) : パックされたシーケンス（残差ストリーム）のチャネル数。

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

num_refiner_layers (`int`、デフォルトは`2`) : 投影されたテキストストリームに適用されるトークンリファイナーブロックの数。

ffn_dim (`int`、デフォルトは`14336`) : SwiGLUフィードフォワード層の内部次元です。

in_channels (`int`、デフォルトは`24`) : 画像潜在変数のチャネル数。

patch_size (`tuple[int, int, int]`、デフォルトは`(1, 2, 2)`) : 潜在変数を行にパッキングするために使用される`(t, h, w)`のパッチ。

text_dim (`int`、デフォルトは`5120`) : テキストエンコーダーによって生成されるテキスト条件付けのチャネル数です。

freq_dim (`int`、デフォルトは`256`) : 正弦波タイムステップ埋め込みの次元数。タイムステップは`[0, 1]`の範囲でスケーリングなしに使用されます。

time_embed_hidden_dim (`int`、デフォルトは`5376`) : timestep MLPの内部次元です。

time_embed_dim (`int`、デフォルトは `2688`) : timestep MLP の出力次元、すなわちすべての AdaLN 射影の入力です。

rope_freq_dim (`int`、デフォルトは`16`) : 各軸あたりのロータリー周波数の数です。`(t, h, w)`軸は、この長さの`inv_freq`バッファを1つ共有し、`attention_head_dim`チャネルのうち`2 * 3 * rope_freq_dim`が回転されます。

rope_theta (`float`、デフォルトは`10000.0`) : `rope.inv_freq`バッファの計算に用いられる、ロータリー周波数スケジュールの基数です。

norm_eps (`float`、デフォルトは`1e-5`) : 事前アテンションと事前フィードフォワードの正規化のエプシロン。

qk_norm_eps (`float`、デフォルトは`1e-5`) : ヘッドごとのクエリ/キーノルムのエプシロン。

final_norm_eps (`float`、デフォルトは `1e-5`) : token refiner の出力ノルムおよび `norm_out` のエプシロン。

num_pdd_heads (`int`、デフォルトは`6`) : チェックポイントが蒸留されたサンプリングステップの数です。各ステップには独自の出力ヘッドがあります。

MiniMax-H3-Image で紹介された、画像生成および編集用の Transformer モデルです。

これは、オーディオストリームを除去したMiniMax-H3トランスフォーマーです。テキスト条件、参照画像の行、生成画像の行を保持する**1つのパックされた1次元シーケンス**に対して、単一のブロックスタックが実行されます。アテンションは、そのシーケンス全体に対するフルセルフアテンションであり、クロスアテンションはありません。チェックポイントは、Parallel Decoding Distillation (PDD) によって固定のサンプリングステップ数に蒸留されており、各ステップごとに1つの出力ヘッドを保持するため、`forward`は実行中のステップのインデックスを受け取ります。

呼び出し側がパックされたレイアウトを構築する責任を負います。具体的には、潜在変数のパッチ化、行の順序付け、`(t, h, w)` の位置グリッド、行ごとのモダリティタグ、および行ごとのタイムステップインデックスの生成です。シーケンスにはパディングが含まれないため、注意機構は1つのドキュメント全体に対してマスクなしで実行され、すべての注意機構バックエンドが利用可能になります。

バッチ軸は純粋なレプリケーション軸です。構造引数（`timestep`、`timestep_indices`、`token_tags`、`position_ids`、および2つのインデックステンソル）は、すべてのバッチ項目が共有する1つのパック済みレイアウトを記述します。

#### forward[[diffusers.MiniMaxH3ImageTransformer2DModel.forward]]

```python
forward(hidden_states: Tensor, encoder_hidden_states: Tensor, timestep: Tensor, timestep_indices: Tensor, token_tags: Tensor, position_ids: Tensor, image_indices: Tensor, text_indices: Tensor, pdd_step_index: int, return_dict: bool = True)
```

[ソース](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_minimax_h3_image.py#L545)

**パラメータ:**

hidden_states (`torch.Tensor`、shape は `(batch_size, num_image_tokens, in_channels * prod(patch_size))`) : パッチ化された潜在行列 — 参照画像の行と生成画像の行 — が、パックされたシーケンスに現れる順序、つまり `image_indices` と一致する順序で並べられています。

encoder_hidden_states (`torch.Tensor`、shape `(batch_size, num_text_tokens, text_dim)`) : `text_indices` と一致する順序で並べられたテキストの条件付け。

timestep (`torch.Tensor`、shape `(num_timesteps,)`) : パックされたシーケンスに存在する*個別の*タイムステップ値。`[0, 1]`の範囲で、スケーリングされていません。1回のフォワードで、異なるノイズレベルの行（生成された行、参照行）を処理します。

timestep_indices (`torch.Tensor`、shape `(seq_len,)`) : パックされたシーケンスの各行について、`timestep` におけるそのタイムステップのインデックス。

token_tags (`torch.Tensor`、shape `(seq_len,)`) : パックされたシーケンスの各行について、そのモダリティ: `0` 画像、`1` テキスト。

position_ids (`torch.Tensor`、shape `(seq_len, 3)`) : パックされたシーケンスの各行の `(t, h, w)` 回転座標。

image_indices (`torch.Tensor`、形状 `(num_image_tokens,)`) : パックされたシーケンスにおける画像行の位置。

text_indices (`torch.Tensor`、shape `(num_text_tokens,)`) : パックされたシーケンスにおけるテキスト行の位置。

pdd_step_index (`int`) : 出力ヘッドを選択するサンプリングステップ。

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

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

`image_indices` の行順で、形状が `(batch_size, num_image_tokens, in_channels * prod(patch_size))` の、画像の各行の速度。

