# الإنشاء

يحتوي كل إطار عمل على طريقة generate لتوليد النص، وهي مُنفَّذة في فئة `GenerationMixin` الخاصة به:

- يُنفَّذ [generate()](/docs/transformers/main/ar/main_classes/text_generation#transformers.GenerationMixin.generate) في PyTorch داخل [GenerationMixin](/docs/transformers/main/ar/main_classes/text_generation#transformers.GenerationMixin).

يمكنك تخصيص طريقة generate باستخدام كائن من فئة [GenerationConfig](/docs/transformers/main/ar/main_classes/text_generation#transformers.GenerationConfig). يُرجى الرجوع إلى هذه الفئة للحصول على القائمة الكاملة لمعايير التوليد، التي تتحكم في سلوك طريقة التوليد.

لتعلّم كيفية فحص إعدادات توليد النموذج، وما هي القيم الافتراضية، وكيفية تغيير المعلمات بشكل مؤقت، وكيفية إنشاء إعدادات توليد مخصصة وحفظها، راجع [دليل استراتيجيات توليد النص](../generation_strategies). يشرح الدليل أيضاً كيفية استخدام الميزات ذات الصلة، مثل بث الرموز.

## GenerationConfig[[transformers.GenerationConfig]]

#### transformers.GenerationConfig[[transformers.GenerationConfig]]

```python
transformers.GenerationConfig(**kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/configuration_utils.py#L96)

**المعاملات التي تتحكم في طول المخرجات:**

max_length (`int`, *اختياري*) : يُوصى باستخدام `max_new_tokens` للتحكم في عدد الرموز التي يولّدها النموذج. ويبقى `max_length` من أجل التوافق مع الإصدارات السابقة.

max_new_tokens (`int`، *اختياري*) : الحد الأقصى لعدد الرموز (tokens) التي سيتم توليدها، مع تجاهل عدد الرموز الموجودة في الاستعلام (prompt).

min_length (`int`, *اختياري*) : الحد الأدنى لطول التسلسل المراد توليده. يتوافق مع طول موجه الإدخال + `min_new_tokens`. يتم تجاوز تأثيره بواسطة `min_new_tokens` إذا تم ضبطه أيضاً.

min_new_tokens (`int`، *اختياري*) : الحد الأدنى لعدد الرموز المراد توليدها، مع تجاهل عدد الرموز الموجودة في الاستعلام.

early_stopping (`bool` أو `str`، *اختياري*) : يتحكم في شرط التوقف للطرق المعتمدة على الحزم، مثل beam-search. يقبل القيم التالية: `True`، حيث يتوقف التوليد بمجرد وجود `num_beams` مرشحين مكتملين؛ `False`، حيث يُطبَّق نهج تقريبي ويتوقف التوليد عندما يصبح من غير المرجح جدًا العثور على مرشحين أفضل؛ `"never"`، حيث يتوقف إجراء البحث بالحزم فقط عندما لا يمكن وجود مرشحين أفضل (خوارزمية البحث بالحزم القياسية).

max_time (`float`، *اختياري*) : الحد الأقصى للوقت المسموح به لتشغيل الحساب بالثواني. ستُكمل عملية التوليد المرور الحالي بعد انقضاء الوقت المخصص.

stop_strings (`str` أو `list[str]`، *اختياري*) : نص أو قائمة من النصوص يجب أن تُنهي التوليد إذا أخرجها النموذج.

**المعاملات التي تتحكم في استراتيجية التوليد المستخدمة:**

do_sample (`bool`) : ما إذا كان سيتم استخدام العينة أم لا؛ وإلا فسيتم استخدام فك الترميز الجشع.

num_beams (`int`, *اختياري*) : عدد الحزم في بحث الحزم. القيمة 1 تعني عدم استخدام بحث الحزم.

use_mtp : (`bool`): ما إذا كان سيتم استخدام التنبؤ متعدد الرموز (MTP) أم لا، في حال دعم النموذج لذلك.

**المعاملات التي تتحكم في ذاكرة التخزين المؤقت:**

use_cache (`bool`) : ما إذا كان يجب على النموذج استخدام انتباهات المفاتيح/القيم الأخيرة السابقة (إذا كان ذلك ينطبق على النموذج) لتسريع فك الترميز.

cache_implementation (`str`, *optional*) : Name of the cache class that will be instantiated in `generate`, for faster decoding. Possible values are:  - `"dynamic"`: [DynamicCache](/docs/transformers/main/ar/internal/generation_utils#transformers.DynamicCache) - `"static"`: [StaticCache](/docs/transformers/main/ar/internal/generation_utils#transformers.StaticCache) - `"offloaded"`: `DynamicCache(offloaded=True)` - `"offloaded_static"`: `StaticCache(offloaded=True)` - `"quantized"`: [QuantizedCache](/docs/transformers/main/ar/internal/generation_utils#transformers.QuantizedCache)  If none is specified, we will use the default cache for the model (which is often [DynamicCache](/docs/transformers/main/ar/internal/generation_utils#transformers.DynamicCache)). See our [cache documentation](https://huggingface.co/docs/transformers/en/kv_cache) for further information.

cache_config (`dict`، *اختياري*، الافتراضي `None`) : يمكن تمرير الحُجج المستخدمة في فئة ذاكرة التخزين المؤقت للمفتاح-القيمة عبر `cache_config`.

max_cache_len (`int`, *اختياري*) : يُستخدم فقط مع ذاكات التخزين الثابتة (عند ضبط `cache_implementation` على `"static"` أو `"offloaded_static"`). يحدد حجم ذاكرة التخزين مسبقًا على هذا الطول بدلاً من `max_length` الخاص بالاستدعاء الحالي. اضبطه مرة واحدة على أكبر استدعاء تتوقعه، بحيث تعيد استدعاءات `generate()` المتكررة التي تتضمن موجهًا أطول أو قيمة أكبر لـ `max_new_tokens` (حتى هذا الحد الأقصى) استخدام نفس ذاكرة التخزين بدلاً من تحفيز إعادة تخصيص وإعادة تجميع `torch.compile`.

**معاملات لتلاعب في قيم اللوجيتات الناتجة عن النموذج:**

temperature (`float`، *اختياري*) : القيمة المستخدمة لتعديل احتمالات الرمز التالي. يتم تعيين هذه القيمة في ملف `generation_config.json` الخاص بالنموذج. إذا لم يتم تعيينها، فإن القيمة الافتراضية هي 1.0

top_k (`int`، *اختياري*) : عدد رموز المفردات ذات أعلى احتمالات التي يجب الاحتفاظ بها لتصفية top-k. يتم تعيين هذه القيمة في ملف `generation_config.json` الخاص بالنموذج. إذا لم يتم تعيينها، فإن القيمة الافتراضية هي 50.

top_p (`float`، *اختياري*) : إذا تم ضبطه على قيمة float < 1، فسيتم الاحتفاظ فقط بأصغر مجموعة من الرموز الأكثر احتمالاً التي تضيف احتمالاتها إلى `top_p` أو أعلى لتوليد النص. يتم ضبط هذه القيمة في ملف `generation_config.json` الخاص بالنموذج. إذا لم يتم ضبطها، فإن القيمة الافتراضية هي 1.0

min_p (`float`، *اختياري*) : الحد الأدنى لاحتمالية الرمز، والذي يتم تحديده بالنسبة لاحتمالية الرمز الأكثر احتمالاً. يجب أن تكون القيمة بين 0 و 1. القيم النموذجية تقع في نطاق 0.01-0.2، وهي انتقائية بشكل مقارب لضبط `top_p` في نطاق 0.99-0.8 (استخدم القيم المعاكسة لقيم `top_p` المعتادة).

top_h (`float`, *اختياري*) : معامل توسيع ميزانية الإنتروبيا، الذي يتحكم في مقدار إنتروبيا التوزيع الذي يُحافظ عليه عند أخذ العينات. يجب أن يكون قيمة بين 0 و1. في كل خطوة، تُرتَّب الرموز حسب الاحتمال، ويُحتفظ بأصغر بادئة من الرموز التي تكون *إنتروبياها المعاد تطبيعها* أقل من أو تساوي `top_h` مضروبًا في إنتروبيا التوزيع الكامل. تؤدي القيم الأصغر (مثل 0.2–0.5) إلى مخرجات أكثر تركيزًا وحتمية، بينما تسمح القيم الأقرب إلى 1.0 بمزيد من العشوائية والتنوع. القيم النموذجية تقع في نطاق 0.3–0.6.

typical_p (`float`, *اختياري*) : يقيس مقياس النموذجية المحلية مدى تشابه الاحتمال الشرطي للتنبؤ بالرمز المستهدف التالي مع الاحتمال الشرطي المتوقع للتنبؤ برمز عشوائي التالي، بالنظر إلى النص الجزئي الذي تم توليده بالفعل. إذا تم ضبطه على قيمة float < 1، فسيتم الاحتفاظ بأصغر مجموعة من الرموز الأكثر نموذجية محليًا والتي تضاف احتمالاتها لتساوي `typical_p` أو أعلى، وذلك للتوليد. راجع [هذا الورقة](https://huggingface.co/papers/2202.00666) لمزيد من التفاصيل.

epsilon_cutoff (`float`، *اختياري*) : إذا تم ضبطه على قيمة عشرية تقع بصرامة بين 0 و 1، فسيتم أخذ عينات من الرموز التي تتجاوز احتمالية الشرط فيها `epsilon_cutoff` فقط. في الورقة البحثية، تتراوح القيم المقترحة بين 3e-4 و 9e-4، اعتمادًا على حجم النموذج. راجع [Truncation Sampling as Language Model Desmoothing](https://huggingface.co/papers/2210.15191) لمزيد من التفاصيل.

eta_cutoff (`float`, *اختياري*) : يُعدّ أخذ العينات باستخدام إيتا مزيجًا من أخذ العينات النموذجي محليًا وأخذ العينات باستخدام إبسيلون. إذا تم ضبطه على قيمة عشرية تقع بصرامة بين 0 و1، فإن الرمز يُعتبر فقط إذا كان أكبر من `eta_cutoff` أو `sqrt(eta_cutoff) * exp(-entropy(softmax(next_token_logits)))`. الحد الثاني هو، بحدس، احتمال الرمز التالي المتوقع، مُقيَّمًا بواسطة `sqrt(eta_cutoff)`. في الورقة البحثية، تتراوح القيم المقترحة بين 3e-4 و2e-3، اعتمادًا على حجم النموذج. راجع [Truncation Sampling as Language Model Desmoothing](https://huggingface.co/papers/2210.15191) لمزيد من التفاصيل.

repetition_penalty (`float`، *اختياري*) : معامل عقوبة التكرار. القيمة 1.0 تعني عدم وجود عقوبة. راجع [هذا الورق](https://huggingface.co/papers/1909.05858) لمزيد من التفاصيل.

encoder_repetition_penalty (`float`، *اختياري*) : المعامل الخاص بـ encoder_repetition_penalty. عقوبة أُسّية على التسلسلات غير الموجودة في المدخلات الأصلية. القيمة 1.0 تعني عدم وجود عقوبة.

length_penalty (`float`, *اختياري*) : عقوبة أسية على الطول تُستخدم مع التوليد القائم على الحزم. تُطبَّق كقوة أسية لطول التسلسل، الذي يُستخدم بدوره لقسم درجة التسلسل. وبما أن الدرجة هي الاحتمال اللوغاريتمي للتسلسل (أي سالبة)، فإن `length_penalty` > 0.0 يشجع على تسلسلات أطول، بينما `length_penalty` < 0.0 يشجع على تسلسلات أقصر.

no_repeat_ngram_size (`int`، *اختياري*) : إذا تم ضبطه على قيمة int > 0، فلا يمكن أن تظهر جميع ngrams من ذلك الحجم إلا مرة واحدة.

bad_words_ids (`list[list[int]]`، *اختياري*) : قائمة من قوائم معرّفات الرموز التي لا يُسمح بتوليدها. راجع [NoBadWordsLogitsProcessor](/docs/transformers/main/ar/internal/generation_utils#transformers.NoBadWordsLogitsProcessor) للحصول على مزيد من التوثيق والأمثلة.

renormalize_logits (`bool`) : ما إذا كان يجب إعادة تطبيع القيم اللوجستية (logits) بعد تطبيق جميع معالجات القيم اللوجستية (بما في ذلك المخصصة). يُوصى بشدة بتعيين هذا العلم إلى `True` لأن خوارزميات البحث تفترض أن قيم اللوجيتات (logits) المُقدَّرة مُطبَّعة، لكن بعض معالجات اللوجيتات (logits) تُخرق عملية التطبيع.

forced_bos_token_id (`int`، *اختياري*، القيمة الافتراضية هي `model.config.forced_bos_token_id`) : المعرّف الخاص بالرمز الذي يجب إجباره ليكون الرمز الأول المولّد بعد `decoder_start_token_id`. مفيد للنماذج متعددة اللغات مثل [mBART](../model_doc/mbart) حيث يجب أن يكون الرمز الأول المولّد هو رمز اللغة المستهدفة.

forced_eos_token_id (`int` or list[int]`, *optional*, defaults to `model.config.forced_eos_token_id`) : The id of the token to force as the last generated token when `max_length` is reached. Optionally, use a list to set multiple *end-of-sequence* tokens.

remove_invalid_values (`bool`) : ما إذا كان يجب إزالة المخرجات المحتملة *nan* و*inf* من النموذج لمنع طريقة التوليد من التعطل. لاحظ أن استخدام `remove_invalid_values` قد يُبطئ عملية التوليد.

exponential_decay_length_penalty (`tuple(int, float)`، *اختياري*) : يضيف هذا الـ Tuple عقوبة طول متزايدة أُسّياً بعد توليد عدد معين من الرموز. يتكوّن الـ tuple من: `(start_index, decay_factor)` حيث يشير `start_index` إلى نقطة بدء العقوبة، ويمثل `decay_factor` معامل التلاشي الأُسّي.

suppress_tokens (`list[int]`، *اختياري*) : قائمة من الرموز التي سيتم كبتها أثناء التوليد. سيقوم معالج اللوجيت `SuppressTokens` بإعداد احتمالات اللوجيت الخاصة بها إلى `-inf` حتى لا يتم اختيارها.

begin_suppress_tokens  (`list[int]`, *اختياري*) : قائمة من الرموز التي سيتم كبتها في بداية التوليد. سيقوم معالج اللوجيت `SuppressBeginTokens` بإعداد احتمالات اللوج الخاصة بها إلى `-inf` حتى لا يتم اختيارها.

sequence_bias (`dict[tuple[int], float]`، *اختياري*)) : قاموس يربط تسلسل الرموز (tokens) بحده الانحياز (bias term). تزيد الانحيازات الموجبة من احتمالية اختيار التسلسل، بينما تفعل الانحيازات السالبة العكس. راجع [SequenceBiasLogitsProcessor](/docs/transformers/main/ar/internal/generation_utils#transformers.SequenceBiasLogitsProcessor) للحصول على مزيد من التوثيق والأمثلة.

token_healing (`bool`) : إصلاح الرموز النهائية للطلبات عن طريق استبدالها بامتداداتها المناسبة. يعزز هذا جودة المكملات للطلبات المتأثرة بتحيز الترميز الجشع.

guidance_scale (`float`، *اختياري*) : مقياس التوجيه الخاص بالتوجيه الحر من التصنيف (CFG). يتم تفعيل CFG عن طريق تعيين `guidance_scale > 1`. كلما زاد مقياس التوجيه، شجّع النموذج على توليد عينات أكثر ارتباطًا بعبارة الإدخال، وعادةً على حساب انخفاض الجودة.

watermarking_config (`BaseWatermarkingConfig` أو `dict`، *اختياري*) : الحُجج المستخدمة لإضافة علامة مائية إلى مخرجات النموذج عن طريق إضافة انحياز صغير إلى مجموعة عشوائية محددة من الرموز "الخضراء". راجع توثيق [SynthIDTextWatermarkingConfig](/docs/transformers/main/ar/internal/generation_utils#transformers.SynthIDTextWatermarkingConfig) و [WatermarkingConfig](/docs/transformers/main/ar/internal/generation_utils#transformers.WatermarkingConfig) لمزيد من التفاصيل. إذا تم تمريره على شكل `Dict`، فسيتم تحويله داخليًا إلى `WatermarkingConfig`.

**المعاملات التي تُعرّف متغيرات المخرجات لـ generate:**

num_return_sequences (`int`، *اختياري*) : عدد التسلسلات المُعادَة التي تُحسب بشكل مستقل لكل عنصر في الدفعة.

output_attentions (`bool`) : ما إذا كان يجب إرجاع توتيرات الانتباه لجميع طبقات الانتباه أم لا. راجع `attentions` ضمن التوتيرات المُرجعة لمزيد من التفاصيل.

output_hidden_states (`bool`) : ما إذا كان يجب إرجاع حالات الطبقات المخفية (hidden states) لجميع الطبقات. راجع `hidden_states` ضمن المخرجات (returned tensors) لمزيد من التفاصيل.

output_scores (`bool`) : ما إذا كان يجب إرجاع درجات التنبؤ أم لا. راجع `scores` ضمن الموترات المُرجعة لمزيد من التفاصيل.

output_logits (`bool`) : ما إذا كان يجب إرجاع درجات التنبؤ غير المعالجة (logit scores) أم لا. راجع `logits` ضمن المخرجات (returned tensors) لمزيد من التفاصيل.

return_dict_in_generate (`bool`) : ما إذا كان يجب إرجاع [ModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.utils.ModelOutput) أم لا، بدلاً من إرجاع التسلسل المولَّد فقط. يجب تعيين هذا العلم إلى `True` لإرجاع ذاكرة التخزين المؤقت للتوليد (عندما يكون `use_cache` هو `True`) أو المخرجات الاختيارية (انظر الأعلام التي تبدأ بـ `output_`)

**رموز خاصة يمكن استخدامها أثناء التوليد:**

pad_token_id (`int`, *اختياري*) : المعرّف الخاص برموز *padding*.

bos_token_id (`int`, *اختياري*) : المعرّف الخاص برموز *بداية التسلسل*.

eos_token_id (`Union[int, list[int]]`، *اختياري*) : المعرّف الخاص برموز *نهاية التسلسل*. يمكن اختيارياً استخدام قائمة لضبط عدة رموز *نهاية التسلسل*.

**معلمات التوليد الحصرية لنماذج المُشفِّر-المُفكِّك:**

encoder_no_repeat_ngram_size (`int`، *اختياري*) : إذا تم ضبطه على قيمة int > 0، فلا يمكن أن تظهر جميع ngrams ذات ذلك الحجم الموجودة في `encoder_input_ids` في `decoder_input_ids`.

decoder_start_token_id (`int` أو `list[int]`، *اختياري*) : إذا بدأ نموذج مُشفِّر-مُفكِّك (encoder-decoder) فكّ التشفير برمز مختلف عن *bos*، فإن هذا هو المعرّف الخاص بذلك الرمز أو قائمة بطول `batch_size`. يُتيح تحديد قائمة استخدام معرّفات بداية مختلفة لكل عنصر في الدفعة (e.g. النماذج متعددة اللغات التي تحتوي على لغات هدف مختلفة في دفعة واحدة)

**معاملات التوليد الحصرية لتوليد المساعد:**

is_assistant (`bool`) : ما إذا كان النموذج نموذجًا مساعدًا (مسودة).

num_assistant_tokens (`int`, *اختياري*) : يحدد عدد _الرموز التخمينية_ التي يجب أن يولدها نموذج المساعد قبل أن يفحصها النموذج المستهدف في كل تكرار. كلما زادت قيم `num_assistant_tokens`، أصبح التوليد أكثر _تخمينية_ : إذا كان نموذج المساعد ذا أداء عالٍ، يمكن تحقيق تسارعات أكبر، أما إذا احتاج نموذج المساعد إلى تصحيحات كثيرة، فإن التسارعات المحققة ستكون أقل.

num_assistant_tokens_schedule (`str`, *اختياري*) : يحدد الجدول الزمني الذي يجب تغيير الحد الأقصى لعدد رموز المساعد (max assistant tokens) وفقًا له أثناء الاستدلال. - `"heuristic"`: إذا كانت جميع الرموز التخمينية صحيحة، يتم زيادة `num_assistant_tokens` بمقدار 2، وإلا يتم تقليلها بمقدار 1. قيمة `num_assistant_tokens` تبقى ثابتة عبر عدة استدعاءات للتوليد باستخدام نفس نموذج المساعد. - `"heuristic_transient"`: نفس `"heuristic"` لكن `num_assistant_tokens` تُعاد إلى قيمتها الأولية بعد كل استدعاء للتوليد. - `"constant"`: تبقى `num_assistant_tokens` دون تغيير أثناء التوليد

assistant_confidence_threshold (`float`, *اختياري*) : عتبة الثقة لنموذج المساعد. إذا كانت ثقة نموذج المساعد في توقعه للرمز الحالي أقل من هذه العتبة، يتوقف نموذج المساعد عن تكرار توليد الرمز الحالي، حتى لو لم يتم بعد بلوغ عدد _الرموز التخمينية_ (المعرّف بواسطة `num_assistant_tokens`). يتم ضبط عتبة ثقة المساعد على مدار التكرارات التخمينية لتقليل عدد عمليات المرور الأمامي غير الضرورية للمسودة والنموذج المستهدف، مع ميل لتجنب السلبات الخاطئة. قيمة `assistant_confidence_threshold` تبقى ثابتة عبر عدة استدعاءات للتوليد باستخدام نفس نموذج المساعد. إنها نسخة غير مُشرَفة من الاستشراف الديناميكي للتخمين من Dynamic Speculation Lookahead Accelerates Speculative Decoding of Large Language Models .

prompt_lookup_num_tokens (`int`, *اختياري*) : عدد الرموز التي سيتم إخراجها كرموز مرشحة.

max_matching_ngram_size (`int`، *اختياري*) : الحد الأقصى لحجم ngram الذي يُؤخذ في الاعتبار عند المطابقة في الاستدعاء. القيمة الافتراضية هي 2 إذا لم يُحدد.

assistant_early_exit(`int`, *اختياري*) : إذا تم تعيينه إلى عدد صحيح موجب، فسيتم استخدام الخروج المبكر للنموذج كمساعد. يمكن استخدامه فقط مع النماذج التي تدعم الخروج المبكر (أي النماذج التي يمكن تفسير logits من الطبقات الوسيطة بواسطة رأس LM).

assistant_lookbehind(`int`, *اختياري*) : إذا تم تعيينه إلى عدد صحيح موجب، فإن عملية الترميز من جديد ستأخذ في الاعتبار أيضًا آخر `assistant_lookbehind` من رموز المساعد لمحاذاة الرموز بشكل صحيح. لا يمكن استخدامه إلا مع مُرمّيات مختلفة في فك التشفير التخميني. راجع هذا [المدونة](https://huggingface.co/blog/universal_assisted_generation) لمزيد من التفاصيل.

target_lookbehind(`int`, *اختياري*) : إذا تم ضبطه على عدد صحيح موجب، فإن عملية الترميز مرة أخرى ستأخذ في الاعتبار أيضًا آخر `target_lookbehind` من رموز الهدف لمحاذاة الرموز بشكل صحيح. لا يمكن استخدامه إلا مع مُرمّزات مختلفة في فك التشفير التخميني. راجع هذا [المدونة](https://huggingface.co/blog/universal_assisted_generation) لمزيد من التفاصيل.

assistant_ensemble_weight (`float`, *اختياري*) : يُفعّل التحقق الثابت للتجميع في فك الترميز التخميني. إذا تم تعيينه إلى قيمة ضمن `(0.0, 1.0)`، يقبل المُتحقِّق الرموز مقابل الخليط `w * p_target + (1 - w) * q_draft` بدلاً من `p_target`، مما يقدّم انحيازاً توزيعياً مُتحكَّماً فيه مقابل معدل قبول أعلى. القيمة الافتراضية هي `None`، مما يحافظ على فك الترميز دون فقدان. يتطلب أن تُعيد نموذج المساعد قيم اللوجيت، لذا فهو غير متوافق مع فك الترميز عبر البحث في الاستدعاء.

speculation_type (`str`، *اختياري*) : نوع التخمين المطلوب. القيم المقبولة هي `dflash`.

**المعاملات المتعلقة بالأداء والتجميع:**

compile_config (CompileConfig، *اختياري*) : عند استخدام ذاكرة تخزين مؤقت قابلة للتجميع، يتحكم هذا في كيفية قيام `generate` بتجميع `compile` مسار الأمامي للحصول على استدلال أسرع.

disable_compile (`bool`) : ما إذا كان سيتم تعطيل التجميع التلقائي لمرحلة الأمامية. يحدث التجميع التلقائي عند استيفاء معايير محددة، بما في ذلك استخدام ذاكرة تخزين مؤقت قابلة للتجميع. يرجى فتح مشكلة إذا وجدتَ حاجةً لاستخدام هذا العلم.

فئة تحتوي على إعدادات لمهمة توليد. يدعم استدعاء `generate` طرق التوليد التالية لنماذج فك ترميز النص، والنص إلى نص، والكلام إلى نص، والرؤية إلى نص:

- *فك الترميز الجشع* إذا كان `num_beams=1` و`do_sample=False`
- *العينة متعددة الحدود* إذا كان `num_beams=1` و`do_sample=True`
- *فك الترميز بالبحث الحزمي* إذا كان `num_beams>1` و`do_sample=False`
- *عينة متعددة الحدود البحث الحزمي* إذا كان `num_beams>1` و`do_sample=True`
- *التفكيك بمساعدة* إذا تم تمرير `assistant_model` أو `prompt_lookup_num_tokens` إلى `.generate()`

للاطلاع على مزيد من المعلومات حول استراتيجيات فك الترميز، يُرجى الرجوع إلى [دليل استراتيجيات توليد النص](../generation_strategies).

تتحكم مجموعة كبيرة من هذه الأعلام في القيم اللوجستية (logits) أو معايير التوقف للتوليد. تأكد من الاطلاع على [الفئات المتعلقة بالتوليد](https://huggingface.co/docs/transformers/internal/generation_utils) للحصول على وصف كامل للتعديلات الممكنة، بالإضافة إلى أمثلة على استخدامها.

ملاحظة: حقول الإعدادات التي لا تزال `None` ستتم إعادة تعيينها بواسطة `GenerationConfig._get_default_generation_params()` أثناء حلقة التوليد. إذا كنت ترغب في استخدام قيم مختلفة لهذه الحقول، فتأكد من تعيينها صراحةً في إعدادات التوليد.

#### from_pretrained[[transformers.GenerationConfig.from_pretrained]]

```python
from_pretrained(pretrained_model_name: str | os.PathLike, config_file_name: str | os.PathLike | None = None, cache_dir: str | os.PathLike | None = None, force_download: bool = False, local_files_only: bool = False, token: str | bool | None = None, revision: str = 'main', **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/configuration_utils.py#L950)

**المعاملات:**

pretrained_model_name (`str` أو `os.PathLike`) : يمكن أن يكون هذا إما: - نصًا، وهو *معرف النموذج* لإعدادات نموذج مُدرَّب مسبقًا مستضاف داخل مستودع نماذج على huggingface.co. - مسارًا إلى *مجلد* يحتوي على ملف إعدادات تم حفظه باستخدام طريقة [save_pretrained()](/docs/transformers/main/ar/main_classes/text_generation#transformers.GenerationConfig.save_pretrained)، على سبيل المثال `./my_model_directory/`.

config_file_name (`str` أو `os.PathLike`، *اختياري*، الافتراضي `"generation_config.json"`) : اسم ملف تكوين التوليد بصيغة JSON الذي سيتم تحميله من `pretrained_model_name`.

cache_dir (`str` أو `os.PathLike`، *اختياري*) : المسار إلى مجلد يجب تخزين إعدادات النموذج المُسبَق التحميل فيه مؤقتًا إذا لم يُستخدم المجلد المؤقت القياسي.

force_download (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إجبار (إعادة) تنزيل ملفات الإعداد وتجاوز النسخ المخزنة مؤقتًا في حال وجودها.

proxies (`dict[str, str]`، *اختياري*) : قاموس لخوادم الوكيل (proxy servers) للاستخدام حسب البروتوكول أو نقطة النهاية، على سبيل المثال `{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}.` تُستخدم هذه الوكلاء في كل طلب.

token (`str` أو `bool`، *اختياري*) : الرمز الذي يُستخدم كرمز تفويض HTTP bearer للملفات البعيدة. إذا كان `True`، أو لم يُحدد، فسيتم استخدام الرمز الذي تم إنشاؤه عند تشغيل `hf auth login` (المخزَّن في `~/.huggingface`).

revision (`str`، *اختياري*، القيمة الافتراضية `"main"`) : إصدار النموذج المحدد الذي سيتم استخدامه. يمكن أن يكون اسم فرع، أو اسم وسم، أو معرف التزامن، نظرًا لأننا نستخدم نظامًا قائمًا على git لتخزين النماذج والمخرجات الأخرى على huggingface.co، لذا يمكن أن يكون `revision` أي معرّف يسمح به git.    لاختبار طلب الدمج الذي أنشأته على Hub، يمكنك تمرير `revision="refs/pr/<pr_number>"`.

return_unused_kwargs (`bool`، *اختياري*، القيمة الافتراضية `False`) : إذا كانت `False`، فإن هذه الدالة تُرجع كائن الإعداد النهائي فقط. إذا كانت `True`، فإن هذه الدالة تُرجع `Tuple(config, unused_kwargs)` حيث *unused_kwargs* هو قاموس يتكوّن من أزواج المفاتيح والقيم التي لا تُعدّ مفاتيحها من سمات الإعداد: أي الجزء من `kwargs` الذي لم يُستخدم لتحديث `config` ويُتجاهل في حالته الأخرى.

subfolder (`str`، *اختياري*، القيمة الافتراضية `""`) : في حال كانت الملفات ذات الصلة موجودة داخل مجلد فرعي من مستودع النموذج على huggingface.co، يمكنك تحديد اسم المجلد هنا.

kwargs (`dict[str, Any]`، *اختياري*) : تُستخدم القيم الموجودة في kwargs لأي مفاتيح تكون من سمات الإعداد لتجاوز القيم المحمّلة. يتم التحكم في السلوك المتعلق بالأزواج المفتاح/قيمة التي مفاتيحها *ليست* من سمات الإعداد بواسطة معامل الكلمة المفتاحية `return_unused_kwargs`.

**يعيد:** [GenerationConfig](/docs/transformers/main/ar/main_classes/text_generation#transformers.GenerationConfig)

كائن الإعداد المُستخدَم من هذا النموذج المُسبق التدريب.

أنشئ كائن [GenerationConfig](/docs/transformers/main/ar/main_classes/text_generation#transformers.GenerationConfig) من ملف إعدادات التوليد.

أمثلة:

```python
>>> from transformers import GenerationConfig

>>> # Download configuration from huggingface.co and cache.
>>> generation_config = GenerationConfig.from_pretrained("openai-community/gpt2")

>>> # E.g. config was saved using *save_pretrained('./test/saved_model/')*
>>> generation_config.save_pretrained("./test/saved_model/")
>>> generation_config = GenerationConfig.from_pretrained("./test/saved_model/")

>>> # You can also specify configuration names to your generation configuration file
>>> generation_config.save_pretrained("./test/saved_model/", config_file_name="my_configuration.json")
>>> generation_config = GenerationConfig.from_pretrained("./test/saved_model/", "my_configuration.json")

>>> # If you'd like to try a minor variation to an existing configuration, you can also pass generation
>>> # arguments to `.from_pretrained()`. Be mindful that typos and unused arguments will be ignored
>>> generation_config, unused_kwargs = GenerationConfig.from_pretrained(
...     "openai-community/gpt2", top_k=1, foo=False, do_sample=True, return_unused_kwargs=True
... )
>>> generation_config.top_k
1

>>> unused_kwargs
{'foo': False}
```

#### from_model_config[[transformers.GenerationConfig.from_model_config]]

```python
from_model_config(model_config: typing.Union[ForwardRef('PreTrainedConfig'), dict])
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/configuration_utils.py#L1288)

**المعاملات:**

model_config (`PreTrainedConfig | dict`) : إعدادات النموذج التي ستُستخدم لإنشاء إعدادات التوليد.

**يعيد:** [GenerationConfig](/docs/transformers/main/ar/main_classes/text_generation#transformers.GenerationConfig)

كائن الإعداد المُستخدَم من تلك المعاملات.

يُحدِث كائن [GenerationConfig](/docs/transformers/main/ar/main_classes/text_generation#transformers.GenerationConfig) من [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig). تُعد هذه الدالة مفيدة لتحويل كائنات [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) القديمة، التي قد تحتوي على معاملات توليد، إلى [GenerationConfig](/docs/transformers/main/ar/main_classes/text_generation#transformers.GenerationConfig) مستقل.

#### save_pretrained[[transformers.GenerationConfig.save_pretrained]]

```python
save_pretrained(save_directory: str | os.PathLike, config_file_name: str | os.PathLike | None = None, push_to_hub: bool = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/configuration_utils.py#L891)

**المعاملات:**

save_directory (`str` أو `os.PathLike`) : المجلد الذي سيتم حفظ ملف الإعدادات بصيغة JSON فيه (سيتم إنشاؤه إذا لم يكن موجودًا).

config_file_name (`str` أو `os.PathLike`، *اختياري*، الافتراضي `"generation_config.json"`) : اسم ملف تكوين التوليد بصيغة JSON الذي سيتم حفظه في `save_directory`.

push_to_hub (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم دفع نموذجك إلى مستودع نماذج Hugging Face بعد حفظه. يمكنك تحديد المستودع الذي تريد الدفع إليه باستخدام `repo_id` (سيكون الافتراضي هو اسم `save_directory` ضمن نطاقك).

kwargs (`dict[str, Any]`، *اختياري*) : حُجج إضافية تُمرَّر إلى طريقة [push_to_hub()](/docs/transformers/main/ar/main_classes/model#transformers.utils.PushToHubMixin.push_to_hub).

احفظ كائن إعدادات التوليد في المجلد `save_directory` حتى يمكن إعادة تحميله باستخدام طريقة الفئة [from_pretrained()](/docs/transformers/main/ar/main_classes/text_generation#transformers.GenerationConfig.from_pretrained).

#### تحديث[[transformers.GenerationConfig.update]]

```python
update(defaults_only = False, allow_custom_entries = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/configuration_utils.py#L1338)

**المعاملات:**

defaults_only (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم تحديث جميع المفاتيح في الإعدادات باستخدام `kwargs` أم فقط تلك التي قيمتها `None` (أي القيمة الافتراضية).

allow_custom_entries (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم السماح بتحديث إدخالات مخصصة في الإعدادات باستخدام `kwargs` إذا لم تكن موجودة في الإعدادات الحالية.

kwargs (`dict[str, Any]`) : قاموس من السمات لتحديث هذا الصنف بشكل مؤقت.

**يعيد:** `dict[str, Any]`

قاموس يحتوي على جميع أزواج المفتاح والقيمة التي لم تُستخدم لتحديث الكائن.

تحديث خصائص هذه الكائن من الفئة بخصائص من `kwargs` إذا كانت مطابقة للخصائص الموجودة، مع إرجاع جميع خصائص kwargs غير المستخدمة.

#### التحقق[[transformers.GenerationConfig.validate]]

```python
validate(strict = False, user_set_attributes: set[str] | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/configuration_utils.py#L648)

**المعاملات:**

strict (bool) : إذا كانت القيمة True، فسيتم رفع استثناء لأي مشكلة يتم العثور عليها. إذا كانت False، فسيتم تسجيل المشكلات فقط.

user_set_attributes (set[str], *اختياري*) : أسماء السمات التي حددها المستدعي صراحةً. عند توفيرها، لا تُطلق تحذيرات "مشكلة طفيفة" المتعلقة بتعارضات مجموعات الأعلام (مثل ضبط أعلام خاصة بالتعينة فقط بينما `do_sample=False`) إلا إذا كان العلم المتعارض ضمن هذا المجموع — مما يتجنب التحذيرات المزعجة عندما تكون القيمة موروثة من ملف `generation_config.json` الافتراضي للنموذج. عند `None`، تُعتبر جميع السمات المضبوطة مُضبوطة من قِبل المستخدم (سلوك متوافق مع الإصدارات السابقة لاستدعاءات `validate()` المباشرة).

يتحقق من قيم سمات كائن [GenerationConfig](/docs/transformers/main/ar/main_classes/text_generation#transformers.GenerationConfig). يرمي استثناءات في حال وجود تهيئة معلمات يمكن اكتشافها على أنها غير صحيحة من كائن الإعداد وحده.

لاحظ أن بعض المعاملات التي لا يتم التحقق منها هنا يُفضَّل التحقق منها في وقت التشغيل أثناء التوليد، إذ قد تعتمد على مدخلات أخرى و/أو على النموذج، مثل المعاملات المتعلقة بطول التوليد.

#### get_generation_mode[[transformers.GenerationConfig.get_generation_mode]]

```python
get_generation_mode(assistant_model: typing.Optional[ForwardRef('PreTrainedModel')] = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/configuration_utils.py#L535)

**المعاملات:**

assistant_model (`PreTrainedModel`، *اختياري*) : نموذج المساعد الذي سيُستخدم للتوليد المُساعَد. إذا تم تعيينه، فسيكون وضع التوليد هو التوليد المُساعَد.

**يعيد:** `GenerationMode`

وضع التوليد الذي يُفعَّل بواسطة الكائن.

يعيد وضع التوليد الذي يُفعَّل بواسطة كائن [GenerationConfig](/docs/transformers/main/ar/main_classes/text_generation#transformers.GenerationConfig).

## GenerationMixin[[transformers.GenerationMixin]]

#### transformers.GenerationMixin[[transformers.GenerationMixin]]

```python
transformers.GenerationMixin()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/utils.py#L494)

فئة تحتوي على جميع الدوال الخاصة بتوليد النص التلقائي (auto-regressive)، وتُستخدم كخلطة (mixin) في فئات النماذج. يؤدي الوراثة من هذه الفئة إلى منح النموذج سلوكًا خاصًا يتعلق بالتوليد، مثل تحميل `GenerationConfig` عند وقت التهيئة، أو التأكد من تنفيذ الاختبارات المتعلقة بـ`generate` في بيئة `transformers` CI.

يجب أن ترث فئة النموذج من `GenerationMixin` لتفعيل استدعاء طرق مثل `generate`، أو عندما تكون قد عرّفت طريقة `generate` مخصصة تعتمد على `GenerationMixin` بشكل مباشر أو غير مباشر، والتي تشترك تقريبًا في نفس الواجهة مع طرق عامة مثل `generate`. ثلاثة أمثلة:
- يجب أن يرث `LlamaForCausalLM` من `GenerationMixin` لتفعيل استدعاء `generate` وغيرها من الطرق العامة في المخلوطة (mixin)؛
- يتميز `BlipForQuestionAnswering` بطريقة `generate` مخصصة تشترك تقريبًا في نفس الواجهة مع `GenerationMixin.generate` (فإنها تحتوي على بعض الحُجج الإضافية، وتُنتج نفس المخرجات). كما تستدعي تلك الدالة `GenerationMixin.generate` بشكل غير مباشر، من خلال نموذج داخلي. وعليه، ينبغي أن يرث `BlipForQuestionAnswering` من `GenerationMixin` ليستفيد من جميع أتمتة المهام المتعلقة بالتوليد في قاعدة أكوادنا؛
- يتميز `BarkModel` بطريقة `generate` مخصصة، ويستدعي أحد نماذجه الداخلية `GenerationMixin.generate`. ومع ذلك، لا تشارك طريقة `generate` الخاصة به نفس الواجهة التي تشاركها `GenerationMixin.generate`. في هذه الحالة، يجب ألا يرث `BarkModel` من `GenerationMixin`، لأن ذلك يكسر واجهة `generate`.

تُعرّض الفئة [generate()](/docs/transformers/main/ar/main_classes/text_generation#transformers.GenerationMixin.generate)، والتي يمكن استخدامها لـ:
- *فك الترميز الجشع* إذا كان `num_beams=1` و`do_sample=False`
- *العينة متعددة الحدود* إذا كان `num_beams=1` و`do_sample=True`
- *فك الترميز بالبحث الحزمي* إذا كان `num_beams>1` و`do_sample=False`
- *عينة متعددة الحدود البحث الحزمي* إذا كان `num_beams>1` و`do_sample=True`
- *التفكيك بمساعدة* إذا تم تمرير `assistant_model` أو `prompt_lookup_num_tokens` إلى `.generate()`

للاطلاع على مزيد من المعلومات حول استراتيجيات فك الترميز، يُرجى الرجوع إلى [دليل استراتيجيات توليد النص](../generation_strategies).

#### generate[[transformers.GenerationMixin.generate]]

```python
generate(inputs: typing.Optional[torch.Tensor] = None, generation_config: transformers.generation.configuration_utils.GenerationConfig | None = None, logits_processor: transformers.generation.logits_process.LogitsProcessorList | None = None, stopping_criteria: transformers.generation.stopping_criteria.StoppingCriteriaList | None = None, prefix_allowed_tokens_fn: collections.abc.Callable[[int, torch.Tensor], list[int]] | None = None, synced_gpus: bool | None = None, assistant_model: typing.Optional[ForwardRef('PreTrainedModel')] = None, streamer: typing.Optional[ForwardRef('BaseStreamer')] = None, negative_prompt_ids: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, custom_generate: str | collections.abc.Callable | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/utils.py#L2573)

**المعاملات:**

inputs (`torch.Tensor` ذو شكل متغير حسب النمط، *اختياري*) : التسلسل المستخدم كموجّه للتوليد أو كمدخلات للنموذج إلى المُشفِّر. إذا كانت `None`، يهيّئ该方法 `bos_token_id` وحجم دفعة يساوي 1. بالنسبة لنماذج المُفكِّك فقط، يجب أن تكون `inputs` بصيغة `input_ids`. أما بالنسبة لنماذج المُشفِّر-المُفكِّك، فيمكن أن تمثل *inputs* أيّاً من `input_ids` أو `input_values` أو `input_features` أو `pixel_values`.

generation_config ([GenerationConfig](/docs/transformers/main/ar/main_classes/text_generation#transformers.GenerationConfig)، *اختياري*) : إعدادات التوليد التي سيتم استخدامها كإعدادات أساسية لاستدعاء التوليد. أي `**kwargs` تُمرَّر إلى generate وتطابق سمات `generation_config` ستُلغي قيمها. إذا لم يتم تقديم `generation_config`، فسيتم استخدام الإعداد الافتراضي، الذي له أولوية تحميل كالتالي: 1) من ملف النموذج `generation_config.json`، إذا كان موجودًا؛ 2) من إعدادات النموذج. يُرجى ملاحظة أن المعاملات غير المحددة ستورث القيم الافتراضية لـ [GenerationConfig](/docs/transformers/main/ar/main_classes/text_generation#transformers.GenerationConfig)، والتي يجب الرجوع إلى توثيقها لضبط توليد المعاملات.

logits_processor (`LogitsProcessorList`، *اختياري*) : معالجات logits مخصصة تكمل معالجات logits الافتراضية المبنية من الحُجج وإعدادات التوليد. إذا تم تمرير معالج logits تم إنشاؤه مسبقًا باستخدام الحُجج أو إعدادات التوليد، فسيتم طرح خطأ. هذه الميزة مخصصة للمستخدمين المتقدمين.

stopping_criteria (`StoppingCriteriaList`، *اختياري*) : معايير إيقاف مخصصة تكمل معايير الإيقاف الافتراضية المبنية من الحجج وإعدادات التوليد. إذا تم تمرير معيار إيقاف تم إنشاؤه مسبقًا باستخدام الحجج أو إعدادات التوليد، فسيتم طرح خطأ. إذا كان معيار الإيقاف الخاص بك يعتمد على مدخل `scores`، فتأكد من تمرير `return_dict_in_generate=True, output_scores=True` إلى `generate`. هذه الميزة مخصصة للمستخدمين المتقدمين.

prefix_allowed_tokens_fn (`Callable[[int, torch.Tensor], list[int]]`، *اختياري*) : إذا تم توفيره، فإن هذه الدالة تُقيّد بحث الحزمة (beam search) على الرموز المسموح بها فقط في كل خطوة. وإذا لم يُوفَّر، فلا يُطبَّق أي قيد. تتلقى هذه الدالة حجتين: معطّف الدفعة `batch_id` و`input_ids`. ويجب أن تُرجع قائمة بالرموز المسموح بها لخطوة التوليد التالية، مشروطةً بمعطّف الدفعة `batch_id` والرموز المولَّدة سابقًا `inputs_ids`. يُعدّ هذا الحُجّة مفيدًا للتوليد المقيد المشروط على البادئة، كما هو موصوف في [Autoregressive Entity Retrieval](https://huggingface.co/papers/2010.00904).

synced_gpus (`bool`، *اختياري*) : ما إذا كان يجب مواصلة تشغيل حلقة while حتى max_length. ما لم يتم تجاوز ذلك، سيُضبط هذا العلم على `True` عند استخدام `FullyShardedDataParallel` أو DeepSpeed ZeRO Stage 3 مع عدة وحدات معالجة رسومية (GPU) لتجنب حدوث تعطل (deadlock) إذا انتهت وحدة معالجة رسومية من التوليد قبل وحدات أخرى. وإلا، يكون الافتراضي `False`.

assistant_model (`PreTrainedModel`، *اختياري*) : نموذج مساعد يمكن استخدامه لتسريع عملية التوليد. يجب أن يكون لدى النموذج المساعد مُجزِّئ (tokenizer) مطابق تمامًا. يتحقق التسريع عندما يكون التنبؤ بالرموز المرشحة باستخدام النموذج المساعد أسرع بكثير من تشغيل عملية التوليد بالنموذج الذي تستدعي منه generate. وعليه، يجب أن يكون النموذج المساعد أصغر بكثير.

streamer (`BaseStreamer`، *اختياري*) : كائن Streamer الذي سيُستخدم لبثّ التسلسلات المولّدة. تُمرَّر الرموز المولّدة عبر `streamer.put(token_ids)`، ويتحمّل مُبثّ البيانات مسؤولية أي معالجة إضافية.

negative_prompt_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : النص التوضيحي السلبي المطلوب لبعض المعالجات مثل CFG. يجب أن يتطابق حجم الدفعة مع حجم دفعة الإدخال. هذه ميزة تجريبية، وقد تخضع لتغييرات كاسرة في واجهة برمجة التطبيقات في الإصدارات المستقبلية.

negative_prompt_attention_mask (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : Attention_mask الخاص بـ `negative_prompt_ids`.

custom_generate (`str` أو `Callable`، *اختياري*) : أحد الخيارات التالية: - `str` (اسم مستودع في Hugging Face Hub): يشغّل دالة `generate` المخصصة المعرّفة في `custom_generate/generate.py` داخل ذلك المستودع بدلاً من طريقة `generate` القياسية. يستبدل المستودع منطق التوليد بالكامل، وقد يختلف نوع الإرجاع. - `str` (مسار مستودع محلي): نفس ما سبق لكن من مسار محلي. تتطلب المجلدات المحلية أيضاً `trust_remote_code=True` لأن `custom_generate/generate.py` المحلي يُنفَّذ. - `Callable`: ستقوم `generate` بتنفيذ خطوات تجهيز المدخلات المعتادة، ثم تستدعي الدالة القابلة للاستدعاء المُقدَّمة لتشغيل حلقة فك الترميز. لمزيد من المعلومات، راجع [التوثيق](../../generation_strategies#custom-generation-methods).

kwargs (`dict[str, Any]`، *اختياري*) : تخصيص مؤقت لـ `generation_config` و/أو معاملات إضافية خاصة بالنموذج (kwargs) سيتم تمريرها إلى دالة `forward` في النموذج. إذا كان النموذج من نوع المُشفِّر-المُفكِّك (encoder-decoder)، فيجب ألا تُضاف بادئة للمعاملات الخاصة بالمُشفِّر، بينما يجب أن تُضاف بادئة *decoder_* للمعاملات الخاصة بالمُفكِّك.

**يعيد:** [ModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.utils.ModelOutput) أو `torch.LongTensor`

[ModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.utils.ModelOutput) (إذا كان `return_dict_in_generate=True` أو عندما يكون `config.return_dict_in_generate=True`) أو `torch.LongTensor`.

إذا لم يكن النموذج *نموذجاً* من نوع المُشفِّر-المُفكِّك (`model.config.is_encoder_decoder=False`)، فإن أنواع [ModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.utils.ModelOutput) الممكنة هي:

- [GenerateDecoderOnlyOutput](/docs/transformers/main/ar/internal/generation_utils#transformers.generation.GenerateDecoderOnlyOutput)،
- [GenerateBeamDecoderOnlyOutput](/docs/transformers/main/ar/internal/generation_utils#transformers.generation.GenerateBeamDecoderOnlyOutput)

إذا كان النموذج من نوع مُشفِّر-مُفكِّك (`model.config.is_encoder_decoder=True`)، فإن أنواع [ModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.utils.ModelOutput) الممكنة هي:

- [GenerateEncoderDecoderOutput](/docs/transformers/main/ar/internal/generation_utils#transformers.generation.GenerateEncoderDecoderOutput)،
- [GenerateBeamEncoderDecoderOutput](/docs/transformers/main/ar/internal/generation_utils#transformers.generation.GenerateBeamEncoderDecoderOutput)

يولّد تسلسلات من معرّفات الرموز (token ids) للنماذج التي تحتوي على رأس لنمذجة اللغة.

تُضبط معظم المعلمات التي تتحكم في التوليد في `generation_config`، والتي إذا لم تُمرَّر، فسيتم ضبطها على إعدادات التوليد الافتراضية للنموذج. يمكنك تجاوز أي `generation_config` عن طريق تمرير المعلمات المقابلة إلى generate()، على سبيل المثال `.generate(inputs, num_beams=4, do_sample=True)`.

لمراجعة عامة لاستراتيجيات التوليد وأمثلة الأكواد، راجع [الدليل التالي](../generation_strategies).

#### compute_transition_scores[[transformers.GenerationMixin.compute_transition_scores]]

```python
compute_transition_scores(sequences: Tensor, scores: tuple, beam_indices: typing.Optional[torch.Tensor] = None, normalize_logits: bool = False)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/utils.py#L1726)

**المعاملات:**

sequences (`torch.LongTensor`) : التسلسلات المولّدة. يكون البُعد الثاني (sequence_length) مساوياً لـ`max_length` أو أقصر منه إذا انتهت جميع الدفعات مبكراً بسبب `eos_token_id`.

scores (`tuple(torch.Tensor)`) : درجات الانتقال لكل رمز في قاموس الكلمات في كل خطوة من خطوات التوليد. درجات انتقال الحزمة المكوّنة من احتمالات السجل للرموز المشروطة على لوج سوفت ماكس للرموز المولّدة سابقًا في هذه الحزمة. مجموعة مرتبة من `torch.Tensor` تحتوي على ما يصل إلى `max_new_tokens` عنصرًا (عنصر واحد لكل رمز مولّد)، حيث يكون شكل كل متجه `(batch_size*num_beams, config.vocab_size)`.

beam_indices (`torch.LongTensor`، *اختياري*) : فهارس الحزم لمعرّف الرمز المولَّد في كل خطوة من خطوات التوليد. `torch.LongTensor` من الشكل `(batch_size*num_return_sequences, sequence_length)`. مطلوب فقط إذا كان `num_beams>1` أثناء التوليد.

normalize_logits (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب تطبيع القيم اللوجستية (logits) (والتي قد تكون غير مطبّعة لأسباب تتعلق بالتوافق مع الإصدارات القديمة).

**يعيد:** `torch.Tensor`

A `torch.Tensor` of shape `(batch_size*num_return_sequences, sequence_length)` containing the transition scores (logits)

يُحسب درجات الانتقال للترتيبات المعطاة درجات التوليد (ومؤشرات الحزمة إذا كان البحث بالحزمة مستخدماً). هذه طريقة مريحة للحصول بسرعة على درجات الرموز المختارة أثناء التوليد.

أمثلة:

```python
>>> from transformers import GPT2Tokenizer, AutoModelForCausalLM
>>> import numpy as np

>>> tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
>>> model = AutoModelForCausalLM.from_pretrained("openai-community/gpt2")
>>> tokenizer.pad_token_id = tokenizer.eos_token_id
>>> inputs = tokenizer(["Today is"], return_tensors="pt")

>>> # Example 1: Print the scores for each token generated with Greedy Search
>>> outputs = model.generate(**inputs, max_new_tokens=5, return_dict_in_generate=True, output_scores=True)
>>> transition_scores = model.compute_transition_scores(
...     outputs.sequences, outputs.scores, normalize_logits=True
... )
>>> # input_length is the length of the input prompt for decoder-only models, like the GPT family, and 1 for
>>> # encoder-decoder models, like BART or T5.
>>> input_length = 1 if model.config.is_encoder_decoder else inputs.input_ids.shape[1]
>>> generated_tokens = outputs.sequences[:, input_length:]
>>> for tok, score in zip(generated_tokens[0], transition_scores[0]):
...     # | token | token string | log probability | probability
...     print(f"| {tok:5d} | {tokenizer.decode(tok):8s} | {score.numpy():.3f} | {np.exp(score.numpy()):.2%}")
|   262 |  the     | -1.414 | 24.33%
|  1110 |  day     | -2.609 | 7.36%
|   618 |  when    | -2.010 | 13.40%
|   356 |  we      | -1.859 | 15.58%
|   460 |  can     | -2.508 | 8.14%

>>> # Example 2: Reconstruct the sequence scores from Beam Search
>>> outputs = model.generate(
...     **inputs,
...     max_new_tokens=5,
...     num_beams=4,
...     num_return_sequences=4,
...     return_dict_in_generate=True,
...     output_scores=True,
... )
>>> transition_scores = model.compute_transition_scores(
...     outputs.sequences, outputs.scores, outputs.beam_indices, normalize_logits=False
... )
>>> # If you sum the generated tokens' scores and apply the length penalty, you'll get the sequence scores.
>>> # Tip 1: recomputing the scores is only guaranteed to match with `normalize_logits=False`. Depending on the
>>> # use case, you might want to recompute it with `normalize_logits=True`.
>>> # Tip 2: the output length does NOT include the input length
>>> output_length = np.sum(transition_scores.numpy() < 0, axis=1)
>>> length_penalty = model.generation_config.length_penalty
>>> reconstructed_scores = transition_scores.sum(axis=1) / (output_length**length_penalty)
>>> print(np.allclose(outputs.sequences_scores, reconstructed_scores))
True
```

## ContinuousMixin[[transformers.ContinuousMixin]]

#### transformers.ContinuousMixin[[transformers.ContinuousMixin]]

```python
transformers.ContinuousMixin()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L1249)

فئة مزيج (Mixin) للنماذج لإضافة قدرات الدفع المستمر (Continuous Batching). يحتوي الدفع المستمر على ثلاث نقاط دخول:
- `init_continuous_batching`، وهو نقطة الدخول الفعلية للتجميع المستمر
- `continuous_batching_context_manager`، وهو نفسه غلاف حول `init_continuous_batching`
- `generate_batch`، وهو في الواقع غلاف حول `continuous_batching_context_manager`

يُعرَّفون بهذا الترتيب. يجب أن يُعكس أي تغيير يُجرى على أيٍّ من نقاط الدخول الثلاث في النقطتين الأخريين.

#### continuous_batching_context_manager[[transformers.ContinuousMixin.continuous_batching_context_manager]]

```python
continuous_batching_context_manager(generation_config: transformers.generation.configuration_utils.GenerationConfig | None = None, block: bool = True, timeout: float | None = None, continuous_batching_config: transformers.generation.configuration_utils.ContinuousBatchingConfig | None = None, persistent_manager: bool = False, warmup: bool = True, workload_hints: transformers.generation.continuous_batching.utils.WorkloadHints | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L1328)

مدير سياق لاستخدام مدير الدفع المستمر بأمان. تتشابه الحجج مع تلك الخاصة بـ `init_continuous_batching` باستثناء:
- block: ما إذا كان يجب منع الخيط (thread) عند إيقاف المدير. القيمة الافتراضية هي True.
- timeout: الحد الأقصى للوقت الذي يجب انتظاره حتى يتوقف الخيط. القيمة الافتراضية هي None (بدون مهلة زمنية).
- warmup: ما إذا كان يجب التقاط رسوميات CUDA مسبقاً عند أكبر الأحجام قبل التشغيل. القيمة الافتراضية هي True.

#### destroy_cached_continuous_batching_manager[[transformers.ContinuousMixin.destroy_cached_continuous_batching_manager]]

```python
destroy_cached_continuous_batching_manager()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L1321)

تدمير مدير الدفع المستمر المخزّن مؤقتاً وتحرير موارد وحدة معالجة الرسوميات.

#### generate_batch[[transformers.ContinuousMixin.generate_batch]]

```python
generate_batch(inputs: list, generation_config: transformers.generation.configuration_utils.GenerationConfig | None = None, continuous_batching_config: transformers.generation.configuration_utils.ContinuousBatchingConfig | None = None, record_timestamps: bool = False, progress_bar: bool = False, persistent_manager: bool = False, warmup: bool = True, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L1368)

**المعاملات:**

inputs : قائمة تسلسلات الرموز المدخلة (الموجّهات)

generation_config : تكوين التوليد الاختياري

continuous_batching_config : تكوين الدفعات المستمرة الاختياري

record_timestamps : إذا تم ضبطه على true، فستحتوي الطلبات على طابع زمني لكل رمز يتم توليده

progress_bar : إذا تم ضبطه على true، فسيتم عرض شريط تقدّم

persistent_manager : ما إذا كان يجب الإبقاء على المُدير بعد اكتمال التوليد. القيمة الافتراضية هي False.

warmup : ما إذا كان يجب التقاط رسوميات CUDA مسبقًا قبل معالجة الطلبات. القيمة الافتراضية هي True.

**يعيد:** `dict[str, GenerationOutput]`

قاموس من معرّفات الطلبات إلى كائنات GenerationOutput

أنشئ تسلسلات لدفعة من الأوامر باستخدام الدفع المستمر.

#### init_continuous_batching[[transformers.ContinuousMixin.init_continuous_batching]]

```python
init_continuous_batching(generation_config: transformers.generation.configuration_utils.GenerationConfig | None = None, continuous_batching_config: transformers.generation.configuration_utils.ContinuousBatchingConfig | None = None, workload_hints: transformers.generation.continuous_batching.utils.WorkloadHints | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L1261)

**المعاملات:**

generation_config : تكوين توليد اختياري، قد يحتوي على كائن CompileConfig

continuous_batching_config : تكوين اختياري للدفعة المستمرة

workload_hints : WorkloadHints اختيارية لمساعدة مدير الدفع المستمر على اتخاذ قرارات أفضل للقيم الافتراضية

**يعيد:** `ContinuousBatchingManager`

مثيل المدير لإضافة الطلبات واسترجاع النتائج.

قم بتهيئة مدير للاستدلال مع الدفع المستمر.

## ContinuousBatchingManager[[transformers.ContinuousBatchingManager]]

#### transformers.ContinuousBatchingManager[[transformers.ContinuousBatchingManager]]

```python
transformers.ContinuousBatchingManager(model: ProtoPretrainedModel, generation_config: GenerationConfig, continuous_batching_config: ContinuousBatchingConfig, workload_hints: transformers.generation.continuous_batching.utils.WorkloadHints | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L658)

مديرٌ للتعامل مع الدفع المستمر لطلبات التوليد. يوفر واجهة مستخدم لتقديم طلبات التوليد، واستخراج النتائج، وإدارة خيط التوليد في الخلفية. يجب ألا يتم إنشاء هذا الصنف مباشرةً، بل عبر أحد نقاط الدخول التالية (جميعها طرق من مزيج `ContinuousMixin`):
- `init_continuous_batching`
- `continuous_batching_context_manager`
- `generate_batch`

#### add_request[[transformers.ContinuousBatchingManager.add_request]]

```python
add_request(input_ids: list, request_id: str | None = None, max_new_tokens: int | None = None, streaming: bool = False, record_timestamps: bool = False, eos_token_id: int | list[int] | None = None, **logit_processor_kwargs: Any)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L914)

**المعاملات:**

input_ids : معرّفات الرموز المدخلة لاستخدامها كموجّه

request_id : معرّف طلب مخصص اختياري (يتم توليده تلقائيًا إذا كان فارغًا)

max_new_tokens : الحد الأقصى لعدد الرموز الجديدة التي سيتم توليدها

streaming : ما إذا كان سيتم بث الرموز أثناء توليدها

record_timestamps : ما إذا كان سيتم تسجيل طوابع زمنية لكل رمز مُولَّد

eos_token_id : معرف رمز نهاية التسلسل

logit_processor_kwargs : حُجج الكلمات المفتاحية لمعالج القيم الاحتمالية (logits).

**يعيد:** `str | None`

معرّف الطلب إذا كان العملية سائق TP، وإلا فهي None.

أضف طلب توليد جديدًا إلى قائمة الانتظار. إذا لم يكن العملية سائق TP، فإن هذا إجراء لا شيء.

#### add_requests[[transformers.ContinuousBatchingManager.add_requests]]

```python
add_requests(inputs: list, max_new_tokens: int | None = None, streaming: bool = False, record_timestamps: bool = False, **logit_processor_kwargs: Any)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L972)

دالة مساعدة لتجميع `add_request` وإرجاع معرّفاتها. راجع توثيقها لمزيد من التفاصيل.

#### cancel_request[[transformers.ContinuousBatchingManager.cancel_request]]

```python
cancel_request(request_id: str)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L1007)

إلغاء طلب معرّفه ID. إذا تم استدعاء هذه العملية من عملية ليست سائق TP، فإنها لا تؤدي أي إجراء: فعمليات سائق TP فقط هي التي تتفاعل مع المدير.

#### إتلاف[[transformers.ContinuousBatchingManager.destroy]]

```python
destroy()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L887)

أنهِ المُدير وأطلق الموارد الموزّعة. يُعدّ استدعاء هذه الدالة عدة مرات آمناً. بعد استدعائها، لا يمكن إعادة تشغيل المُدير.

#### get_result[[transformers.ContinuousBatchingManager.get_result]]

```python
get_result(request_id: str | None = None, timeout: float | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L1016)

استرجاع نتيجة واحدة من طابور المخرجات. إذا تم تقديم معرّف، تُرجع أول طلب مطابق. إذا تم تقديم مهلة زمنية، تُرجع None بعد انتهاء المهلة (بالثواني).

#### is_running[[transformers.ContinuousBatchingManager.is_running]]

```python
is_running()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L801)

يعيد True إذا كان خيط توليد الخلفية قد بدأ وما زال نشطًا.

#### انضم[[transformers.ContinuousBatchingManager.join]]

```python
join(stop_trigger_time: float, timeout: float | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L872)

انتظر حتى ينتهي الخيط في الخلفية. يمكن تحديد حد أقصى لـ Wait باستخدام معامل timeout (بالثواني).

#### إيقاف مؤقت[[transformers.ContinuousBatchingManager.pause]]

```python
pause()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L894)

مدير سياق يوقف حلقة التوليد، مما يتيح للخييط المستدعي استخدام النموذج، وعادةً لتحديثه في مكانه. لا يدخل الخيط هذا السياق إلا بعد توقف الحلقة، وتُستأنف الحلقة عند الخروج منه مع الحفاظ على ذاكرته المؤقتة وطلباته الجارية: لا يتم تصريف أي شيء ولا تُفقد أي طلب. قد يحتفظ عدة خيوط بحالة الإيقاف في الوقت نفسه، وتُستأنف الحلقة بمجرد خروج آخر خيط. إذا كان TP مفعلاً، فيجب على جميع الرتب الدخول إلى هذا السياق، وإلا ستعلق الرتب الأخرى إلى الأبد.

#### register_result_handler[[transformers.ContinuousBatchingManager.register_result_handler]]

```python
register_result_handler(request_id: str, callback: Callable)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L1053)

**المعاملات:**

request_id (*str*) : معرّف الطلب الذي ستُستلم المخرجات الخاصة به.

callback (*callable*) : تُستدعى مع `GenerationOutput` لكل نتيجة.

سجّل مستدعٍ (callback) لتسليم النتائج (بثّ متواصل أو غير متواصل).

يتم استدعاء مستدعٍ (callback) عبر حلقة الأحداث (event loop) عبر `call_soon_threadsafe` في كل مرة يُنتج فيها نتيجة لهذا الطلب. وفي حالة الطلبات التدفّقية (streaming)، يحدث ذلك عند كل رمز (token)؛ أما في الطلبات غير التدفّقية، فيحدث فقط عند الاكتمال. كما يتم تنظيف المعالج (handler) تلقائياً عند انتهاء الطلب.

#### request_id_iter[[transformers.ContinuousBatchingManager.request_id_iter]]

```python
request_id_iter(request_id: str)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L1040)

التكرار على النتائج المطابقة لـ request id معيّن (حجب).

يستخدم طابور المخرجات المشترك مع إعادة الطابور. لخدمة عالية التوازي، استخدم `register_result_handler` بدلاً من ذلك.

#### ابدأ[[transformers.ContinuousBatchingManager.start]]

```python
start()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L805)

ابدأ خيط توليد الخلفية.

#### stop[[transformers.ContinuousBatchingManager.stop]]

```python
stop(block: bool = True, timeout: float | None = None, keep_for_next_session: bool = False, hard_stop: bool = False)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L814)

توقف خيط التوليد في الخلفية. إذا تم تعيين علم `block` إلى True، فإن هذه الطريقة تنتظر توقف الخيط لمدة قصوى تبلغ `timeout` ثانية (حيث يعني None عدم وجود مهلة زمنية). إذا تم تعيين علم `keep_for_next_session` إلى True، يتم تخزين المدير مؤقتًا على النموذج للاستخدام في المستقبل. إذا تم تعيين علم `hard_stop`، فسيتم إيقاف خيط التوليد في الخلفية فورًا وستفشل الطلبات المعلقة.

#### switch_to_cb_friendly_attn[[transformers.ContinuousBatchingManager.switch_to_cb_friendly_attn]]

```python
switch_to_cb_friendly_attn(model: ProtoPretrainedModel, auto_switch_to_flash: bool = True)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L745)

بدّل تنفيذ attn إلى تنفيذ متوافق مع CB. إذا كان auto_switch_to_flash بقيمة True، وكان تنفيذ attn هو SDPA أو eager، فبدّل أيضاً إلى flash إذا كان مدعوماً ومتوفراً.

#### الاحماء[[transformers.ContinuousBatchingManager.warmup]]

```python
warmup()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L791)

التقاط مسارات CUDA graphs مسبقًا لمسارات varlen و decode من خلال تشغيل دفعات وهمية. يقوم بتهيئة معالج الدفعة إذا لم يتم ذلك بعد.

## المجدول[[transformers.generation.Scheduler]]

#### transformers.generation.Scheduler[[transformers.generation.Scheduler]]

```python
transformers.generation.Scheduler(cache: PagedAttentionCache, safety_margin: float, max_requests_per_batch: int)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/scheduler.py#L23)

فئة أساسية مجردة لجدولة الطلبات في معالج الدفعات المستمر. تُدير جدّولات الطلبات دورة حياة الطلبات منذ إضافتها إلى قائمة الانتظار وحتى جدولتها للمعالجة. تنفّذ الجدّولات المختلفة استراتيجيات مختلفة لأولوية الطلبات وتجميعها في دفعات.

#### add_waiting_request[[transformers.generation.Scheduler.add_waiting_request]]

```python
add_waiting_request(state: RequestState)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/scheduler.py#L58)

يضيف طلباً إلى قائمة الانتظار.

#### clear_cancelled_requests[[transformers.generation.Scheduler.clear_cancelled_requests]]

```python
clear_cancelled_requests()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/scheduler.py#L96)

إزالة جميع الطلبات الملغاة من طوابير النشطة والانتظار.

#### finish_request[[transformers.generation.Scheduler.finish_request]]

```python
finish_request(request_id: str)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/scheduler.py#L78)

يُكمل معالجة الطلب ويُحرر كتل ذاكرة التخزين المؤقت المُخصصة له. يُستدعى هذا الأسلوب عندما ينتهي الطلب من التوليد أو عندما يواجه خطأً.

#### get_active_request_static_outputs[[transformers.generation.Scheduler.get_active_request_static_outputs]]

```python
get_active_request_static_outputs(request_id: str)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/scheduler.py#L85)

يحصل على الرموز المولّدة لطلب نشط.

#### has_pending_requests[[transformers.generation.Scheduler.has_pending_requests]]

```python
has_pending_requests()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/scheduler.py#L74)

يتحقق مما إذا كانت هناك طلبات جاهزة للمعالجة.

#### request_is_cancelled[[transformers.generation.Scheduler.request_is_cancelled]]

```python
request_is_cancelled(request_id: str)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/scheduler.py#L113)

يتحقق مما إذا كان الطلب قد أُلغي أو حُذف.

#### إعادة تعيين[[transformers.generation.Scheduler.reset]]

```python
reset()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/scheduler.py#L47)

إعادة تعيين حالة المجدول (scheduler) لحلقة توليد جديدة.

#### schedule_batch[[transformers.generation.Scheduler.schedule_batch]]

```python
schedule_batch(token_budget: int, cache_budget: int)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/scheduler.py#L63)

يُجدول الطلبات للدفعة التالية بناءً على ميزانيات الرموز والذاكرة المؤقتة المتاحة. تختار هذه الطريقة الطلبات التي يجب معالجتها في الدفعة الحالية، مع مراعاة الميزانيات وقواعد أولوية الجدولة. حيث أن token_budget هو الحد الأقصى لعدد الرموز التي يمكن معالجتها في دفعة واحدة، وcache_budget هو الحد الأقصى لعدد إدخالات ذاكرة KV التي يمكن قراءتها في دفعة واحدة. تُرجع قائمة الطلبات المجدولة بصيغة "FutureRequestState"، وقيمة منطقية تشير إلى ما إذا كان يمكن استخدام مسار فك الترميز السريع، والعدد الإجمالي لرموز الاستعلام، والحد الأقصى لعدد رموز kv التي تم قراءتها.

#### set_request_cancellation[[transformers.generation.Scheduler.set_request_cancellation]]

```python
set_request_cancellation(request_id: str)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/scheduler.py#L91)

يشير إلى طلب للإلغاء.

## FIFOScheduler[[transformers.generation.FIFOScheduler]]

#### transformers.generation.FIFOScheduler[[transformers.generation.FIFOScheduler]]

```python
transformers.generation.FIFOScheduler(cache: PagedAttentionCache, safety_margin: float | None, max_requests_per_batch: int)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/scheduler.py#L308)

يعالج هذا المجدول الطلبات بالترتيب الذي تصل به، مما يعني أن طلبات فك الترميز لها الأولوية على طلبات التمهيد.

## PrefillFirstScheduler[[transformers.generation.PrefillFirstScheduler]]

#### transformers.generation.PrefillFirstScheduler[[transformers.generation.PrefillFirstScheduler]]

```python
transformers.generation.PrefillFirstScheduler(cache: PagedAttentionCache, safety_margin: float | None, max_requests_per_batch: int)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/scheduler.py#L357)

مجدول يعطي الأولوية لطلبات التمهيد المقسّم على طلبات فك الترميز. يضمن هذا الجدول إكمال طلبات التمهيد المقسّم (وهي استمرارية للموجزات التي تم معالجتها جزئياً) قبل معالجة طلبات فك الترميز الجديدة.

