Diffusers documentation
MiniMaxH3ImageTransformer2DModel
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
< source >( 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
< source >( 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 toTrue) — Whether to return a Transformer2DModelOutput instead of a plain tuple.
戻り値
Transformer2DModelOutput または tuple
image_indices の行順で、形状が (batch_size, num_image_tokens, in_channels * prod(patch_size)) の、画像の各行の速度。