Diffusers documentation
BlockRefinementScheduler
BlockRefinementScheduler
يدير BlockRefinementScheduler التحسين التكراري على مستوى الكتل لتوزيع الرموز المنفصلة. في كل خطوة، يُثبّت الرموز الأكثر ثقة، ويحرّر اختيارياً الرموز المثبتة مسبقاً عندما يتنبأ النموذج برمز مختلف بثقة عالية.
يُستخدم هذا المجدول بواسطة LLaDA2Pipeline.
BlockRefinementScheduler
فئة diffusers.BlockRefinementScheduler
< source >( block_length: int = 32num_inference_steps: int = 32threshold: float = 0.95editing_threshold: float | None = Noneminimal_topk: int = 1 )
مجدول لتحسين تكراري على مستوى الكتل (التزام حسب الثقة).
في كل خطوة، يقوم المجدول بسحب رموز مرشحة من قيم النموذج (logits) ويثبّت تلك التي تتمتع بأعلى درجة ثقة. يُحدَّد عدد الرموز التي يجب تثبيتها في كل خطوة من خلال توزيع طول الكتلة بالتساوي على عدد خطوات التحسين.
يدعم التحرير بشكل اختياري: بعد حل جميع رموز الأقنعة، يمكن استبدال الرموز إذا توقع النموذج رمزًا مختلفًا بثقة تتجاوز editing_threshold الإيجابي (None أو 0.0 أو قيمة سالبة تعطّل التحرير).
add_noise
< source >( original_samples: torch.LongTensorattention_mask: torch.LongTensorprompt_length: intblock_length: intmask_token_id: intgenerator: torch.Generator | None = None ) → tuple[torch.LongTensor, torch.LongTensor, torch.BoolTensor, torch.BoolTensor]
المعاملات
- original_samples (
torch.LongTensorمن الشكل(batch_size, seq_len)) — معرّفات الرموز النظيفة. - attention_mask (
torch.LongTensorمن الشكل(batch_size, seq_len)) — قناع الحشو (1 للقيم الصالحة، 0 للحشو). - prompt_length (
int) — عدد رموز الموجّه الأولية التي يجب إبقاؤها دون إخفاء. - block_length (
int) — حجم الكتلة للإخفاء. - mask_token_id (
int) — معرّف الرمز (Token ID) المستخدم للمواقع المقنّعة. - generator (
torch.Generator، اختياري) — مولّد الأرقام العشوائية (RNG) لضمان قابلية التكرار.
يعيد
tuple[torch.LongTensor, torch.LongTensor, torch.BoolTensor, torch.BoolTensor]
(noisy, noisy_rev, masked, masked_rev) — التسلسلان الضاجّان المتكاملان وقناعاهما المنطقيان المقابلة لهما.
طبّق العملية الأمامية (إضافة الضوضاء) لتقنية إخفاء الكتل شبه التلقائية.
لكل كتلة بعد الاستعلام، يتم استبدال نسبة عشوائية من الرموز الصالحة (غير الحشو) بـ mask_token_id. تُعاد وجهتان متكاملتان: noisy وnoisy_rev، حيث تكون المواضع المقنّعة في إحداهما هي المواضع غير المقنّعة في الأخرى.
check_block_should_continue
< source >( step_idx: intmasks_remaining: boolediting_enabled: boolediting_transfer_index: torch.BoolTensorpost_steps: intmax_post_steps: intfinished: torch.BoolTensor ) → bool
المعاملات
- step_idx (
int) — مؤشر خطوة التحسين الحالية ضمن هذا الكتلة. - masks_remaining (
bool) — ما إذا كانت هناك رموز أقنعة متبقية في الكتلة. - editing_enabled (
bool) — ما إذا كان وضع التحرير نشطًا. - editing_transfer_index (
torch.BoolTensor) — أي الرموز التي تم تعديلها في هذه الخطوة. - post_steps (
int) — عدد خطوات تحرير ما بعد القناع التي تم اتخاذها حتى الآن. - max_post_steps (
int) — الحد الأقصى لخطوات تحرير ما بعد القناع المسموح بها. - finished (
torch.BoolTensor) — أعلام الانتهاء لكل دفعة (من اكتشاف EOS).
يعيد
bool
True إذا كان يجب مواصلة التحسين، False للإيقاف.
حدد ما إذا كان يجب استمرار حلقة التكرار الداخلية للتحسين للكتلة الحالية.
check_eos_finished
< source >( cur_x: torch.LongTensorsampled_tokens: torch.LongTensorfinal_transfer: torch.BoolTensorfinished: torch.BoolTensoreos_token_id: intmask_token_id: intprompt_length: int ) → torch.BoolTensor
المعاملات
- cur_x (
torch.LongTensorمن الشكل(batch_size, seq_len)) — التسلسل الكامل الحالي بما في ذلك جميع الكتل حتى النافذة الحالية. - sampled_tokens (
torch.LongTensorمن الشكل(batch_size, block_length)) — الرموز التي قام مُجدول المهام بعينتها في هذه الخطوة. - final_transfer (
torch.BoolTensorمن الشكل(batch_size, block_length)) — قناع مجمّع للمواقع الملتزم بها والمعدّلة. - finished (
torch.BoolTensorمن الشكل(batch_size,)) — أعلام الانتهاء الحالية لكل دفعة. - eos_token_id (
int) — معرّف رمز نهاية الجملة (EOS). - mask_token_id (
int) — معرّف رمز الإخفاء. - prompt_length (
int) — عدد رموز الاستدعاء (prompt) في بداية التسلسل.
يعيد
torch.BoolTensor
تم تحديث أعلام الانتهاء.
حدّث أعلام الانتهاء لكل دفعة عند تثبيت رموز EOS.
وزّع التزامات الرموز block_length بالتساوي على num_inference_steps خطوة.
خطوة
< source >( model_output: torch.Tensortimestep: int | torch.Tensorsample: torch.LongTensormask_token_id: int | None = Nonetemperature: float = 0.0top_p: float | None = Nonetop_k: int | None = Nonesampling_method: str = 'auto'threshold: float | None = Noneediting_threshold: float | None = Noneminimal_topk: int | None = Noneprompt_mask: torch.BoolTensor | None = Nonegenerator: torch.Generator | None = Nonereturn_dict: bool = True )
المعاملات
- model_output (
torch.Tensorمن الشكل(batch_size, block_length, vocab_size)) — قيم اللوجيت الخام من النموذج للكتلة الحالية. - timestep (
intأوtorch.Tensor) — مؤشر الخطوة الحالية ضمن جدول تحسين الكتلة. - sample (
torch.LongTensorمن الشكل(batch_size, block_length)) — معرّفات الرموز الحالية للكتلة (تحتوي على رموز القناع للمواقع غير المؤكدة في الوضع القائم على القناع). - mask_token_id (
int, اختياري) — معرّف الرمز المستخدم للمواقع المقنّعة. عند تعيينNone، يعمل المجدول في وضع التآكل المنتظم: فهو يتتبع المواقع المُثبَّتة داخليًا (مع إعادة تعيينها عندtimestep == 0) ويعيد إضافة الضوضاء إلى المواقع غير المُثبَّتة باستخدام رموز عشوائية منتظمة، بما يتوافق مع عيّنة تحسين الكتل في DiffusionGemma. - temperature (
float) — درجة حرارة العينة. - top_p (
float, اختياري) — حدّ عيّنة النواة. - top_k (
int، اختياري) — حدّ قطع أخذ العينة Top-k. - sampling_method (
str) — طريقة العينة (auto،greedy،multinomial). - threshold (
float، اختياري) — حد الثقة لالتزام الرموز. القيمة الافتراضية هي قيمة الإعداد. - editing_threshold (
float، اختياري) — حد الثقة لتحرير الرموز غير المقنّعة؛ يجب أن يكون موجبًا لتفعيل التحرير. القيمة الافتراضية هي قيمة الإعداد. - minimal_topk (
int، اختياري) — الحد الأدنى لعدد الرموز التي يجب الالتزام بها في كل خطوة. القيمة الافتراضية هي قيمة الإعداد. - prompt_mask (
torch.BoolTensor، اختياري) — قناع منطقي (Boolean mask) بأبعاد(block_length,)حيث يشيرTrueإلى مواضع المحفّز (غير القابلة للتحرير). - generator (
torch.Generator، اختياري) — مولّد الأرقام العشوائية (RNG) للعينات. - return_dict (
bool) — ما إذا كان يجب إرجاعBlockRefinementSchedulerOutputأو tuple.
أداء خطوة تحسين واحدة: أخذ عينة من القيم اللوجستية، تثبيت الرموز ذات الثقة العالية، وتعديل الرموز الموجودة اختيارياً.
BlockRefinementSchedulerOutput
فئة diffusers.BlockRefinementSchedulerOutput
< source >( prev_sample: torch.LongTensortransfer_index: torch.BoolTensorediting_transfer_index: torch.BoolTensorsampled_tokens: torch.LongTensorsampled_probs: torch.Tensorpred_logits: torch.Tensor )
المعاملات
- prev_sample (
torch.LongTensorمن الشكل(batch_size, block_length)) — رموز الكتلة المحدّثة بعد خطوة التحسين الحالية. - transfer_index (
torch.BoolTensorمن الشكل(batch_size, block_length)) — قناع منطقي يُظهر الرموز التي تم تثبيتها (تعبئة القناع). - editing_transfer_index (
torch.BoolTensorمن الشكل(batch_size, block_length)) — قناع منطقي (Boolean mask) يُظهر الرموز التي تم تعديلها (استبدال غير القناع). - sampled_tokens (
torch.LongTensorمن الشكل(batch_size, block_length)) — معرّفات الرموز المُستخرجة من نتائج النموذج (logits). - sampled_probs (
torch.Tensorمن الشكل(batch_size, block_length)) — احتمالات الرموز المُستخرجة. - pred_logits (
torch.Tensorمن الشكل(batch_size, block_length, vocab_size)) — قيم اللوجيت الخاصة بإزالة الضوضاء، والتي تُمرَّر لتسهيل التكييف الذاتي في الخطوة التالية.
فئة الإخراج لجدولة تحسين الكتل.