Diffusers documentation

MiniMaxH3Transformer3DModel

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

MiniMaxH3Transformer3DModel

نموذج Diffusion Transformer لتوليد الفيديو والصوت معًا، تم تقديمه في MiniMax-H3 بواسطة MiniMax.

يعمل MiniMax-H3 على مكدس واحد من الكتل فوق تسلسل أحادي البُعد مُجمَّع واحد يحتفظ في آنٍ واحد بشروط النص، وصفوف صورة الشرط والفيديو، وصفوف الصوت، وصفوف الفيديو المستهدفة. يكون الانتباه انتباه ذاتي كاملًا على ذلك التسلسل، لذا لا يوجد انتباه متقاطع ولا أوزان كتل لكل نمط. تأتي السلوكيات الخاصة بكل نمط فقط من إسقاطي الباتش المدخلين، ووسم النمط لكل صف الذي يختار معاملات تعديل AdaLN، والرأسين المخرجين.

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

يتطلب التخطيط الذي يحمل صفوف حشو (الوسم -1) واجهة خلفية للانتباه المقنّع، لأن تلك الصفوف تُحفظ في وثيقة انتباه خاصة بها بواسطة قناع منطقي؛ أما التسلسل الخالي من الحشو فلا يحتاج إلى قناع ويبقي جميع الواجهات الخلفية متاحة.

يحتوي المستودع الواحد على كلا قسمَي نقطة التفتيش المُصدَّرة، لذا فإن المجلد الفرعي هو ما يختار المهمة: transformer/ لمهام النص والإطارات المفتاحية، وtransformer_ref/ لمهمة المرجع الشامل.

import torch
from diffusers import MiniMaxH3Transformer3DModel

transformer = MiniMaxH3Transformer3DModel.from_pretrained(
    "MiniMaxAI/MiniMax-H3", subfolder="transformer", 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) لاحقاً.

MiniMaxH3Transformer3DModel

فئة diffusers.MiniMaxH3Transformer3DModel

< >

