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