# MiniMaxH3ImageTransformer2DModel

نموذج تحويل انتشار لتوليد الصور وتحريرها، تم تقديمه في [MiniMax-H3-Image](https://huggingface.co/MiniMaxAI/MiniMax-H3-Image) بواسطة MiniMax.

إنه [MiniMaxH3Transformer3DModel](/docs/diffusers/main/ar/api/models/minimax_h3_transformer3d#diffusers.MiniMaxH3Transformer3DModel) دون تدفقه الصوتي: حيث يعمل مكدس واحد من الكتل على **تسلسل أحادي البُعد مُجمَّع واحد** يحتوي على شروط النص وصفوف الصور المرجعية وصفوف الصورة المولَّدة. إن بناء التخطيط المُجمَّع هو مسؤولية المستدعي، ولهذا السبب يأخذ توقيع الدالة الأمامية التخطيط منفصلاً عن الكمونيات: شبكة المواضع `(t, h, w)`، ووسوم النمط لكل صف، ومؤشرات خطوة الزمن لكل صف، ومصفوفتا الفهرسين اللتان تعنِيان صفَّي الصورة والنص. يبني [MiniMaxH3ImageBlocks](/docs/diffusers/main/ar/api/pipelines/minimax_h3_image#diffusers.MiniMaxH3ImageBlocks) كل ذلك.

يتم تقطير نقطة التفتيش إلى ست خطوات أخذ عينات باستخدام تقطير فك الترميز المتوازي (PDD)، حيث يحتفظ هذا النهج برأس مخرجات واحد لكل خطوة. لذلك، يستقبل `forward` المعامل `pdd_step_index`، أي الخطوة التي يعمل عليها، ثم يقوم بالمشروع باستخدام رأس تلك الخطوة.

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

النقطة المحفوظة بدقة مختلطة: إسقاط البقع المدخلة، وشبكة MLP للخطوة الزمنية، ورؤوس المخرجات من نوع float32 بينما مجموعة الكتل من نوع bfloat16. يحافظ `from_pretrained` على هذا التوزيع عبر `_keep_in_fp32_modules`، لذا مرّر `dtype=torch.bfloat16` ودعه يضع وحدات float32 بدلاً من تحويل النموذج باستخدام `.to(torch.bfloat16)` لاحقاً.

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

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_minimax_h3_image.py#L365)

**المعاملات:**

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`) : عدد كتل التحويل.

num_refiner_layers (`int`، القيمة الافتراضية `2`) : عدد كتل تحسين الرموز المطبقة على تدفق النص المُسقط.

ffn_dim (`int`، القيمة الافتراضية `14336`) : البُعد الداخلي لطبقات التغذية الأمامية SwiGLU.

in_channels (`int`، القيمة الافتراضية `24`) : عدد قنوات الصورة الكامنة.

patch_size (`tuple[int, int, int]`، القيمة الافتراضية `(1, 2, 2)`) : البقعة `(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` بطول هذا العدد، وتُدار `2 * 3 * rope_freq_dim` من قنوات `attention_head_dim`.

rope_theta (`float`، القيمة الافتراضية `10000.0`) : الأساس الذي تُحسب منه جدول الترددات الدوارة المخزن في `rope.inv_freq`.

norm_eps (`float`، القيمة الافتراضية `1e-5`) : قيمة إيبسلون (Epsilon) لمعايير ما قبل الانتباه (pre-attention) وما قبل الشبكة العصبية الأمامية (pre-feed-forward).

qk_norm_eps (`float`، القيمة الافتراضية `1e-5`) : قيمة إيبسلون (Epsilon) لمعايير الاستعلام/المفتاح لكل رأس.

final_norm_eps (`float`، القيمة الافتراضية `1e-5`) : قيمة إبسيلون لمعايرة مخرجات مُحسّن الرموز ولمعايرة `norm_out`.

num_pdd_heads (`int`، القيمة الافتراضية `6`) : عدد خطوات العينة التي تم تقطير نقطة الحفظ إليها، ولكل خطوة منها رأس إخراج خاص بها.

نموذج Transformer لتوليد الصور وتحريرها، تم تقديمه في MiniMax-H3-Image.

إنه محوّل MiniMax-H3 دون تدفقه الصوتي: حيث يعمل مكدس واحد من الكتل على **تسلسل أحادي البُعد مُجمَّع واحد** يحتضن شرط النص وصفوف صور المرجع وصفوف الصورة المولَّدة. الانتباه هو انتباه ذاتي كامل على ذلك التسلسل؛ ولا يوجد انتباه متقاطع. تم تقطير نقطة التفتيش إلى عدد ثابت من خطوات العينة باستخدام تقطير فك الترميز المتوازي (PDD)، الذي يحتفظ برأس مخرجات واحد لكل خطوة، لذا فإن `forward` يستقبل فهرس الخطوة التي يعمل عليها.

يتحمّل المُستدعي مسؤولية بناء التخطيط المُجمَّع: تحويل المُتغيّرات الكامنة إلى رقعات، وترتيب الصفوف، وإنتاج شبكة المواضع `(t, h, w)` ووسوم النمط لكل صف والفهارس الزمنية لكل صف. لا يحمل التسلسل أي حشو، لذا تُنفَّذ الانتباهية دون أقنعة على وثيقة واحدة وتبقى جميع واجهات الانتباهية متاحة.

محور الدفعة هو محور تكرار خالص: فالحجج الهيكلية (`timestep`، `timestep_indices`، `token_tags`، `position_ids` ومصفوفتا الفهرسين) تصف تخطيطًا واحدًا مضغوطًا تشاركه جميع عناصر الدفعة.

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

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_minimax_h3_image.py#L545)

**المعاملات:**

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]` وغير المُقيَّسة. تخدم تمريرة واحدة صفوفًا عند مستويات ضوضاء مختلفة (صفوف مُولَّدة، صفوف مرجعية).

timestep_indices (`torch.Tensor` من الشكل `(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](/docs/diffusers/main/ar/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) بدلاً من tuple عادي.

**يعيد:** [Transformer2DModelOutput](/docs/diffusers/main/ar/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) أو `tuple`

سرعة كل صف من صفوف الصورة، من الشكل `(batch_size, num_image_tokens, in_channels * prod(patch_size))`، بترتيب الصفوف في `image_indices`.

