# MiniMaxH3ImageTransformer2DModel

Model Diffusion Transformer untuk pembuatan dan pengeditan gambar, diperkenalkan dalam [MiniMax-H3-Image](https://huggingface.co/MiniMaxAI/MiniMax-H3-Image) oleh MiniMax.

Ini adalah [MiniMaxH3Transformer3DModel](/docs/diffusers/main/id/api/models/minimax_h3_transformer3d#diffusers.MiniMaxH3Transformer3DModel) tanpa stream audionya: satu tumpukan blok berjalan di atas **satu urutan 1-D yang dikemas** yang berisi kondisi teks, baris dari gambar referensi, dan baris dari gambar yang dihasilkan. Membangun tata letak yang dikemas adalah tugas pemanggil, itulah mengapa tanda tangan forward mengambil tata letak terpisah dari latens: grid posisi `(t, h, w)`, tag modalitas per baris, indeks timestep per baris, dan dua tensor indeks yang mengalamatkan baris gambar dan teks. [MiniMaxH3ImageBlocks](/docs/diffusers/main/id/api/pipelines/minimax_h3_image#diffusers.MiniMaxH3ImageBlocks) membangun semuanya.

Checkpoint ini didistilasi menjadi enam langkah sampling dengan Parallel Decoding Distillation (PDD), yang mempertahankan satu kepala output per langkah. `forward` karenanya menerima `pdd_step_index`, yaitu langkah yang sedang dijalankan, dan melakukan proyeksi dengan kepala langkah tersebut.

```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"
```

Checkpoint menggunakan presisi campuran: proyeksi patch input, MLP timestep, dan kepala output adalah float32, sedangkan tumpukan blok adalah bfloat16. `from_pretrained` mempertahankan tata letak tersebut melalui `_keep_in_fp32_modules`, jadi berikan `dtype=torch.bfloat16` dan biarkan modul float32 ditempatkan, alih-alih meng-cast model dengan `.to(torch.bfloat16)` setelahnya.

## 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)
```

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

**Parameter:**

num_attention_heads (`int`, defaultnya `56`) : Jumlah kepala yang digunakan untuk multi-head attention.

attention_head_dim (`int`, defaultnya `128`) : Jumlah channel di setiap kepala perhatian. Perhatikan bahwa `num_attention_heads * attention_head_dim` *lebih besar* daripada `hidden_size`.

hidden_size (`int`, defaultnya `5376`) : Jumlah saluran dari urutan yang dikemas (aliran residual).

num_layers (`int`, defaultnya `50`) : Jumlah blok transformer.

num_refiner_layers (`int`, defaultnya `2`) : Jumlah blok penyempurna token yang diterapkan pada aliran teks yang diproyeksikan.

ffn_dim (`int`, defaultnya `14336`) : Dimensi dalam dari lapisan feed-forward SwiGLU.

in_channels (`int`, defaultnya `24`) : Jumlah channel dari latens gambar.

patch_size (`tuple[int, int, int]`, defaultnya `(1, 2, 2)`) : patch `(t, h, w)` yang digunakan untuk mengemas latents ke dalam baris.

text_dim (`int`, defaultnya `5120`) : Jumlah channel dari kondisi teks yang dihasilkan oleh text encoder.

freq_dim (`int`, defaultnya `256`) : Dimensi dari sinusoidal timestep embedding. Timesteps dikonsumsi tanpa penskalaan dalam `[0, 1]`.

time_embed_hidden_dim (`int`, defaultnya `5376`) : Dimensi dalam dari MLP timestep.

time_embed_dim (`int`, defaultnya `2688`) : Dimensi output dari MLP timestep, yaitu input dari setiap proyeksi AdaLN.

rope_freq_dim (`int`, defaultnya `16`) : Jumlah frekuensi rotasi per sumbu. Sumbu `(t, h, w)` berbagi satu buffer `inv_freq` dengan panjang ini dan `2 * 3 * rope_freq_dim` dari kanal `attention_head_dim` dirotasikan.

rope_theta (`float`, defaultnya `10000.0`) : Basis dari jadwal frekuensi rotasi yang digunakan untuk menghitung buffer `rope.inv_freq`.

norm_eps (`float`, defaultnya `1e-5`) : Epsilon dari norm pra-attention dan pra-feed-forward.

qk_norm_eps (`float`, defaultnya `1e-5`) : Epsilon dari norma query/key per-head.

final_norm_eps (`float`, defaultnya `1e-5`) : Epsilon dari output norm token refiner dan dari `norm_out`.

num_pdd_heads (`int`, defaultnya `6`) : Jumlah langkah sampling yang digunakan untuk mendistilasi checkpoint, di mana masing-masing memiliki output head-nya sendiri.

Model Transformer untuk pembuatan dan pengeditan gambar, diperkenalkan dalam MiniMax-H3-Image.

Ini adalah transformer MiniMax-H3 tanpa aliran audionya: satu tumpukan blok berjalan di atas **satu urutan 1-D yang dikemas** yang berisi kondisi teks, baris dari gambar referensi, dan baris dari gambar yang dihasilkan. Atensinya adalah self-attention penuh di atas urutan tersebut; tidak ada cross-attention. Checkpoint-nya didistilasi ke jumlah langkah sampling yang tetap dengan Parallel Decoding Distillation (PDD), yang mempertahankan satu kepala output per langkah, sehingga `forward` mengambil indeks dari langkah yang sedang dijalankan.

Pemanggil bertanggung jawab untuk membangun tata letak yang dikemas: melakukan patchifikasi pada latens, mengurutkan baris, dan menghasilkan grid posisi `(t, h, w)`, tag modalitas per baris, dan indeks timestep per baris. Urutan tidak membawa padding, sehingga perhatian berjalan tanpa masker di atas satu dokumen dan semua backend perhatian tetap tersedia.

Sumbu batch adalah sumbu replikasi murni: argumen struktural (`timestep`, `timestep_indices`, `token_tags`, `position_ids` dan dua tensor indeks) menggambarkan satu tata letak terpadu yang dibagikan oleh setiap item batch.

#### 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)
```

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

**Parameter:**

hidden_states (`torch.Tensor` dengan bentuk `(batch_size, num_image_tokens, in_channels * prod(patch_size))`) : Baris laten yang telah di-patch — baris dari gambar referensi dan baris dari gambar yang dihasilkan — yang diurutkan sesuai kemunculannya dalam urutan yang dikemas, yaitu sesuai dengan `image_indices`.

encoder_hidden_states (`torch.Tensor` dengan bentuk `(batch_size, num_text_tokens, text_dim)`) : Kondisioning teks, diurutkan agar sesuai dengan `text_indices`.

timestep (`torch.Tensor` dengan bentuk `(num_timesteps,)`) : Nilai *distinct* timestep yang ada dalam urutan yang dikemas, dalam `[0, 1]` dan tidak diskalakan. Satu forward melayani baris pada tingkat noise yang berbeda (baris yang dihasilkan, baris referensi).

timestep_indices (`torch.Tensor` dengan bentuk `(seq_len,)`) : Untuk setiap baris dari urutan yang dikemas, indeks timestep-nya dalam `timestep`.

token_tags (`torch.Tensor` dengan bentuk `(seq_len,)`) : Untuk setiap baris dari urutan yang dikemas, modalitasnya: `0` gambar, `1` teks.

position_ids (`torch.Tensor` dengan bentuk `(seq_len, 3)`) : Koordinat rotasi `(t, h, w)` untuk setiap baris dari urutan yang dikemas.

image_indices (`torch.Tensor` dengan bentuk `(num_image_tokens,)`) : Posisi baris gambar dalam urutan yang dikemas.

text_indices (`torch.Tensor` dengan bentuk `(num_text_tokens,)`) : Posisi baris teks dalam urutan yang dikemas.

pdd_step_index (`int`) : Langkah sampling, yang memilih kepala output.

return_dict (`bool`, defaultnya `True`) : Apakah akan mengembalikan [Transformer2DModelOutput](/docs/diffusers/main/id/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) alih-alih tuple biasa.

**Mengembalikan:** [Transformer2DModelOutput](/docs/diffusers/main/id/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) atau `tuple`

Kecepatan setiap baris gambar, dengan bentuk `(batch_size, num_image_tokens, in_channels * prod(patch_size))`, dalam urutan baris dari `image_indices`.

