Diffusers documentation
MiniMaxH3Scheduler
MiniMaxH3Scheduler
MiniMaxH3Scheduler هو مُجدول أويلر للتدفق المُصحَّح (eta = 0) مع إزاحة سيجما أُسّية يستخدمها MiniMax-H3، sigma' = s * sigma / (1 + (s - 1) * sigma).
تسجّل خطوط أنابيب MiniMax-H3 اثنتين منها، لأنّ الكامنات (latents) الخاصة بالفيديو والصوت تتقدّم وفق جدولين مختلفين داخل استدعاء واحد لتحوّل (transformer) في كل خطوة: يحمل scheduler جدول الفيديو (shift=12.0 في نقاط التفتيش المنشورة) وaudio_scheduler جدول الصوت (shift=3.0).
MiniMaxH3Scheduler
فئة diffusers.MiniMaxH3Scheduler
< source >( shift: float = 12.0stochastic_sampling: bool = Falseshift_provided_sigmas: bool | None = None )
المعاملات
- shift (
float، القيمة الافتراضية12.0) — إزاحة أسّية تُطبَّق على شبكة سيجما،sigma' = s*sigma / (1 + (s-1)*sigma). تستخدم نقاط التفتيش المُصدَّرة قيمة12.0لمتغيرات الفيديو الكامنة و3.0لمتغيرات الصوت الكامنة. - stochastic_sampling (
bool، القيمة الافتراضيةFalse) — استبدل مزيج أويلر بتحديث إعادة الضجيج: تنبأ بالعينة النظيفة، ثم أعد ضجيجها إلى سيجما التالية باستخدام ضجيج جديد. تم تدريب محولات Pika H3 Flex ذات الخطوات القليلة لهذا التحديث؛ بينما لم يتم تدريب نقاط التفتيش الأساسية. - shift_provided_sigmas (
bool، اختياري) — ما إذا كانت قيمsigmasالصريحة المُمرَّرة إلى set_timesteps() تُشكّل شبكة أساسية يُجري المُجدوِل إزاحةً عليها، كما يفعل مع شبكةlinspaceالخاصة به، أم أنها جدول مكتمل يُستخدم كما هو. إذا لم يُضبط هذا الخيار، يُستخدم الجدول كما هو مع تحذير بشأن الإيقاف التدريجي؛ وسيصبح الافتراضيTrueفي الإصدار 0.44.0.
مجدول أويلر للتدفق المُصحَّح (eta = 0) مع إزاحة سيجما أُسّية، كما يُستخدم في MiniMax-H3.
index_for_timestep
< source >( timestep: typing.Union[float, torch.Tensor] ) → int
خريطة قيمة خطوة زمنية إلى فهرسها في الجدول الزمني.
scale_noise
< source >( sample: FloatTensortimestep: typing.Union[float, torch.FloatTensor]noise: FloatTensor ) → torch.FloatTensor
عملية الأمامية للتدفق المُصحَّح، وفق اتفاقية t في MiniMax-H3: x_t = t*x_0 + (1 - t)*noise.
يستخدم MiniMax-H3 هذا لإضافة ضوضاء إلى نقاط التثبيت الشرطية، حيث يكون t هو مستوى noise_aug وليس عنصرًا في الجدول الزمني، لذا يُؤخذ timestep بقيمته الحرفية ولا يتم البحث عنه في self.timesteps إطلاقًا.
set_begin_index
< source >( begin_index: int = 0 )
يحدد الفهرس الابتدائي للمجدول.
set_shift
< source >( shift: float )
يتجاوز إزاحة سيغما المُهيأة؛ استدعِ قبل set_timesteps().
تُعرّض MiniMax-H3 هذه القيمة لكل طلب على حدة عبر flow_shift (للفيديو) / audio_flow_shift (لصوت).
set_timesteps
< source >( num_inference_steps: int | None = Nonedevice: typing.Union[str, torch.device, NoneType] = Nonesigmas: typing.Union[list[float], torch.Tensor, NoneType] = None )
المعاملات
- num_inference_steps (
int، اختياري) — عدد نقاط شبكة سيجما، بما في ذلك0النهائي. يتم تجاهله عند تقديمsigmas. - device (
strأوtorch.device، اختياري) — الجهاز الذي تُنقل إليه تينسورات الجدول الزمني. يتم بناء الشبكة نفسها دائمًا على وحدة المعالجة المركزية (CPU) بصيغة float32 حتى لا يعتمد الجدول الزمني على المعالج التسريعي. - sigmas (
list[float]أوtorch.Tensor، اختياري) — شبكة صريحة، متناقصة بشكل صارم وتنتهي عند0.0. عند تعيينshift_provided_sigmas=Trueتكون شبكة أساسية ضمن[0, 1]تخضع للإزاحة كما تفعل شبكةlinspace؛ وإلا تُستخدم كما هي (الافتراضي المُتقادم).
إنشاء جدول سيجما / خطوة الزمن.
تُمرَّر الشبكة linspace(1, 0, num_inference_steps) عبر الإزاحة الأسية، مع دمج التكرارات المتتالية، أو تُستخدم sigmas الصريحة، وتُزاح هي الأخرى عند تعيين shift_provided_sigmas. القيمة النهائية 0 جزء أصيل من الشبكة — إذ تُحوِّل الإزاحة 0 إلى 0 بالضبط — لذا يحتفظ الجدول بـ num_inference_steps قيمة سيجما، ويدير num_inference_steps - 1 تقييمات للنموذج، وتُعرَض على شكل self.timesteps = 1 - sigmas[:-1].
خطوة
< source >( model_output: FloatTensortimestep: typing.Union[float, torch.FloatTensor]sample: FloatTensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → MiniMaxH3SchedulerOutput or tuple
المعاملات
- model_output (
torch.FloatTensor) — تنبؤ التحوّل بالسرعة عندtimestep. - timestep (
floatأوtorch.FloatTensor) — خطوة الزمن الحالية، إحدى قيمself.timesteps(لذاtimestep == 1 - sigma). - sample (
torch.FloatTensor) — العينة الحاليةx_t. - generator (
torch.Generator، اختياري) — المولّد الذي تُسحب منه الضوضاء الجديدة باستخدامstochastic_sampling؛ غير مستخدم في الحالات الأخرى. - return_dict (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاعMiniMaxH3SchedulerOutputبدلاً من tuple عادي.
يعيد
MiniMaxH3SchedulerOutput أو tuple
المثال للخطوة التالية.
خذ خطوة واحدة أويلر (eta = 0)، أو خطوة إعادة ضجيج واحدة باستخدام stochastic_sampling.
إخراج النموذج هو سرعة باتجاه البيانات، لذا فإن التقدير المُزيل للضوضاء هو x0 = x_t + (1 - t) * v — لاحظ +، وهو عكس اتفاقية flow-match المعتادة. ثم يكون التحديث هو المزيج x_next = r*x_t + (1 - r)*x0 حيث r = sigma_next / sigma، ويُحسب في float32 لعينات الدقة النصفية. مع stochastic_sampling يكون التحديث x_next = (1 - sigma_next) * x0 + sigma_next * noise بضوضاء جديدة من generator، وكل ذلك في float32، بحيث تُرجع الخطوة الأخيرة (sigma_next = 0) x0.
MiniMaxH3SchedulerOutput
فئة diffusers.schedulers.scheduling_minimax_h3.MiniMaxH3SchedulerOutput
< source >( prev_sample: FloatTensor )
فئة الإخراج لدالة step الخاصة بالجدول الزمني.