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.43.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

MiniMaxH3ImageTransformer2DModel

نموذج تحويل انتشار لتوليد الصور وتحريرها، تم تقديمه في MiniMax-H3-Image بواسطة MiniMax.

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

يتم تقطير نقطة التفتيش إلى ست خطوات أخذ عينات باستخدام تقطير فك الترميز المتوازي (PDD)، حيث يحتفظ هذا النهج برأس مخرجات واحد لكل خطوة. لذلك، يستقبل 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 blocks).
  • num_refiner_layers (int، القيمة الافتراضية 2) — عدد كتل تحسين الرموز المطبقة على تدفق النص المُسقط.
  • ffn_dim (int، القيمة الافتراضية 14336) — البُعد الداخلي لطبقات التغذية الأمامية SwiGLU.
  • in_channels (int)، القيمة الافتراضية 24) — عدد قنوات الكامنات (latents) للصورة.
  • 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) — قيمة إبسيلون لمعايير ما قبل الانتباه وما قبل الشبكة العصبية الأمامية.
  • qk_norm_eps (float، القيمة الافتراضية 1e-5) — قيمة إبسيلون لمعايير الاستعلام/المفتاح لكل رأس.
  • 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

< >

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

يعيد

Transformer2DModelOutput أو tuple

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

Update on GitHub