Diffusers documentation

DiscreteDDIMScheduler

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

DiscreteDDIMScheduler

يعتمد DiscreteDDIMScheduler على أخذ عينات لكل موضع في اللوحة من التوزيع الخلفي المنفصل الدقيق لعملية التلوث المنتظم (D3PM)، وذلك وفقاً لـ Structured Denoising Diffusion Models in Discrete State-Spaces. وهو خالٍ من المعلمات، حيث يقوم الخطوة النهائية بتثبيت الرموز المتوقعة بشكل حتمي. وتضيف وضع المُتنبئ-المُصحِّح الاختياري عمليات مسح Gibbs التي تستثني عنصراً واحداً من Uniform Diffusion Models Revisited: Leave-One-Out Denoiser and Absorbing State Reformulation عبر corrector_steps.

يُستخدم هذا المجدول بواسطة DiffusionGemmaPipeline.

DiscreteDDIMScheduler

فئة diffusers.DiscreteDDIMScheduler

< >

( num_inference_steps: int = 32corrector_steps: int = 0corrector_k: int = 1corrector_selection: str = 'lowest_log_margin'corrector_selection_tau: float = 1.0 )

المعاملات

  • num_inference_steps (int، القيمة الافتراضية 32) — عدد خطوات إزالة الضوضاء، الذي يحدد الشبكة الزمنية الخطية التي يُقيَّم عليها التوزيع اللاحق.
  • corrector_steps (int، القيمة الافتراضية 0) — عدد عمليات المسح التصحيحية لجيبس التي تُنفَّذ بعد كل خطوة تنبؤية. القيمة 0 تعيد استرجاع أخذ عينات DDIM الأصلية البسيطة.
  • corrector_k (int، القيمة الافتراضية 1) — عدد المواضع التي يتم إعادة أخذ عينات منها في كل جولة تصحيح.
  • corrector_selection (str, defaults to "lowest_log_margin") — How the resampled positions are chosen: "lowest_log_margin", "lowest_maxprob", "lowest_current_prob", or "random".
  • corrector_selection_tau (float، القيمة الافتراضية 1.0) — درجة حرارة اختيار المواقع عبر Gumbel-top-k (كلما انخفضت القيمة، زادت الجشعية).

