# MiniMaxH3ImageTransformer2DModel

Một mô hình Diffusion Transformer cho việc tạo và chỉnh sửa hình ảnh, được giới thiệu trong [MiniMax-H3-Image](https://huggingface.co/MiniMaxAI/MiniMax-H3-Image) bởi MiniMax.

Đây là [MiniMaxH3Transformer3DModel](/docs/diffusers/v0.43.0/vi/api/models/minimax_h3_transformer3d#diffusers.MiniMaxH3Transformer3DModel) không có luồng âm thanh: một chồng các khối duy nhất chạy trên **một chuỗi 1-D đã đóng gói** chứa điều kiện văn bản, các hàng của hình ảnh tham chiếu và các hàng của hình ảnh được tạo ra. Việc xây dựng bố cục đóng gói là trách nhiệm của người gọi, đó là lý do tại sao chữ ký forward tách bố cục khỏi các latent: lưới vị trí `(t, h, w)`, các thẻ phương thức cho từng hàng, các chỉ số bước thời gian cho từng hàng và hai tensor chỉ số để truy cập các hàng hình ảnh và văn bản. [MiniMaxH3ImageBlocks](/docs/diffusers/v0.43.0/vi/api/pipelines/minimax_h3_image#diffusers.MiniMaxH3ImageBlocks) xây dựng tất cả những điều này.

Checkpoint được chưng cất xuống sáu bước lấy mẫu bằng Parallel Decoding Distillation (PDD), trong đó mỗi bước giữ một đầu ra. Do đó, `forward` nhận `pdd_step_index`, tức là bước đang thực thi, và chiếu (project) bằng đầu ra của bước đó.

```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 có độ chính xác hỗn hợp: đầu vào patch projection, timestep MLP và các output heads là float32 trong khi block stack là bfloat16. `from_pretrained` giữ nguyên bố cục đó thông qua `_keep_in_fp32_modules`, vì vậy hãy truyền `dtype=torch.bfloat16` và để nó đặt các module float32 thay vì chuyển đổi model bằng `.to(torch.bfloat16)` sau đó.

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

[Nguồn](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_minimax_h3_image.py#L365)

**Tham số:**

num_attention_heads (`int`, mặc định là `56`) : Số lượng đầu (heads) được sử dụng cho chú ý đa đầu (multi-head attention).

attention_head_dim (`int`, mặc định là `128`) : Số lượng kênh trong mỗi đầu chú ý. Lưu ý rằng `num_attention_heads * attention_head_dim` *lớn hơn* `hidden_size`.

hidden_size (`int`, mặc định là `5376`) : Số kênh của chuỗi được đóng gói (dòng dư).

num_layers (`int`, mặc định là `50`) : Số lượng khối transformer.

num_refiner_layers (`int`, mặc định là `2`) : Số lượng khối token refiner được áp dụng cho luồng văn bản đã được chiếu (projected).

ffn_dim (`int`, mặc định là `14336`) : Kích thước chiều trong của các lớp feed-forward SwiGLU.

in_channels (`int`, mặc định là `24`) : Số kênh của các latent của ảnh.

patch_size (`tuple[int, int, int]`, mặc định là `(1, 2, 2)`) : Patch `(t, h, w)` được dùng để đóng gói các latents thành các hàng.

text_dim (`int`, mặc định là `5120`) : Số lượng kênh của điều kiện văn bản do text encoder tạo ra.

freq_dim (`int`, mặc định là `256`) : Kích thước của embedding bước thời gian hình sin. Các bước thời gian được sử dụng không có hệ số trong `[0, 1]`.

time_embed_hidden_dim (`int`, mặc định là `5376`) : Kích thước chiều trong của MLP bước thời gian.

time_embed_dim (`int`, mặc định là `2688`) : Kích thước chiều đầu ra của MLP thời gian, tức là đầu vào của mọi phép chiếu AdaLN.

rope_freq_dim (`int`, mặc định là `16`) : Số lượng tần số quay trên mỗi trục. Các trục `(t, h, w)` dùng chung một bộ đệm `inv_freq` có độ dài này và `2 * 3 * rope_freq_dim` trong số các kênh `attention_head_dim` sẽ được xoay.

rope_theta (`float`, mặc định là `10000.0`) : Cơ số của lịch tần số quay mà buffer `rope.inv_freq` được tính từ đó.

norm_eps (`float`, mặc định là `1e-5`) : Epsilon của các chuẩn (norms) trước chú ý (pre-attention) và trước mạng tiền tiến (pre-feed-forward).

qk_norm_eps (`float`, mặc định là `1e-5`) : Epsilon của các chuẩn query/key cho từng head.

final_norm_eps (`float`, mặc định là `1e-5`) : Epsilon của output norm của token refiner và của `norm_out`.

num_pdd_heads (`int`, mặc định là `6`) : Số bước lấy mẫu mà checkpoint đã được chưng cất, mỗi bước có một đầu ra riêng.

Một mô hình Transformer cho việc tạo và chỉnh sửa hình ảnh, được giới thiệu trong MiniMax-H3-Image.

Đây là transformer MiniMax-H3 không có luồng âm thanh: một chồng khối duy nhất chạy trên **một chuỗi 1-D đóng gói** chứa điều kiện văn bản, các hàng của hình ảnh tham chiếu và các hàng của hình ảnh được tạo ra. Attention là full self-attention trên chuỗi đó; không có cross-attention. Checkpoint được chưng cất (distill) xuống một số bước lấy mẫu cố định bằng Parallel Decoding Distillation (PDD), giữ lại một đầu ra cho mỗi bước, do đó `forward` nhận vào chỉ số của bước đang thực thi.

Người gọi chịu trách nhiệm xây dựng bố cục đã đóng gói: patchify các latents, sắp xếp các hàng và tạo lưới vị trí `(t, h, w)`, các thẻ modality cho từng hàng và các chỉ số timestep cho từng hàng. Chuỗi không chứa padding, do đó attention chạy không có mask trên một tài liệu và mọi backend attention đều khả dụng.

Trục batch là một trục nhân bản thuần túy: các đối số cấu trúc (`timestep`, `timestep_indices`, `token_tags`, `position_ids` và hai tensor chỉ số) mô tả một bố cục đóng gói duy nhất mà mọi phần tử trong batch cùng chia sẻ.

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

[Nguồn](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_minimax_h3_image.py#L545)

**Tham số:**

hidden_states (`torch.Tensor` có shape `(batch_size, num_image_tokens, in_channels * prod(patch_size))`) : Các hàng latent đã được patchify — các hàng của ảnh tham chiếu và các hàng của ảnh được tạo ra — được sắp xếp theo thứ tự xuất hiện trong chuỗi đã đóng gói, tức là khớp với `image_indices`.

encoder_hidden_states (`torch.Tensor` có hình dạng `(batch_size, num_text_tokens, text_dim)`) : Điều kiện văn bản, được sắp xếp để khớp với `text_indices`.

timestep (`torch.Tensor` có shape `(num_timesteps,)`) : Các giá trị *khác nhau* của timestep có mặt trong chuỗi đã đóng gói, nằm trong khoảng `[0, 1]` và chưa được nhân hệ số. Một bước forward phục vụ các hàng ở các mức nhiễu khác nhau (các hàng được tạo ra, các hàng tham chiếu).

timestep_indices (`torch.Tensor` có hình dạng `(seq_len,)`) : Với mỗi hàng của chuỗi đã đóng gói, chỉ số của bước thời gian của nó trong `timestep`.

token_tags (`torch.Tensor` có hình dạng `(seq_len,)`) : Với mỗi hàng của chuỗi được đóng gói, chế độ của nó: `0` ảnh, `1` văn bản.

position_ids (`torch.Tensor` có shape `(seq_len, 3)`) : Các tọa độ rotary `(t, h, w)` của mọi hàng trong chuỗi đã đóng gói.

image_indices (`torch.Tensor` có hình dạng `(num_image_tokens,)`) : Vị trí của các hàng ảnh trong chuỗi đã đóng gói.

text_indices (`torch.Tensor` có hình dạng `(num_text_tokens,)`) : Vị trí của các dòng văn bản trong chuỗi đã đóng gói.

pdd_step_index (`int`) : Bước lấy mẫu, chọn đầu ra.

return_dict (`bool`, mặc định là `True`) : Có nên trả về một [Transformer2DModelOutput](/docs/diffusers/v0.43.0/vi/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) thay vì một tuple thông thường hay không.

**Trả về:** [Transformer2DModelOutput](/docs/diffusers/v0.43.0/vi/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) hoặc `tuple`

Tốc độ của mỗi hàng ảnh, có hình dạng `(batch_size, num_image_tokens, in_channels * prod(patch_size))`, theo thứ tự hàng của `image_indices`.