( num_attention_heads: int = 56attention_head_dim: int = 128hidden_size: int = 5376num_layers: int = 50num_refiner_layers: int = 2ffn_dim: int = 14336in_channels: int = 24audio_in_channels: int = 32patch_size: tuple = (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-05 )

المعاملات

  • num_attention_heads (int، القيمة الافتراضية 56) — عدد الرؤوس المستخدمة في الانتباه متعدد الرؤوس.
  • attention_head_dim (int، القيمة الافتراضية 128) — عدد القنوات في كل رأس انتباه. لاحظ أن num_attention_heads * attention_head_dim أكبر من hidden_size في MiniMax-H3.
  • hidden_size (int، القيمة الافتراضية 5376) — عدد قنوات التسلسل المُجمَّع (تدفق المتبقي).
  • num_layers (int، القيمة الافتراضية 50) — عدد كتل التحويل (transformer blocks).
  • num_refiner_layers (int، القيمة الافتراضية 2) — عدد كتل تحسين الرموز المطبقة على تدفق النص المُسقط.
  • ffn_dim (int، القيمة الافتراضية 14336) — البُعد الداخلي لطبقات التغذية الأمامية SwiGLU.
  • in_channels (int، القيمة الافتراضية 24) — عدد قنوات كامنات الفيديو.
  • audio_in_channels (int، القيمة الافتراضية 32) — عدد قنوات الكامنات الصوتية.
  • 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.

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

يعمل MiniMax-H3 على مجموعة واحدة من الكتل فوق تسلسل واحد مكدس أحادي البعد يحتوي على شرط النص، وصفوف صورة/فيديو التكييف، وصفوف الصوت، وصفوف الفيديو المستهدف. يكون الانتباه انتباه ذاتي كاملًا على ذلك التسلسل؛ فلا يوجد انتباه متقاطع ولا أوزان كتل لكل نمط. يأتي السلوك الخاص بكل نمط فقط من إسقاطي الباتش المدخلين، ووسم النمط الخاص بكل صف في AdaLN، والرأسين المخرجين.

يتحمّل المُستدعي مسؤولية بناء التخطيط المُجمَّع: تحويل كامنات الفيديو إلى رقعات، وترتيب الصفوف، وإنتاج شبكة المواضع (t, h, w) ووسوم النمط لكل صف والفهارس الزمنية لكل صف. لا يحمل التسلسل أي حشو — فالتنفيذ المرجعي يضيف حشواً ليصبح مضاعفاً لـ 64 من أجل FlashAttention ويقسم الذيل باستخدام cu_seqlens = [0, used, S]، وهو ما لا يحتاجه هذا النقل — لذا يعمل الانتباه دون قناع على مستند واحد وتبقى جميع واجهات الانتباه متاحة.

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

forward

< >

( hidden_states: Tensoraudio_hidden_states: Tensorencoder_hidden_states: Tensortimestep: Tensortimestep_indices: Tensortoken_tags: Tensorposition_ids: Tensorvideo_indices: Tensoraudio_indices: Tensortext_indices: Tensorattention_kwargs: dict[str, typing.Any] | None = Nonereturn_dict: bool = True ) → MiniMaxH3TransformerOutput or tuple

المعاملات

  • hidden_states (torch.Tensor من الشكل (batch_size, num_video_tokens, in_channels * prod(patch_size))) — صفوف الكاميرات الكامنة للفيديو المقسّمة إلى بقع — صفوف الشروط وصفوف الأهداف — مرتّبة كما تظهر في التسلسل المُجمَّع، أي مطابقة لـvideo_indices.
  • audio_hidden_states (torch.Tensor من الشكل (batch_size, num_audio_tokens, audio_in_channels)) — صفوف الكامنة للصوت، مرتبة لتتوافق مع audio_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 نص، 2 صوت.
  • position_ids (torch.Tensor من الشكل (seq_len, 3)) — إحداثيات الدوران (t, h, w) لكل صف من التسلسل المُجمَّع.
  • video_indices (torch.Tensor من الشكل (num_video_tokens,)) — مواضع صفوف الفيديو في التسلسل المُجمَّع.
  • audio_indices (torch.Tensor من الشكل (num_audio_tokens,)) — مواضع صفوف الصوت في التسلسل المُجمَّع.
  • text_indices (torch.Tensor من الشكل (num_text_tokens,)) — مواضع صفوف النص في التسلسل المُجمَّع.
  • attention_kwargs (dict، اختياري) — قاموس kwargs الذي، إذا تم تحديده، قد يحمل مدخل scale يُطبَّق على طبقات LoRA.
  • return_dict (bool، القيمة الافتراضية True) — ما إذا كان يجب إرجاع MiniMaxH3TransformerOutput بدلاً من tuple عادي.

يعيد

MiniMaxH3TransformerOutput أو tuple

سرعة الفيديو ذات الشكل (batch_size, num_video_tokens, in_channels * prod(patch_size)) وسرعة الصوت ذات الشكل (batch_size, num_audio_tokens, audio_in_channels)، بترتيب الصفوف في video_indices وaudio_indices.

MiniMaxH3TransformerOutput

فئة diffusers.models.transformers.transformer_minimax_h3.MiniMaxH3TransformerOutput

< >

( sample: Tensoraudio_sample: typing.Optional[torch.Tensor] = None )

المعاملات

  • sample (torch.Tensor من الشكل (batch_size, num_video_tokens, in_channels * prod(patch_size))) — توقع سرعة الفيديو للصفوف المشار إليها بواسطة video_indices، وبالترتيب نفسه. تُعاد صفوف الشروط دون إخفاء — إخفاؤها قبل خطوة المجدول هي مسؤولية المستدعي.
  • audio_sample (torch.Tensor من الشكل (batch_size, num_audio_tokens, audio_in_channels)، القيمة الافتراضية None) — تنبؤ سرعة الصوت للصفوف المشار إليها بواسطة audio_indices، بنفس الترتيب. يملأ forward هذا الحقل دائمًا؛ ولا تكون قيمته الافتراضية None إلا حتى يمكن إعادة بناء المخرجات من قاموس بسيط لحقولها، وهو الطريقة التي تنتقل بها خطافات offload في accelerate كائن BaseOutput إلى جهاز الإدخال.

مخرجات MiniMaxH3Transformer3DModel.

Update on GitHub