مجدول DDIM المنفصل لعملية التلوث المنتظم، وفقاً لورقة “نماذج الانتشار غير الضوضائية المهيكلة في فضاءات الحالة المنفصلة” (D3PM، https://huggingface.co/papers/2107.03006).

في الجدول الزمني الخطي، تكون احتمالية بقاء رمز نظيف عند الزمن t هي alpha(t) = 1 - t. يقوم كل خطوة إزالة ضوضاء من الزمن t إلى s < t بسحب كل موضع في الكتلة من التوزيع اللاحق الدقيق q(x_s | x_t, x0)، والذي بالنسبة لنواة موحّدة يتفكك إلى ثلاث مسارات: القفز إلى الرمز النظيف المتوقع x0، أو البقاء على الرمز الحالي، أو القفز إلى رمز عشوائي موحّد. على عكس الانتشار المقنّع، لا يوجد رمز قناع؛ فالمواضع غير المُثبّتة تحمل رموزًا عشوائية.

يتوفر وضع اختياري للتنبؤ والتصحيح يتبع منهجية “Uniform Diffusion Models Revisited: Leave-One-Out Denoiser and Absorbing State Reformulation” عبر مُزيل الضوضاء leave-one-out (LOO) (https://huggingface.co/papers/2605.22765). عندما يكون corrector_steps > 0، يقوم خط الأنابيب بتنفيذ عدد من جولات التصحيح Gibbs بعد كل خطوة تنبؤ (انظر step_correct())، حيث يعيد أخذ عينات من المواضع الأقل ثقة من الشرطي أحادي الإحداثي Cat(alpha_s * x0_loo + (1 - alpha_s) / K) مع إبقاء البقية ثابتة، مما يُبقي التوزيع الحدي p_s دون تغيير ويحسّن التوليد دون أي تكلفة تدريبية.

خطوة

< >

( model_output: torch.Tensortimestep: int | torch.Tensorsample: torch.LongTensortemperature: float = 0.0generator: torch.Generator | None = Nonereturn_dict: bool = True )

المعاملات

  • model_output (torch.Tensor من الشكل (batch_size, block_length, vocab_size)) — قيم اللوجيت الخام من النموذج للكتلة الحالية.
  • timestep (int أو torch.Tensor) — مؤشر الخطوة الحالية ضمن جدول إزالة الضوضاء، ضمن [0, num_inference_steps - 1].
  • sample (torch.LongTensor من الشكل (batch_size, block_length)) — معرّفات الرموز الحالية للكتلة x_t.
  • temperature (float) — درجة الحرارة المستخدمة في العينة عند سحب x0 من القيم اللوجستية.
  • generator (torch.Generator، اختياري) — مولّد الأرقام العشوائية (RNG) للعينات.
  • return_dict (bool) — ما إذا كان يجب إرجاع DiscreteDDIMSchedulerOutput أو مجرد tuple.

استخرج الكتلة التالية من التوزيع اللاحق q(x_s | x_t, x0) لعملية التلوث المنتظمة.

حيث a = alpha_t / alpha_s (احتمال البقاء من s إلى t) وb = alpha_s، فإن كتلة الاحتمال اللاحق لكل مسار هي

نظيف: b * (1 - a) / K + a * b * 1[x_t = x0]، ثابت: a * (1 - b) / K، ضوضاء: (1 - a) * (1 - b) / K،

إذن، الخطوة الأخيرة (b = 1) تُثبّت بشكل حتمي الرموز النظيفة المتوقعة.

step_correct

< >

( model_output: torch.Tensortimestep: int | torch.Tensorsample: torch.LongTensorgenerator: torch.Generator | None = Nonereturn_dict: bool = True )

المعاملات

  • model_output (torch.Tensor من الشكل (batch_size, block_length, vocab_size)) — قيم اللوجيت الخام من النموذج المُعاد حسابها على sample الحالي (بعد المُتنبِّئ).
  • timestep (int أو torch.Tensor) — مؤشر خطوة التنبؤ التي اكتملت للتو؛ يعمل المُصحِّح عند نقطة الشبكة التالية s.
  • sample (torch.LongTensor من الشكل (batch_size, block_length)) — معرّفات الرموز الحالية للكتلة التي يجب تحسينها.
  • generator (torch.Generator، اختياري) — مولّد الأرقام العشوائية (RNG) للعينات.
  • return_dict (bool) — ما إذا كان يجب إرجاع DiscreteDDIMSchedulerOutput أو مجرد tuple.

نفّذ مسحًا واحدًا لمصحّح غيبس عند وقت ما بعد المُتنبّئ s، متبعًا منهج المُتنبّئ-المُصحّح مع استبعاد عنصر واحد كما في https://huggingface.co/papers/2605.22765.

تُحوَّل قيم النموذج (المُعاد حسابها على sample الحالي) إلى مُزيل الضوضاء LOO، وتُشكَّل الشرطية ذات الإحداثي الواحد p_s(x^l | x^{-l}) = Cat(alpha_s * x0_loo + (1 - alpha_s) / K)، ثم تُختار مواضع corrector_k الأقل ثقة، وتُعاد عينة تلك المواضع بينما تبقى بقية المواضع ثابتة. يحافظ المسح على p_s، لذا فهو يُحسّن العينة دون تغيير حافيتها ولا يتطلب تدريبًا إضافيًا.

DiscreteDDIMSchedulerOutput

فئة diffusers.DiscreteDDIMSchedulerOutput

< >

( prev_sample: torch.LongTensorsampled_tokens: torch.LongTensorsampled_probs: torch.Tensorpred_logits: torch.Tensor )

المعاملات

  • prev_sample (torch.LongTensor من الشكل (batch_size, block_length)) — رموز الكتلة المحدّثة بعد خطوة إزالة الضوضاء الحالية.
  • sampled_tokens (torch.LongTensor من الشكل (batch_size, block_length)) — معرّفات الرموز المُستخرجة من قيم النموذج الاحتمالية، أي الرموز النظيفة المتوقعة x0.
  • sampled_probs (torch.Tensor من الشكل (batch_size, block_length)) — احتمالات الرموز المُستخرجة.
  • pred_logits (torch.Tensor من الشكل (batch_size, block_length, vocab_size)) — قيم اللوجيت الخاصة بإزالة الضوضاء، والتي تُمرَّر لتسهيل التكييف الذاتي في الخطوة التالية.

فئة الإخراج لمجدول DDIM المنفصل.

Update on GitHub