Diffusers documentation

MiniMaxH3ImageTransformer2DModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

MiniMaxH3ImageTransformer2DModel

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

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

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

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

< >

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

パラメータ

  • 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)) — 潜変数(latents)を行にパッキングするために使用される(t, h, w)のパッチです。
  • text_dim (int、デフォルト値は5120) — テキストエンコーダーによって生成されるテキスト条件付けのチャネル数です。
  • freq_dim (int、デフォルトは 256) — 正弦波タイムステップ埋め込みの次元です。タイムステップは [0, 1] の範囲でスケーリングなしに使用されます。
  • time_embed_hidden_dim (int、デフォルトは 5376) — タイムステップ MLP の内部次元です。
  • time_embed_dim (int、デフォルトは 2688) — タイムステップ 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) — トークンリファイナー出力のノルムおよび 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

< >

( hidden_states: Tensorencoder_hidden_states: Tensortimestep: Tensortimestep_indices: Tensortoken_tags: Tensorposition_ids: Tensorimage_indices: Tensortext_indices: Tensorpdd_step_index: intreturn_dict: bool = True ) → Transformer2DModelOutput or tuple

パラメータ

  • hidden_states (torch.Tensor、形状 (batch_size, num_image_tokens, in_channels * prod(patch_size))) — パッチ化された潜在行列 — 参照画像の行と生成画像の行 — が、パックされたシーケンスに現れる順序、つまり image_indices と一致する順序で並べられています。
  • encoder_hidden_states (torch.Tensor、形状 (batch_size, num_text_tokens, text_dim)) — text_indices と一致する順序で並べられたテキストの条件付けです。
  • timestep (torch.Tensor、形状 (num_timesteps,)) — パックされたシーケンスに存在する個別のタイムステップの値です。[0, 1]の範囲内にあり、スケーリングされていません。1回のフォワードパスで、異なるノイズレベルの行(生成された行、参照行)を処理します。
  • timestep_indices (torch.Tensor、shape (seq_len,)) — パックされたシーケンスの各行について、timestep におけるそのタイムステップのインデックスです。
  • token_tags (torch.Tensor、形状 (seq_len,)) — パックされたシーケンスの各行について、そのモダリティ: 0 画像、1 テキスト。
  • position_ids (torch.Tensor、形状 (seq_len, 3)) — パックされたシーケンスの各行の (t, h, w) 回転座標です。
  • image_indices (torch.Tensor、形状 (num_image_tokens,)) — パックされたシーケンスにおける画像行の位置です。
  • text_indices (torch.Tensor、形状 (num_text_tokens,)) — パックされたシーケンス内のテキスト行の位置です。
  • pdd_step_index (int) — 出力ヘッドを選択するサンプリングステップ。
  • return_dict (bool、デフォルトはTrue) — プレーンなタプルではなく、Transformer2DModelOutputを返すかどうかを指定します。

戻り値

Transformer2DModelOutput または tuple

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

Update on GitHub