Diffusers documentation

MiniMaxH3ImageTransformer2DModel

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
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, defaults to True) — Whether to return a Transformer2DModelOutput instead of a plain tuple.

戻り値

Transformer2DModelOutput または tuple

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

Update on GitHub